| /* |
| * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| package com.sun.tools.javac.api; |
| |
| import java.util.Locale; |
| import java.util.Set; |
| import javax.tools.Diagnostic; |
| import com.sun.tools.javac.api.DiagnosticFormatter.*; |
| |
| /** |
| * Provides simple functionalities for javac diagnostic formatting. |
| * @param <D> type of diagnostic handled by this formatter |
| * |
| * <p><b>This is NOT part of any supported API. |
| * If you write code that depends on this, you do so at your own risk. |
| * This code and its internal interfaces are subject to change or |
| * deletion without notice.</b> |
| */ |
| public interface DiagnosticFormatter<D extends Diagnostic<?>> { |
| |
| /** |
| * Whether the source code output for this diagnostic is to be displayed. |
| * |
| * @param diag diagnostic to be formatted |
| * @return true if the source line this diagnostic refers to is to be displayed |
| */ |
| boolean displaySource(D diag); |
| |
| /** |
| * Format the contents of a diagnostics. |
| * |
| * @param diag the diagnostic to be formatted |
| * @param l locale object to be used for i18n |
| * @return a string representing the diagnostic |
| */ |
| public String format(D diag, Locale l); |
| |
| /** |
| * Controls the way in which a diagnostic message is displayed. |
| * |
| * @param diag diagnostic to be formatted |
| * @param l locale object to be used for i18n |
| * @return string representation of the diagnostic message |
| */ |
| public String formatMessage(D diag,Locale l); |
| |
| /** |
| * Controls the way in which a diagnostic kind is displayed. |
| * |
| * @param diag diagnostic to be formatted |
| * @param l locale object to be used for i18n |
| * @return string representation of the diagnostic prefix |
| */ |
| public String formatKind(D diag, Locale l); |
| |
| /** |
| * Controls the way in which a diagnostic source is displayed. |
| * |
| * @param diag diagnostic to be formatted |
| * @param l locale object to be used for i18n |
| * @param fullname whether the source fullname should be printed |
| * @return string representation of the diagnostic source |
| */ |
| public String formatSource(D diag, boolean fullname, Locale l); |
| |
| /** |
| * Controls the way in which a diagnostic position is displayed. |
| * |
| * @param diag diagnostic to be formatted |
| * @param pk enum constant representing the position kind |
| * @param l locale object to be used for i18n |
| * @return string representation of the diagnostic position |
| */ |
| public String formatPosition(D diag, PositionKind pk, Locale l); |
| //where |
| /** |
| * This enum defines a set of constants for all the kinds of position |
| * that a diagnostic can be asked for. All positions are intended to be |
| * relative to a given diagnostic source. |
| */ |
| public enum PositionKind { |
| /** |
| * Start position |
| */ |
| START, |
| /** |
| * End position |
| */ |
| END, |
| /** |
| * Line number |
| */ |
| LINE, |
| /** |
| * Column number |
| */ |
| COLUMN, |
| /** |
| * Offset position |
| */ |
| OFFSET |
| } |
| |
| /** |
| * Get a list of all the enabled verbosity options. |
| * @return verbosity options |
| */ |
| public Configuration getConfiguration(); |
| //where |
| |
| /** |
| * This interface provides functionalities for tuning the output of a |
| * diagnostic formatter in multiple ways. |
| */ |
| interface Configuration { |
| /** |
| * Configure the set of diagnostic parts that should be displayed |
| * by the formatter. |
| * @param visibleParts the parts to be set |
| */ |
| public void setVisible(Set<DiagnosticPart> visibleParts); |
| |
| /** |
| * Retrieve the set of diagnostic parts that should be displayed |
| * by the formatter. |
| * @return verbosity options |
| */ |
| public Set<DiagnosticPart> getVisible(); |
| |
| //where |
| /** |
| * A given diagnostic message can be divided into sub-parts each of which |
| * might/might not be displayed by the formatter, according to the |
| * current configuration settings. |
| */ |
| public enum DiagnosticPart { |
| /** |
| * Short description of the diagnostic - usually one line long. |
| */ |
| SUMMARY, |
| /** |
| * Longer description that provides additional details w.r.t. the ones |
| * in the diagnostic's description. |
| */ |
| DETAILS, |
| /** |
| * Source line the diagnostic refers to (if applicable). |
| */ |
| SOURCE, |
| /** |
| * Subdiagnostics attached to a given multiline diagnostic. |
| */ |
| SUBDIAGNOSTICS, |
| /** |
| * JLS paragraph this diagnostic might refer to (if applicable). |
| */ |
| JLS |
| } |
| |
| /** |
| * Set a limit for multiline diagnostics. |
| * Note: Setting a limit has no effect if multiline diagnostics are either |
| * fully enabled or disabled. |
| * |
| * @param limit the kind of limit to be set |
| * @param value the limit value |
| */ |
| public void setMultilineLimit(MultilineLimit limit, int value); |
| |
| /** |
| * Get a multiline diagnostic limit. |
| * |
| * @param limit the kind of limit to be retrieved |
| * @return limit value or -1 if no limit is set |
| */ |
| public int getMultilineLimit(MultilineLimit limit); |
| //where |
| /** |
| * A multiline limit control the verbosity of multiline diagnostics |
| * either by setting a maximum depth of nested multidiagnostics, |
| * or by limiting the amount of subdiagnostics attached to a given |
| * diagnostic (or both). |
| */ |
| public enum MultilineLimit { |
| /** |
| * Controls the maximum depth of nested multiline diagnostics. |
| */ |
| DEPTH, |
| /** |
| * Controls the maximum amount of subdiagnostics that are part of a |
| * given multiline diagnostic. |
| */ |
| LENGTH |
| } |
| } |
| } |