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  package org.apache.logging.log4j.core.config.plugins.util;
    18
    19
    20  import org.apache.logging.log4j.core.config.plugins.processor.PluginEntry;
    21
    22  /**
    23   * Plugin Descriptor. This is a memento object for Plugin annotations paired to their annotated classes.
    24   *
    25   * @param <T> The plug-in class, which can be any kind of class.
    26   * @see org.apache.logging.log4j.core.config.plugins.Plugin
    27   */
    28  public class PluginType<T> {
    29
    30      private final PluginEntry pluginEntry;
    31      private final Class<T> pluginClass;
    32      private final String elementName;
    33
    34      /**
    35       * @since 2.1
    36       */
    37      public PluginType(final PluginEntry pluginEntry, final Class<T> pluginClass, final String elementName) {
    38          this.pluginEntry = pluginEntry;
    39          this.pluginClass = pluginClass;
    40          this.elementName = elementName;
    41      }
    42
    43      public Class<T> getPluginClass() {
    44          return this.pluginClass;
    45      }
    46
    47      public String getElementName() {
    48          return this.elementName;
    49      }
    50
    51      /**
    52       * @since 2.1
    53       */
    54      public String getKey() {
    55          return this.pluginEntry.getKey();
    56      }
    57
    58      public boolean isObjectPrintable() {
    59          return this.pluginEntry.isPrintable();
    60      }
    61
    62      public boolean isDeferChildren() {
    63          return this.pluginEntry.isDefer();
    64      }
    65
    66      /**
    67       * @since 2.1
    68       */
    69      public String getCategory() {
    70          return this.pluginEntry.getCategory();
    71      }
    72
    73      @Override
    74      public String toString() {
    75          return "PluginType [pluginClass=" + pluginClass +
    76                  ", key=" + pluginEntry.getKey() +
    77                  ", elementName=" + pluginEntry.getName() +
    78                  ", isObjectPrintable=" + pluginEntry.isPrintable() +
    79                  ", isDeferChildren==" + pluginEntry.isDefer() +
    80                  ", category=" + pluginEntry.getCategory() +
    81                  "]";
    82      }
    83  }