Class I18nFormatterTreeUtil


  • public class I18nFormatterTreeUtil
    extends java.lang.Object
    This class provides a collection of utilities to ease working with syntax trees that have something to do with I18nFormatters.
    See the Checker Framework Manual:
    Internationalization Format String Checker
    • Field Detail

      • processingEnv

        public final javax.annotation.processing.ProcessingEnvironment processingEnv
        The processing environment.
      • i18nFormatValueElement

        protected final javax.lang.model.element.ExecutableElement i18nFormatValueElement
        The value() element/field of an @I18nFormat annotation.
      • i18nFormatForValueElement

        protected final javax.lang.model.element.ExecutableElement i18nFormatForValueElement
        The value() element/field of an @I18nFormatFor annotation.
      • i18nInvalidFormatValueElement

        protected final javax.lang.model.element.ExecutableElement i18nInvalidFormatValueElement
        The value() element/field of an @I18nInvalidFormat annotation.
    • Constructor Detail

      • I18nFormatterTreeUtil

        public I18nFormatterTreeUtil​(BaseTypeChecker checker)
        Creates a new I18nFormatterTreeUtil.
        Parameters:
        checker - the checker
    • Method Detail

      • exceptionToInvalidFormatAnnotation

        public javax.lang.model.element.AnnotationMirror exceptionToInvalidFormatAnnotation​(java.lang.IllegalArgumentException ex)
        Takes an exception that describes an invalid formatter string and returns a syntax trees element that represents a I18nInvalidFormat annotation with the exception's error message as value.
      • invalidFormatAnnotationToErrorMessage

        public java.lang.String invalidFormatAnnotationToErrorMessage​(javax.lang.model.element.AnnotationMirror anno)
        Takes a syntax tree element that represents a I18nInvalidFormat annotation, and returns its value.
        Parameters:
        anno - an I18nInvalidFormat annotation
        Returns:
        its value() element/field, within double-quotes
      • categoriesToFormatAnnotation

        public javax.lang.model.element.AnnotationMirror categoriesToFormatAnnotation​(I18nConversionCategory[] args)
        Creates a @I18nFormat annotation with the given list as its value.
        Parameters:
        args - conversion categories for the @Format annotation
        Returns:
        a @I18nFormat annotation with the given list as its value
      • formatAnnotationToCategories

        public I18nConversionCategory[] formatAnnotationToCategories​(javax.lang.model.element.AnnotationMirror anno)
        Takes an @I18nFormat annotation, and returns its value element
        Parameters:
        anno - an @I18nFormat annotation
        Returns:
        the @I18nFormat annotation's value element
      • isHasFormatCall

        public boolean isHasFormatCall​(MethodInvocationNode node,
                                       AnnotatedTypeFactory atypeFactory)
        Returns true if the call is to a method with the @I18nChecksFormat annotation. An example of such a method is I18nFormatUtil.hasFormat.
      • isIsFormatCall

        public boolean isIsFormatCall​(MethodInvocationNode node,
                                      AnnotatedTypeFactory atypeFactory)
        Returns true if the call is to a method with the @I18nValidFormat annotation. An example of such a method is I18nFormatUtil.isFormat.
      • isMakeFormatCall

        public boolean isMakeFormatCall​(MethodInvocationNode node,
                                        AnnotatedTypeFactory atypeFactory)
        Returns true if the call is to a method with the @I18nMakeFormat annotation. An example of such a method is ResourceBundle.getString.
      • failure

        public final void failure​(FormatterTreeUtil.Result<?> res,
                                  @CompilerMessageKey java.lang.String msgKey,
                                  java.lang.Object... args)
        Reports an error.
        Parameters:
        res - used for source location information
        msgKey - the diagnostic message key
        args - arguments to the diagnostic message
      • warning

        public final void warning​(FormatterTreeUtil.Result<?> res,
                                  @CompilerMessageKey java.lang.String msgKey,
                                  java.lang.Object... args)
        Reports a warning.
        Parameters:
        res - used for source location information
        msgKey - the diagnostic message key
        args - arguments to the diagnostic message
      • createFormatForCall

        public @Nullable I18nFormatterTreeUtil.I18nFormatCall createFormatForCall​(com.sun.source.tree.MethodInvocationTree tree,
                                                                                  I18nFormatterAnnotatedTypeFactory atypeFactory)
        Returns an I18nFormatCall instance, only if there is an @I18nFormatFor annotation. Otherwise, returns null.
        Parameters:
        tree - method invocation tree
        atypeFactory - type factory
        Returns:
        an I18nFormatCall instance, only if there is an @I18nFormatFor annotation. Otherwise, returns null.