langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java
changeset 1471 57506cdfb7b4
parent 1109 853d8c191eac
child 1472 1e09e143438c
equal deleted inserted replaced
1470:6ff8524783fa 1471:57506cdfb7b4
    25 package com.sun.tools.javac.util;
    25 package com.sun.tools.javac.util;
    26 
    26 
    27 import java.util.Collection;
    27 import java.util.Collection;
    28 import java.util.Locale;
    28 import java.util.Locale;
    29 import javax.tools.JavaFileObject;
    29 import javax.tools.JavaFileObject;
       
    30 import java.util.ResourceBundle;
    30 
    31 
    31 import com.sun.tools.javac.api.DiagnosticFormatter;
    32 import com.sun.tools.javac.api.DiagnosticFormatter;
    32 import com.sun.tools.javac.api.Formattable;
    33 import com.sun.tools.javac.api.Formattable;
    33 import com.sun.tools.javac.api.DiagnosticFormatter.PositionKind;
    34 import com.sun.tools.javac.api.DiagnosticFormatter.PositionKind;
    34 import com.sun.tools.javac.file.JavacFileManager;
    35 import com.sun.tools.javac.file.JavacFileManager;
    46  *
    47  *
    47  */
    48  */
    48 public abstract class AbstractDiagnosticFormatter implements DiagnosticFormatter<JCDiagnostic> {
    49 public abstract class AbstractDiagnosticFormatter implements DiagnosticFormatter<JCDiagnostic> {
    49 
    50 
    50     /**
    51     /**
    51      * Messages object used by this formatter for i18n
    52      * JavacMessages object used by this formatter for i18n
    52      */
    53      */
    53     protected Messages messages;
    54     protected JavacMessages messages;
    54 
    55 
    55     /**
    56     /**
    56      * Initialize an AbstractDiagnosticFormatter by setting its Messages object
    57      * Initialize an AbstractDiagnosticFormatter by setting its JavacMessages object
    57      * @param messages
    58      * @param messages
    58      */
    59      */
    59     protected AbstractDiagnosticFormatter(Messages messages) {
    60     protected AbstractDiagnosticFormatter(JavacMessages messages) {
    60         this.messages = messages;
    61         this.messages = messages;
    61     }
    62     }
    62 
    63 
    63     public String formatMessage(JCDiagnostic d, Locale l) {
    64     public String formatMessage(JCDiagnostic d, Locale l) {
    64         //this code should rely on the locale settings but it's not! See RFE 6443132
    65         //this code should rely on the locale settings but it's not! See RFE 6443132
   129             return formatIterable(d, (Iterable<?>)arg, l);
   130             return formatIterable(d, (Iterable<?>)arg, l);
   130         }
   131         }
   131         else if (arg instanceof JavaFileObject)
   132         else if (arg instanceof JavaFileObject)
   132             return JavacFileManager.getJavacBaseFileName((JavaFileObject)arg);
   133             return JavacFileManager.getJavacBaseFileName((JavaFileObject)arg);
   133         else if (arg instanceof Formattable)
   134         else if (arg instanceof Formattable)
   134             return ((Formattable)arg).toString(Messages.getDefaultBundle());
   135             return ((Formattable)arg).toString(l, messages);
   135         else
   136         else
   136             return String.valueOf(arg);
   137             return String.valueOf(arg);
   137     }
   138     }
   138 
   139 
   139     /**
   140     /**
   162      * @param key locale-independent key used for looking up in a resource file
   163      * @param key locale-independent key used for looking up in a resource file
   163      * @param args localization arguments
   164      * @param args localization arguments
   164      * @return a locale-dependent string
   165      * @return a locale-dependent string
   165      */
   166      */
   166     protected String localize(Locale l, String key, Object... args) {
   167     protected String localize(Locale l, String key, Object... args) {
   167         return messages.getLocalizedString(key, args);
   168         return messages.getLocalizedString(l, key, args);
   168     }
   169     }
   169 }
   170 }