| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache license, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the license for the specific language governing permissions and |
| * limitations under the license. |
| */ |
| package org.apache.logging.log4j.core.config.plugins; |
| |
| import org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor; |
| import org.apache.logging.log4j.plugins.inject.InjectorStrategy; |
| import org.apache.logging.log4j.util.Strings; |
| |
| import java.lang.annotation.Documented; |
| import java.lang.annotation.ElementType; |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| import java.lang.annotation.Target; |
| |
| /** |
| * Identifies a Plugin Attribute and its default value. Note that only one of the defaultFoo attributes will be |
| * used based on the type this annotation is attached to. Thus, for primitive types, the default<i>Type</i> |
| * attribute will be used for some <i>Type</i>. However, for more complex types (including enums), the default |
| * string value is used instead and should correspond to the string that would correctly convert to the appropriate |
| * enum value using {@link Enum#valueOf(Class, String) Enum.valueOf}. |
| * @deprecated Exists for compatibility with Log4j 2 2.x plugins. Not used for Log4j 2 3.x plugins. |
| */ |
| @Documented |
| @Retention(RetentionPolicy.RUNTIME) |
| @Target({ElementType.PARAMETER, ElementType.FIELD}) |
| @InjectorStrategy(PluginAttributeVisitor.class) |
| public @interface PluginAttribute { |
| |
| /** |
| * Specifies the default boolean value to use. |
| */ |
| boolean defaultBoolean() default false; |
| |
| /** |
| * Specifies the default byte value to use. |
| */ |
| byte defaultByte() default 0; |
| |
| /** |
| * Specifies the default byte value to use. |
| */ |
| char defaultChar() default 0; |
| |
| /** |
| * Specifies the default {@link Class} value to use. |
| */ |
| Class<?> defaultClass() default Object.class; |
| |
| /** |
| * Specifies the default double floating point value to use. |
| */ |
| double defaultDouble() default 0.0d; |
| |
| /** |
| * Specifies the default floating point value to use. |
| */ |
| float defaultFloat() default 0.0f; |
| |
| /** |
| * Specifies the default integer value to use. |
| */ |
| int defaultInt() default 0; |
| |
| /** |
| * Specifies the default long value to use. |
| */ |
| long defaultLong() default 0L; |
| |
| /** |
| * Specifies the default long value to use. |
| */ |
| short defaultShort() default 0; |
| |
| /** |
| * Specifies the default value this attribute should use if none is provided or if the provided value is invalid. |
| */ |
| String defaultString() default Strings.EMPTY; |
| |
| /** |
| * Specifies the name of the attribute (case-insensitive) this annotation corresponds to. |
| */ |
| String value(); |
| |
| /** |
| * Indicates that this attribute is a sensitive one that shouldn't be logged directly. Such attributes will instead |
| * be output as a hashed value. |
| */ |
| boolean sensitive() default false; |
| |
| } |