@@ -0,0 +1,3489 @@
+/*%0A * Licensed to the Apache Software Foundation (ASF) under one or more%0A * contributor license agreements. See the NOTICE file distributed with%0A * this work for additional information regarding copyright ownership.%0A * The ASF licenses this file to You under the Apache License, Version 2.0%0A * (the %22License%22); you may not use this file except in compliance with%0A * the License. You may obtain a copy of the License at%0A *%0A *      http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A%0Apackage org.apache.logging.log4j.core.config.plugins.visitors;%0A%0Aimport java.lang.annotation.Annotation;%0A%0Aimport org.apache.logging.log4j.core.LogEvent;%0Aimport org.apache.logging.log4j.core.config.Configuration;%0Aimport org.apache.logging.log4j.core.config.Node;%0Aimport org.apache.logging.log4j.core.lookup.StrSubstitutor;%0A%0A/**%0A * Visitor strategy for parsing data from a %7B@link Node%7D, doing any relevant type conversion, and returning a%0A * parsed value for that variable. Implementations must be constructable using the default constructor.%0A *%0A * @param %3CA%3E the Annotation type.%0A */%0Apublic interface PluginVisitor%3CA extends Annotation%3E %7B%0A%0A    /**%0A     * Sets the Annotation to be used for this. If the given Annotation is not compatible with this class's type, then%0A     * it is ignored.%0A     *%0A     * @param annotation the Annotation instance.%0A     * @return %7B@code this%7D.%0A     * @throws NullPointerException if the argument is %7B@code null%7D.%0A     */%0A    PluginVisitor%3CA%3E setAnnotation(Annotation annotation);%0A%0A    /**%0A     * Sets the list of aliases to use for this visit. No aliases are required, however.%0A     *%0A     * @param aliases the list of aliases to use.%0A     * @return %7B@code this%7D.%0A     */%0A    PluginVisitor%3CA%3E setAliases(String... aliases);%0A%0A    /**%0A     * Sets the class to convert the plugin value to on this visit. This should correspond with a class obtained from%0A     * a factory method or builder class field. Not all PluginVisitor implementations may need this value.%0A     *%0A     * @param conversionType the type to convert the plugin string to (if applicable).%0A     * @return %7B@code this%7D.%0A     * @throws NullPointerException if the argument is %7B@code null%7D.%0A     */%0A    PluginVisitor%3CA%3E setConversionType(Class%3C?%3E conversionType);%0A%0A    /**%0A     * Sets the StrSubstitutor to use for converting raw strings before type conversion. Generally obtained from a%0A     * %7B@link org.apache.logging.log4j.core.config.Configuration%7D.%0A     *%0A     * @param substitutor the StrSubstitutor to use on plugin values.%0A     * @return %7B@code this%7D.%0A     * @throws NullPointerException if the argument is %7B@code null%7D.%0A     */%0A    PluginVisitor%3CA%3E setStrSubstitutor(StrSubstitutor substitutor);%0A%0A    /**%0A     * Visits a Node to obtain a value for constructing a Plugin object.%0A     *%0A     * @param configuration the current Configuration.%0A     * @param node          the current Node corresponding to the Plugin object being created.%0A     * @param event         the current LogEvent that caused this Plugin object to be made (optional).%0A     * @return the converted value to be used for Plugin creation.%0A     */%0A    Object visit(Configuration configuration, Node node, LogEvent event);%0A%7D%0A

Add PluginVisitor interface.