001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements. See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache license, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License. You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the license for the specific language governing permissions and
015     * limitations under the license.
016     */
017    package org.apache.logging.log4j.core.pattern;
018    
019    
020    /**
021     * <p>AbstractPatternConverter is an abstract class that provides the
022     * formatting functionality that derived classes need.
023     * <p/>
024     * <p>Conversion specifiers in a conversion patterns are parsed to
025     * individual PatternConverters. Each of which is responsible for
026     * converting an object in a converter specific manner.
027     */
028    public abstract class AbstractPatternConverter implements PatternConverter {
029        /**
030         * Converter name.
031         */
032        private final String name;
033    
034        /**
035         * Converter style name.
036         */
037        private final String style;
038    
039        /**
040         * Create a new pattern converter.
041         *
042         * @param name  name for pattern converter.
043         * @param style CSS style for formatted output.
044         */
045        protected AbstractPatternConverter(final String name, final String style) {
046            this.name = name;
047            this.style = style;
048        }
049    
050        /**
051         * This method returns the name of the conversion pattern.
052         * <p/>
053         * The name can be useful to certain Layouts such as HTMLLayout.
054         *
055         * @return the name of the conversion pattern
056         */
057        @Override
058        public final String getName() {
059            return name;
060        }
061    
062        /**
063         * This method returns the CSS style class that should be applied to
064         * the LoggingEvent passed as parameter, which can be null.
065         * <p/>
066         * This information is currently used only by HTMLLayout.
067         *
068         * @param e null values are accepted
069         * @return the name of the conversion pattern
070         */
071        @Override
072        public String getStyleClass(final Object e) {
073            return style;
074        }
075    }