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.config.plugins.util;
018
019
020 import org.apache.logging.log4j.core.config.plugins.processor.PluginEntry;
021
022 /**
023 * Plugin Descriptor. This is a memento object for Plugin annotations paired to their annotated classes.
024 *
025 * @param <T> The plug-in class, which can be any kind of class.
026 * @see org.apache.logging.log4j.core.config.plugins.Plugin
027 */
028 public class PluginType<T> {
029
030 private final PluginEntry pluginEntry;
031 private final Class<T> pluginClass;
032 private final String elementName;
033
034 /**
035 * @since 2.1
036 */
037 public PluginType(final PluginEntry pluginEntry, final Class<T> pluginClass, final String elementName) {
038 this.pluginEntry = pluginEntry;
039 this.pluginClass = pluginClass;
040 this.elementName = elementName;
041 }
042
043 public Class<T> getPluginClass() {
044 return this.pluginClass;
045 }
046
047 public String getElementName() {
048 return this.elementName;
049 }
050
051 /**
052 * @since 2.1
053 */
054 public String getKey() {
055 return this.pluginEntry.getKey();
056 }
057
058 public boolean isObjectPrintable() {
059 return this.pluginEntry.isPrintable();
060 }
061
062 public boolean isDeferChildren() {
063 return this.pluginEntry.isDefer();
064 }
065
066 /**
067 * @since 2.1
068 */
069 public String getCategory() {
070 return this.pluginEntry.getCategory();
071 }
072
073 @Override
074 public String toString() {
075 return "PluginType [pluginClass=" + pluginClass +
076 ", key=" + pluginEntry.getKey() +
077 ", elementName=" + pluginEntry.getName() +
078 ", isObjectPrintable=" + pluginEntry.isPrintable() +
079 ", isDeferChildren==" + pluginEntry.isDefer() +
080 ", category=" + pluginEntry.getCategory() +
081 "]";
082 }
083 }