View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements. See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License. You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package org.apache.logging.log4j.core.util;
    19
    20  /**
    21   * A type of Plugin builder that can be used to configure and create a plugin instance using a Java DSL instead of
    22   * through a configuration file. These builders are primarily useful for internal code and unit tests, but they can
    23   * technically be used as a verbose alternative to configuration files.
    24   *
    25   * <p>
    26   *     When creating plugin builders, it is customary to create the builder class as a public static inner class
    27   *     called {@code Builder}. For instance, the builder class for
    28   *     {@link org.apache.logging.log4j.core.layout.PatternLayout PatternLayout} would be
    29   *     {@code PatternLayout.Builder}.
    30   * </p>
    31   *
    32   * @param <T> the Plugin class this is a builder for.
    33   */
    34  public interface Builder<T> {
    35
    36      /**
    37       * Builds the plugin object after all configuration has been set. This will use default values for any
    38       * unspecified attributes for the plugin.
    39       *
    40       * @return the configured plugin instance.
    41       * @throws org.apache.logging.log4j.core.config.ConfigurationException if there was an error building the plugin
    42       * object.
    43       */
    44      T build();
    45  }