protected void finalizeConverter()

in log4j-1.2-api/src/main/java/org/apache/log4j/helpers/PatternParser.java [217:329]


    protected void finalizeConverter(char c) {
        PatternConverter pc = null;
        switch (c) {
        case 'c':
            pc = new CategoryPatternConverter(formattingInfo, extractPrecisionOption());
            // LogLog.debug("CATEGORY converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'C':
            pc = new ClassNamePatternConverter(formattingInfo, extractPrecisionOption());
            // LogLog.debug("CLASS_NAME converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'd':
            String dateFormatStr = AbsoluteTimeDateFormat.ISO8601_DATE_FORMAT;
            DateFormat df;
            final String dOpt = extractOption();
            if (dOpt != null)
                dateFormatStr = dOpt;

            if (dateFormatStr.equalsIgnoreCase(AbsoluteTimeDateFormat.ISO8601_DATE_FORMAT))
                df = new ISO8601DateFormat();
            else if (dateFormatStr.equalsIgnoreCase(AbsoluteTimeDateFormat.ABS_TIME_DATE_FORMAT))
                df = new AbsoluteTimeDateFormat();
            else if (dateFormatStr.equalsIgnoreCase(AbsoluteTimeDateFormat.DATE_AND_TIME_DATE_FORMAT))
                df = new DateTimeDateFormat();
            else {
                try {
                    df = new SimpleDateFormat(dateFormatStr);
                } catch (IllegalArgumentException e) {
                    LogLog.error("Could not instantiate SimpleDateFormat with " + dateFormatStr, e);
                    df = (DateFormat) OptionConverter.instantiateByClassName("org.apache.log4j.helpers.ISO8601DateFormat", DateFormat.class, null);
                }
            }
            pc = new DatePatternConverter(formattingInfo, df);
            // LogLog.debug("DATE converter {"+dateFormatStr+"}.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'F':
            pc = new LocationPatternConverter(formattingInfo, FILE_LOCATION_CONVERTER);
            // LogLog.debug("File name converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'l':
            pc = new LocationPatternConverter(formattingInfo, FULL_LOCATION_CONVERTER);
            // LogLog.debug("Location converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'L':
            pc = new LocationPatternConverter(formattingInfo, LINE_LOCATION_CONVERTER);
            // LogLog.debug("LINE NUMBER converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'm':
            pc = new BasicPatternConverter(formattingInfo, MESSAGE_CONVERTER);
            // LogLog.debug("MESSAGE converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'M':
            pc = new LocationPatternConverter(formattingInfo, METHOD_LOCATION_CONVERTER);
            // LogLog.debug("METHOD converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'p':
            pc = new BasicPatternConverter(formattingInfo, LEVEL_CONVERTER);
            // LogLog.debug("LEVEL converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 'r':
            pc = new BasicPatternConverter(formattingInfo, RELATIVE_TIME_CONVERTER);
            // LogLog.debug("RELATIVE time converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        case 't':
            pc = new BasicPatternConverter(formattingInfo, THREAD_CONVERTER);
            // LogLog.debug("THREAD converter.");
            // formattingInfo.dump();
            currentLiteral.setLength(0);
            break;
        /*
         * case 'u': if(i < patternLength) { char cNext = pattern.charAt(i); if(cNext >= '0' && cNext <= '9') { pc = new
         * UserFieldPatternConverter(formattingInfo, cNext - '0'); LogLog.debug("USER converter ["+cNext+"].");
         * formattingInfo.dump(); currentLiteral.setLength(0); i++; } else LogLog.error("Unexpected char"
         * +cNext+" at position "+i); } break;
         */
        case 'x':
            pc = new BasicPatternConverter(formattingInfo, NDC_CONVERTER);
            // LogLog.debug("NDC converter.");
            currentLiteral.setLength(0);
            break;
        case 'X':
            final String xOpt = extractOption();
            pc = new MDCPatternConverter(formattingInfo, xOpt);
            currentLiteral.setLength(0);
            break;
        default:
            LogLog.error("Unexpected char [" + c + "] at position " + i + " in conversion patterrn.");
            pc = new LiteralPatternConverter(currentLiteral.toString());
            currentLiteral.setLength(0);
        }

        addConverter(pc);
    }