Class PatternParser


  • public final class PatternParser
    extends java.lang.Object
    Most of the work of the PatternLayout class is delegated to the PatternParser class.

    It is this class that parses conversion patterns and creates a chained list of PatternConverters.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  PatternParser.ParserState
      The states the parser can be in while parsing the pattern.
    • Constructor Summary

      Constructors 
      Constructor Description
      PatternParser​(java.lang.String converterKey)
      Constructor.
      PatternParser​(Configuration config, java.lang.String converterKey, java.lang.Class<?> expected)
      Constructor.
      PatternParser​(Configuration config, java.lang.String converterKey, java.lang.Class<?> expectedClass, java.lang.Class<?> filterClass)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static boolean areValidNewInstanceParameters​(java.lang.Class<?>[] parameterTypes)
      LOG4J2-2564: Returns true if all method parameters are valid for injection.
      private PatternConverter createConverter​(java.lang.String converterId, java.lang.StringBuilder currentLiteral, java.util.Map<java.lang.String,​java.lang.Class<PatternConverter>> rules, java.util.List<java.lang.String> options, boolean disableAnsi, boolean noConsoleNoAnsi)
      Creates a new PatternConverter.
      private static int extractConverter​(char lastChar, java.lang.String pattern, int start, java.lang.StringBuilder convBuf, java.lang.StringBuilder currentLiteral)
      Extracts the converter identifier found at the given start position.
      private static int extractOptions​(java.lang.String pattern, int start, java.util.List<java.lang.String> options)
      Extract options.
      private int finalizeConverter​(char c, java.lang.String pattern, int start, java.lang.StringBuilder currentLiteral, FormattingInfo formattingInfo, java.util.Map<java.lang.String,​java.lang.Class<PatternConverter>> rules, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean disableAnsi, boolean noConsoleNoAnsi, boolean convertBackslashes)
      Processes a format specifier sequence.
      java.util.List<PatternFormatter> parse​(java.lang.String pattern)  
      java.util.List<PatternFormatter> parse​(java.lang.String pattern, boolean alwaysWriteExceptions, boolean noConsoleNoAnsi)  
      java.util.List<PatternFormatter> parse​(java.lang.String pattern, boolean alwaysWriteExceptions, boolean disableAnsi, boolean noConsoleNoAnsi)  
      void parse​(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean noConsoleNoAnsi, boolean convertBackslashes)
      Parse a format specifier.
      void parse​(java.lang.String pattern, java.util.List<PatternConverter> patternConverters, java.util.List<FormattingInfo> formattingInfos, boolean disableAnsi, boolean noConsoleNoAnsi, boolean convertBackslashes)
      Parse a format specifier.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PatternParser

        public PatternParser​(java.lang.String converterKey)
        Constructor.
        Parameters:
        converterKey - The type of converters that will be used.
      • PatternParser

        public PatternParser​(Configuration config,
                             java.lang.String converterKey,
                             java.lang.Class<?> expected)
        Constructor.
        Parameters:
        config - The current Configuration.
        converterKey - The key to lookup the converters.
        expected - The expected base Class of each Converter.
      • PatternParser

        public PatternParser​(Configuration config,
                             java.lang.String converterKey,
                             java.lang.Class<?> expectedClass,
                             java.lang.Class<?> filterClass)
        Constructor.
        Parameters:
        config - The current Configuration.
        converterKey - The key to lookup the converters.
        expectedClass - The expected base Class of each Converter.
        filterClass - Filter the returned plugins after calling the plugin manager.
    • Method Detail

      • parse

        public java.util.List<PatternFormatter> parse​(java.lang.String pattern)
      • parse

        public java.util.List<PatternFormatter> parse​(java.lang.String pattern,
                                                      boolean alwaysWriteExceptions,
                                                      boolean noConsoleNoAnsi)
      • parse

        public java.util.List<PatternFormatter> parse​(java.lang.String pattern,
                                                      boolean alwaysWriteExceptions,
                                                      boolean disableAnsi,
                                                      boolean noConsoleNoAnsi)
      • extractConverter

        private static int extractConverter​(char lastChar,
                                            java.lang.String pattern,
                                            int start,
                                            java.lang.StringBuilder convBuf,
                                            java.lang.StringBuilder currentLiteral)
        Extracts the converter identifier found at the given start position.

        After this function returns, the variable i will point to the first char after the end of the converter identifier.

        If i points to a char which is not a character acceptable at the start of a unicode identifier, the value null is returned.

        Parameters:
        lastChar - last processed character.
        pattern - format string.
        start - current index into pattern format.
        convBuf - buffer to receive conversion specifier.
        currentLiteral - literal to be output in case format specifier in unrecognized.
        Returns:
        position in pattern after converter.
      • extractOptions

        private static int extractOptions​(java.lang.String pattern,
                                          int start,
                                          java.util.List<java.lang.String> options)
        Extract options.
        Parameters:
        pattern - conversion pattern.
        start - start of options.
        options - array to receive extracted options
        Returns:
        position in pattern after options.
      • parse

        public void parse​(java.lang.String pattern,
                          java.util.List<PatternConverter> patternConverters,
                          java.util.List<FormattingInfo> formattingInfos,
                          boolean noConsoleNoAnsi,
                          boolean convertBackslashes)
        Parse a format specifier.
        Parameters:
        pattern - pattern to parse.
        patternConverters - list to receive pattern converters.
        formattingInfos - list to receive field specifiers corresponding to pattern converters.
        noConsoleNoAnsi - do not do not output ANSI escape codes if System.console()
        convertBackslashes - if true, backslash characters are treated as escape characters and character sequences like "\" followed by "t" (backslash+t) are converted to special characters like '\t' (tab).
      • parse

        public void parse​(java.lang.String pattern,
                          java.util.List<PatternConverter> patternConverters,
                          java.util.List<FormattingInfo> formattingInfos,
                          boolean disableAnsi,
                          boolean noConsoleNoAnsi,
                          boolean convertBackslashes)
        Parse a format specifier.
        Parameters:
        pattern - pattern to parse.
        patternConverters - list to receive pattern converters.
        formattingInfos - list to receive field specifiers corresponding to pattern converters.
        disableAnsi - do not output ANSI escape codes
        noConsoleNoAnsi - do not do not output ANSI escape codes if System.console()
        convertBackslashes - if true, backslash characters are treated as escape characters and character sequences like "\" followed by "t" (backslash+t) are converted to special characters like '\t' (tab).
      • createConverter

        private PatternConverter createConverter​(java.lang.String converterId,
                                                 java.lang.StringBuilder currentLiteral,
                                                 java.util.Map<java.lang.String,​java.lang.Class<PatternConverter>> rules,
                                                 java.util.List<java.lang.String> options,
                                                 boolean disableAnsi,
                                                 boolean noConsoleNoAnsi)
        Creates a new PatternConverter.
        Parameters:
        converterId - converterId.
        currentLiteral - literal to be used if converter is unrecognized or following converter if converterId contains extra characters.
        rules - map of stock pattern converters keyed by format specifier.
        options - converter options.
        disableAnsi - do not output ANSI escape codes
        noConsoleNoAnsi - do not do not output ANSI escape codes if System.console()
        Returns:
        converter or null.
      • areValidNewInstanceParameters

        private static boolean areValidNewInstanceParameters​(java.lang.Class<?>[] parameterTypes)
        LOG4J2-2564: Returns true if all method parameters are valid for injection.
      • finalizeConverter

        private int finalizeConverter​(char c,
                                      java.lang.String pattern,
                                      int start,
                                      java.lang.StringBuilder currentLiteral,
                                      FormattingInfo formattingInfo,
                                      java.util.Map<java.lang.String,​java.lang.Class<PatternConverter>> rules,
                                      java.util.List<PatternConverter> patternConverters,
                                      java.util.List<FormattingInfo> formattingInfos,
                                      boolean disableAnsi,
                                      boolean noConsoleNoAnsi,
                                      boolean convertBackslashes)
        Processes a format specifier sequence.
        Parameters:
        c - initial character of format specifier.
        pattern - conversion pattern
        start - current position in conversion pattern.
        currentLiteral - current literal.
        formattingInfo - current field specifier.
        rules - map of stock pattern converters keyed by format specifier.
        patternConverters - list to receive parsed pattern converter.
        formattingInfos - list to receive corresponding field specifier.
        disableAnsi - do not output ANSI escape codes
        noConsoleNoAnsi - do not do not output ANSI escape codes if System.console()
        convertBackslashes - if true, backslash characters are treated as escape characters and character sequences like "\" followed by "t" (backslash+t) are converted to special characters like '\t' (tab).
        Returns:
        position after format specifier sequence.