Class PluginBuilder

  • All Implemented Interfaces:
    Builder<java.lang.Object>

    public class PluginBuilder
    extends java.lang.Object
    implements Builder<java.lang.Object>
    Builder class to instantiate and configure a Plugin object using a PluginFactory method or PluginBuilderFactory builder class.
    • Field Detail

      • EMPTY_FIELD_ARRAY

        private static final java.lang.reflect.Field[] EMPTY_FIELD_ARRAY
      • LOGGER

        private static final Logger LOGGER
      • pluginType

        private final PluginType<?> pluginType
      • clazz

        private final java.lang.Class<?> clazz
      • node

        private Node node
    • Constructor Detail

      • PluginBuilder

        public PluginBuilder​(PluginType<?> pluginType)
        Constructs a PluginBuilder for a given PluginType.
        Parameters:
        pluginType - type of plugin to configure
    • Method Detail

      • withConfiguration

        public PluginBuilder withConfiguration​(Configuration configuration)
        Specifies the Configuration to use for constructing the plugin instance.
        Parameters:
        configuration - the configuration to use.
        Returns:
        this
      • withConfigurationNode

        public PluginBuilder withConfigurationNode​(Node node)
        Specifies the Node corresponding to the plugin object that will be created.
        Parameters:
        node - the plugin configuration node to use.
        Returns:
        this
      • forLogEvent

        public PluginBuilder forLogEvent​(LogEvent event)
        Specifies the LogEvent that may be used to provide extra context for string substitutions.
        Parameters:
        event - the event to use for extra information.
        Returns:
        this
      • build

        public java.lang.Object build()
        Builds the plugin object.
        Specified by:
        build in interface Builder<java.lang.Object>
        Returns:
        the plugin object or null if there was a problem creating it.
      • verify

        private void verify()
      • createBuilder

        private static Builder<?> createBuilder​(java.lang.Class<?> clazz)
                                         throws java.lang.reflect.InvocationTargetException,
                                                java.lang.IllegalAccessException
        Throws:
        java.lang.reflect.InvocationTargetException
        java.lang.IllegalAccessException
      • injectFields

        private void injectFields​(Builder<?> builder)
                           throws java.lang.IllegalAccessException
        Throws:
        java.lang.IllegalAccessException
      • validateFields

        private static java.lang.String validateFields​(Builder<?> builder,
                                                       java.util.List<java.lang.reflect.Field> fields)
                                                throws java.lang.IllegalAccessException
        Throws:
        java.lang.IllegalAccessException
      • validateFields

        public static boolean validateFields​(Builder<?> builder,
                                             java.lang.String errorPrefix)
      • simpleName

        private static java.lang.String simpleName​(java.lang.Object object)
        object.getClass().getSimpleName() returns Builder, when we want PatternLayout$Builder.
      • findFactoryMethod

        private static java.lang.reflect.Method findFactoryMethod​(java.lang.Class<?> clazz)
      • generateParameters

        private java.lang.Object[] generateParameters​(java.lang.reflect.Method factory)
      • extractPluginAliases

        private static java.lang.String[] extractPluginAliases​(java.lang.annotation.Annotation... parmTypes)
      • checkForRemainingAttributes

        private void checkForRemainingAttributes()
      • verifyNodeChildrenUsed

        private void verifyNodeChildrenUsed()