This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 2ec24cf7a42273e96eba4f2a47e678963af23f93
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Feb 20 13:07:00 2022 -0500

    Internal refactoring.
    
    Conflicts:
        
log4j-1.2-api/src/main/java/org/apache/log4j/builders/BuilderManager.java
        
log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
        
log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
        
log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
        
log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
---
 .../org/apache/log4j/builders/AbstractBuilder.java |  4 +-
 .../java/org/apache/log4j/builders/Builder.java    |  4 +-
 .../org/apache/log4j/builders/BuilderManager.java  | 69 +++++++---------------
 .../{appender/AppenderBuilder.java => Parser.java} | 29 ++++++---
 .../log4j/builders/appender/AppenderBuilder.java   |  4 +-
 .../builders/appender/RewriteAppenderBuilder.java  |  3 +-
 .../builders/filter/DenyAllFilterBuilder.java      |  4 +-
 .../log4j/builders/filter/FilterBuilder.java       | 13 +---
 .../builders/filter/LevelMatchFilterBuilder.java   |  6 +-
 .../builders/filter/LevelRangeFilterBuilder.java   |  6 +-
 .../builders/filter/StringMatchFilterBuilder.java  |  6 +-
 .../log4j/builders/layout/HtmlLayoutBuilder.java   |  6 +-
 .../log4j/builders/layout/LayoutBuilder.java       | 12 +---
 .../builders/layout/PatternLayoutBuilder.java      |  6 +-
 .../log4j/builders/layout/SimpleLayoutBuilder.java |  4 +-
 .../log4j/builders/layout/TTCCLayoutBuilder.java   |  6 +-
 .../log4j/builders/layout/XmlLayoutBuilder.java    |  6 +-
 .../builders/rewrite/RewritePolicyBuilder.java     | 12 +---
 .../log4j/config/PropertiesConfiguration.java      |  4 +-
 19 files changed, 87 insertions(+), 117 deletions(-)

diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
index b73fff4..a293f62 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
@@ -36,8 +36,10 @@ import org.w3c.dom.Element;
 
 /**
  * Base class for Log4j 1 component builders.
+ *
+ * @param <T> The type to build.
  */
-public abstract class AbstractBuilder implements Builder {
+public abstract class AbstractBuilder<T> implements Builder<T> {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
     protected static final String FILE_PARAM = "File";
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/Builder.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/Builder.java
index 7ff5879..8a9b670 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/Builder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/Builder.java
@@ -19,7 +19,9 @@ package org.apache.log4j.builders;
 
 /**
  * A marker interface for Log4j 1.x component builders.
+ * 
+ * @param <T> The type to build.
  */
-public interface Builder {
+public interface Builder<T> {
     // empty
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/BuilderManager.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/BuilderManager.java
index 21a911a..6277afb 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/BuilderManager.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/BuilderManager.java
@@ -47,6 +47,7 @@ import org.w3c.dom.Element;
  */
 public class BuilderManager {
 
+    /** Plugin category. */
     public static final String CATEGORY = "Log4j Builder";
     public static final Key<PluginManager> PLUGIN_MANAGER_KEY = new 
@Named(CATEGORY) Key<>() {};
     private static final Logger LOGGER = StatusLogger.getLogger();
@@ -54,13 +55,15 @@ public class BuilderManager {
     private final Injector injector;
     private final Map<String, PluginType<?>> plugins;
 
+    /**
+     * Constructs a new instance.
+     */
     public BuilderManager(final Injector injector) {
         this.injector = injector;
         plugins = injector.getInstance(PLUGIN_MANAGER_KEY).getPlugins();
     }
 
-    @SuppressWarnings("unchecked")
-    private <T extends Builder> T createBuilder(final PluginType<T> plugin, 
final String prefix, final Properties props) {
+    private <T extends Builder<U>, U> T createBuilder(final PluginType<T> 
plugin, final String prefix, final Properties props) {
         if (plugin == null) {
             return null;
         }
@@ -69,13 +72,13 @@ public class BuilderManager {
             if (AbstractBuilder.class.isAssignableFrom(clazz)) {
                 return 
clazz.getConstructor(CONSTRUCTOR_PARAMS).newInstance(prefix, props);
             }
-            final Object builder = LoaderUtil.newInstanceOf(clazz);
+            final T builder = LoaderUtil.newInstanceOf(clazz);
             // Reasonable message instead of `ClassCastException`
             if (!Builder.class.isAssignableFrom(clazz)) {
                 LOGGER.warn("Unable to load plugin: builder {} does not 
implement {}", clazz, Builder.class);
                 return null;
             }
-            return (T) builder;
+            return builder;
         } catch (final ReflectiveOperationException ex) {
             LOGGER.warn("Unable to load plugin: {} due to: {}", 
plugin.getKey(), ex.getMessage());
             return null;
@@ -94,7 +97,7 @@ public class BuilderManager {
         return (PluginType<T>) pluginType;
     }
 
-    private <T extends Builder, U> U newInstance(final PluginType<T> plugin, 
final Function<T, U> consumer) {
+    private <T extends Builder<U>, U> U newInstance(final PluginType<T> 
plugin, final Function<T, U> consumer) {
         if (plugin != null) {
             try {
                 final T builder = 
LoaderUtil.newInstanceOf(plugin.getPluginClass());
@@ -108,61 +111,31 @@ public class BuilderManager {
         return null;
     }
 
-    public Appender parseAppender(final String className, final Element 
appenderElement, final XmlConfiguration config) {
-        final PluginType<AppenderBuilder> plugin = getPlugin(className);
-        return newInstance(plugin, b -> b.parseAppender(appenderElement, 
config));
+    public <P extends Parser<T>, T> T parse(final String className, final 
String prefix, final Properties props, final PropertiesConfiguration config) {
+        final P parser = createBuilder(getPlugin(className), prefix, props);
+        return parser != null ? parser.parse(config) : null;
     }
 
-    public Appender parseAppender(final String name, final String className, 
final String prefix, final String layoutPrefix, final String filterPrefix, 
final Properties props,
-        final PropertiesConfiguration config) {
-        final PluginType<AppenderBuilder> plugin = getPlugin(className);
-        final AppenderBuilder builder = createBuilder(plugin, prefix, props);
-        if (builder != null) {
-            return builder.parseAppender(name, prefix, layoutPrefix, 
filterPrefix, props, config);
-        }
-        return null;
+    public Appender parseAppender(final String className, final Element 
appenderElement, final XmlConfiguration config) {
+        return 
newInstance(this.<AppenderBuilder<Appender>>getPlugin(className), b -> 
b.parseAppender(appenderElement, config));
     }
 
-    public Filter parseFilter(final String className, final Element 
filterElement, final XmlConfiguration config) {
-        final PluginType<FilterBuilder> plugin = getPlugin(className);
-        return newInstance(plugin, b -> b.parseFilter(filterElement, config));
+    public Appender parseAppender(final String name, final String className, 
final String prefix, final String layoutPrefix, final String filterPrefix,
+        final Properties props, final PropertiesConfiguration config) {
+        final AppenderBuilder<Appender> builder = 
createBuilder(getPlugin(className), prefix, props);
+        return builder != null ? builder.parseAppender(name, prefix, 
layoutPrefix, filterPrefix, props, config) : null;
     }
 
-    public Filter parseFilter(final String className, final String 
filterPrefix, final Properties props, final PropertiesConfiguration config) {
-        final PluginType<FilterBuilder> plugin = getPlugin(className);
-        final FilterBuilder builder = createBuilder(plugin, filterPrefix, 
props);
-        if (builder != null) {
-            return builder.parseFilter(config);
-        }
-        return null;
+    public Filter parseFilter(final String className, final Element 
filterElement, final XmlConfiguration config) {
+        return newInstance(this.<FilterBuilder>getPlugin(className), b -> 
b.parse(filterElement, config));
     }
 
     public Layout parseLayout(final String className, final Element 
layoutElement, final XmlConfiguration config) {
-        final PluginType<LayoutBuilder> plugin = getPlugin(className);
-        return newInstance(plugin, b -> b.parseLayout(layoutElement, config));
-    }
-
-    public Layout parseLayout(final String className, final String 
layoutPrefix, final Properties props, final PropertiesConfiguration config) {
-        final PluginType<LayoutBuilder> plugin = getPlugin(className);
-        final LayoutBuilder builder = createBuilder(plugin, layoutPrefix, 
props);
-        if (builder != null) {
-            return builder.parseLayout(config);
-        }
-        return null;
+        return newInstance(this.<LayoutBuilder>getPlugin(className), b -> 
b.parse(layoutElement, config));
     }
 
     public RewritePolicy parseRewritePolicy(final String className, final 
Element rewriteElement, final XmlConfiguration config) {
-        final PluginType<RewritePolicyBuilder> plugin = getPlugin(className);
-        return newInstance(plugin, b -> b.parseRewritePolicy(rewriteElement, 
config));
-    }
-
-    public RewritePolicy parseRewritePolicy(final String className, final 
String policyPrefix, final Properties props, final PropertiesConfiguration 
config) {
-        final PluginType<RewritePolicyBuilder> plugin = getPlugin(className);
-        final RewritePolicyBuilder builder = createBuilder(plugin, 
policyPrefix, props);
-        if (builder != null) {
-            return builder.parseRewritePolicy(config);
-        }
-        return null;
+        return newInstance(this.<RewritePolicyBuilder>getPlugin(className), b 
-> b.parse(rewriteElement, config));
     }
 
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
 b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/Parser.java
similarity index 62%
copy from 
log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
copy to log4j-1.2-api/src/main/java/org/apache/log4j/builders/Parser.java
index 4dffaf1..01812ef 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/Parser.java
@@ -14,24 +14,35 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-package org.apache.log4j.builders.appender;
 
-import java.util.Properties;
+package org.apache.log4j.builders;
 
-import org.apache.log4j.Appender;
-import org.apache.log4j.builders.Builder;
 import org.apache.log4j.config.PropertiesConfiguration;
 import org.apache.log4j.xml.XmlConfiguration;
 import org.w3c.dom.Element;
 
 /**
- * Define an Appender Builder.
+ * Parses DOM and properties.
+ *
+ * @param <T> The type to build.
  */
-public interface AppenderBuilder extends Builder {
+public interface Parser<T> extends Builder<T> {
 
-    Appender parseAppender(Element element, XmlConfiguration configuration);
+    /**
+     * Parses a DOM Element.
+     * 
+     * @param element the DOM Element.
+     * @param config the XML configuration.
+     * @return parse result.
+     */
+    T parse(Element element, XmlConfiguration config);
 
-    Appender parseAppender(String name, String appenderPrefix, String 
layoutPrefix, String filterPrefix,
-            Properties props, PropertiesConfiguration configuration);
+    /**
+     * Parses a PropertiesConfigurationt.
+     * 
+     * @param element the PropertiesConfiguration.
+     * @return parse result.
+     */
+    T parse(PropertiesConfiguration config);
 
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
index 4dffaf1..aacbc80 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AppenderBuilder.java
@@ -26,8 +26,10 @@ import org.w3c.dom.Element;
 
 /**
  * Define an Appender Builder.
+ *
+ * @param <T> The type to build.
  */
-public interface AppenderBuilder extends Builder {
+public interface AppenderBuilder<T extends Appender> extends Builder<T> {
 
     Appender parseAppender(Element element, XmlConfiguration configuration);
 
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
index 4398995..d61770b 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java
@@ -107,8 +107,7 @@ public class RewriteAppenderBuilder extends AbstractBuilder 
implements AppenderB
         final Filter filter = configuration.parseAppenderFilters(props, 
filterPrefix, name);
         final String policyPrefix = appenderPrefix + ".rewritePolicy";
         final String className = getProperty(policyPrefix);
-        final RewritePolicy policy = 
configuration.getBuilderManager().parseRewritePolicy(className, policyPrefix,
-                props, configuration);
+        final RewritePolicy policy = 
configuration.getBuilderManager().parse(className, policyPrefix, props, 
configuration);
         final String level = getProperty(THRESHOLD_PARAM);
         if (appenderRef == null) {
             LOGGER.warn("No appender references configured for AsyncAppender 
{}", name);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/DenyAllFilterBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/DenyAllFilterBuilder.java
index e0b28b5..b7f4c6b 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/DenyAllFilterBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/DenyAllFilterBuilder.java
@@ -33,12 +33,12 @@ import org.w3c.dom.Element;
 public class DenyAllFilterBuilder implements FilterBuilder {
 
     @Override
-    public Filter parseFilter(Element filterElement, XmlConfiguration config) {
+    public Filter parse(Element filterElement, XmlConfiguration config) {
         return new FilterWrapper(DenyAllFilter.newBuilder().build());
     }
 
     @Override
-    public Filter parseFilter(PropertiesConfiguration config) {
+    public Filter parse(PropertiesConfiguration config) {
         return new FilterWrapper(DenyAllFilter.newBuilder().build());
     }
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/FilterBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/FilterBuilder.java
index e331927..8153bdd 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/FilterBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/FilterBuilder.java
@@ -16,19 +16,12 @@
  */
 package org.apache.log4j.builders.filter;
 
-import org.apache.log4j.builders.Builder;
-import org.apache.log4j.config.PropertiesConfiguration;
+import org.apache.log4j.builders.Parser;
 import org.apache.log4j.spi.Filter;
-import org.apache.log4j.xml.XmlConfiguration;
-import org.w3c.dom.Element;
 
 /**
  * Define a Filter Builder.
  */
-public interface FilterBuilder extends Builder {
-
-    Filter parseFilter(Element element, XmlConfiguration config);
-
-    Filter parseFilter(PropertiesConfiguration config);
-
+public interface FilterBuilder extends Parser<Filter> {
+    // empty
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
index f7c1ce4..8cfe1f9 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java
@@ -38,7 +38,7 @@ import static 
org.apache.log4j.xml.XmlConfiguration.VALUE_ATTR;
  * Build a Level match filter.
  */
 @Plugin(name = "org.apache.log4j.varia.LevelMatchFilter", category = CATEGORY)
-public class LevelMatchFilterBuilder extends AbstractBuilder implements 
FilterBuilder {
+public class LevelMatchFilterBuilder extends AbstractBuilder<Filter> 
implements FilterBuilder {
 
     private static final String LEVEL = "LevelToMatch";
     private static final String ACCEPT_ON_MATCH = "AcceptOnMatch";
@@ -51,7 +51,7 @@ public class LevelMatchFilterBuilder extends AbstractBuilder 
implements FilterBu
     }
 
     @Override
-    public Filter parseFilter(Element filterElement, XmlConfiguration config) {
+    public Filter parse(Element filterElement, XmlConfiguration config) {
         final Holder<String> level = new Holder<>();
         final Holder<Boolean> acceptOnMatch = new BooleanHolder();
         forEachElement(filterElement.getElementsByTagName("param"), 
(currentElement) -> {
@@ -70,7 +70,7 @@ public class LevelMatchFilterBuilder extends AbstractBuilder 
implements FilterBu
     }
 
     @Override
-    public Filter parseFilter(PropertiesConfiguration config) {
+    public Filter parse(PropertiesConfiguration config) {
         String level = getProperty(LEVEL);
         boolean acceptOnMatch = getBooleanProperty(ACCEPT_ON_MATCH);
         return createFilter(level, acceptOnMatch);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
index 34cc475..477e325 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java
@@ -39,7 +39,7 @@ import static org.apache.log4j.xml.XmlConfiguration.*;
  * Build a Level match filter.
  */
 @Plugin(name = "org.apache.log4j.varia.LevelRangeFilter", category = CATEGORY)
-public class LevelRangeFilterBuilder extends AbstractBuilder implements 
FilterBuilder {
+public class LevelRangeFilterBuilder extends AbstractBuilder<Filter> 
implements FilterBuilder {
 
     private static final String LEVEL_MAX = "LevelMax";
     private static final String LEVEL_MIN = "LevelMin";
@@ -53,7 +53,7 @@ public class LevelRangeFilterBuilder extends AbstractBuilder 
implements FilterBu
     }
 
     @Override
-    public Filter parseFilter(Element filterElement, XmlConfiguration config) {
+    public Filter parse(Element filterElement, XmlConfiguration config) {
         final Holder<String> levelMax = new Holder<>();
         final Holder<String> levelMin = new Holder<>();
         final Holder<Boolean> acceptOnMatch = new BooleanHolder();
@@ -76,7 +76,7 @@ public class LevelRangeFilterBuilder extends AbstractBuilder 
implements FilterBu
     }
 
     @Override
-    public Filter parseFilter(PropertiesConfiguration config) {
+    public Filter parse(PropertiesConfiguration config) {
         String levelMax = getProperty(LEVEL_MAX);
         String levelMin = getProperty(LEVEL_MIN);
         boolean acceptOnMatch = getBooleanProperty(ACCEPT_ON_MATCH);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
index 2a16cf0..df19f86 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java
@@ -38,14 +38,14 @@ import static org.apache.log4j.xml.XmlConfiguration.*;
  * Build a String match filter.
  */
 @Plugin(name = "org.apache.log4j.varia.StringMatchFilter", category = CATEGORY)
-public class StringMatchFilterBuilder extends AbstractBuilder implements 
FilterBuilder {
+public class StringMatchFilterBuilder extends AbstractBuilder<Filter> 
implements FilterBuilder {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
     private static final String STRING_TO_MATCH = "StringToMatch";
     private static final String ACCEPT_ON_MATCH = "AcceptOnMatch";
 
     @Override
-    public Filter parseFilter(Element filterElement, XmlConfiguration config) {
+    public Filter parse(Element filterElement, XmlConfiguration config) {
         final Holder<Boolean> acceptOnMatch = new BooleanHolder();
         final Holder<String> text = new Holder<>();
         forEachElement(filterElement.getElementsByTagName("param"), 
(currentElement) -> {
@@ -65,7 +65,7 @@ public class StringMatchFilterBuilder extends AbstractBuilder 
implements FilterB
     }
 
     @Override
-    public Filter parseFilter(PropertiesConfiguration config) {
+    public Filter parse(PropertiesConfiguration config) {
         String text = getProperty(STRING_TO_MATCH);
         boolean acceptOnMatch = getBooleanProperty(ACCEPT_ON_MATCH);
         return createFilter(text, acceptOnMatch);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
index 860b339..3ee651b 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java
@@ -37,7 +37,7 @@ import static org.apache.log4j.xml.XmlConfiguration.*;
  * Build a Pattern Layout
  */
 @Plugin(name = "org.apache.log4j.HTMLLayout", category = CATEGORY)
-public class HtmlLayoutBuilder extends AbstractBuilder implements 
LayoutBuilder {
+public class HtmlLayoutBuilder extends AbstractBuilder<Layout> implements 
LayoutBuilder {
 
     private static final String DEFAULT_TITLE = "Log4J Log Messages";
     private static final String TITLE_PARAM = "Title";
@@ -52,7 +52,7 @@ public class HtmlLayoutBuilder extends AbstractBuilder 
implements LayoutBuilder
 
 
     @Override
-    public Layout parseLayout(Element layoutElement, XmlConfiguration config) {
+    public Layout parse(Element layoutElement, XmlConfiguration config) {
         final Holder<String> title = new Holder<>("Log4J Log Messages");
         final Holder<Boolean> locationInfo = new BooleanHolder();
         forEachElement(layoutElement.getElementsByTagName("param"), 
(currentElement) -> {
@@ -68,7 +68,7 @@ public class HtmlLayoutBuilder extends AbstractBuilder 
implements LayoutBuilder
     }
 
     @Override
-    public Layout parseLayout(PropertiesConfiguration config) {
+    public Layout parse(PropertiesConfiguration config) {
         String title = getProperty(TITLE_PARAM, DEFAULT_TITLE);
         boolean locationInfo = getBooleanProperty(LOCATION_INFO_PARAM);
         return createLayout(title, locationInfo);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/LayoutBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/LayoutBuilder.java
index 0a3ecb2..72c1763 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/LayoutBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/LayoutBuilder.java
@@ -17,17 +17,11 @@
 package org.apache.log4j.builders.layout;
 
 import org.apache.log4j.Layout;
-import org.apache.log4j.builders.Builder;
-import org.apache.log4j.config.PropertiesConfiguration;
-import org.apache.log4j.xml.XmlConfiguration;
-import org.w3c.dom.Element;
+import org.apache.log4j.builders.Parser;
 
 /**
  * Define a Layout Builder.
  */
-public interface LayoutBuilder extends Builder {
-
-    Layout parseLayout(Element element, XmlConfiguration config);
-
-    Layout parseLayout(PropertiesConfiguration config);
+public interface LayoutBuilder extends Parser<Layout> {
+    // empty
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
index 4763ab1..2e341b8 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
@@ -41,7 +41,7 @@ import org.w3c.dom.NodeList;
  */
 @Plugin(name = "org.apache.log4j.PatternLayout", category = CATEGORY)
 @PluginAliases("org.apache.log4j.EnhancedPatternLayout")
-public class PatternLayoutBuilder extends AbstractBuilder implements 
LayoutBuilder {
+public class PatternLayoutBuilder extends AbstractBuilder<Layout> implements 
LayoutBuilder {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
     private static final String PATTERN = "ConversionPattern";
@@ -54,7 +54,7 @@ public class PatternLayoutBuilder extends AbstractBuilder 
implements LayoutBuild
     }
 
     @Override
-    public Layout parseLayout(final Element layoutElement, final 
XmlConfiguration config) {
+    public Layout parse(final Element layoutElement, final XmlConfiguration 
config) {
         NodeList params = layoutElement.getElementsByTagName("param");
         final int length = params.getLength();
         String pattern = null;
@@ -74,7 +74,7 @@ public class PatternLayoutBuilder extends AbstractBuilder 
implements LayoutBuild
     }
 
     @Override
-    public Layout parseLayout(final PropertiesConfiguration config) {
+    public Layout parse(final PropertiesConfiguration config) {
         String pattern = getProperty(PATTERN);
         return createLayout(pattern, config);
     }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/SimpleLayoutBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/SimpleLayoutBuilder.java
index 906f02a..9bb0d64 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/SimpleLayoutBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/SimpleLayoutBuilder.java
@@ -35,7 +35,7 @@ import java.util.Properties;
 public class SimpleLayoutBuilder implements LayoutBuilder {
 
     @Override
-    public Layout parseLayout(Element layoutElement, XmlConfiguration config) {
+    public Layout parse(Element layoutElement, XmlConfiguration config) {
         return new LayoutWrapper(PatternLayout.newBuilder()
                 .setPattern("%level - %m%n")
                 .setConfiguration(config)
@@ -43,7 +43,7 @@ public class SimpleLayoutBuilder implements LayoutBuilder {
     }
 
     @Override
-    public Layout parseLayout(PropertiesConfiguration config) {
+    public Layout parse(PropertiesConfiguration config) {
         return new LayoutWrapper(PatternLayout.newBuilder()
                 .setPattern("%level - %m%n")
                 .setConfiguration(config)
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
index 9a57c80..d69933a 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java
@@ -38,7 +38,7 @@ import org.w3c.dom.Element;
  * Build a Pattern Layout
  */
 @Plugin(name = "org.apache.log4j.TTCCLayout", category = CATEGORY)
-public class TTCCLayoutBuilder extends AbstractBuilder implements 
LayoutBuilder {
+public class TTCCLayoutBuilder extends AbstractBuilder<Layout> implements 
LayoutBuilder {
 
     private static final String THREAD_PRINTING_PARAM = "ThreadPrinting";
     private static final String CATEGORY_PREFIXING_PARAM = "CategoryPrefixing";
@@ -54,7 +54,7 @@ public class TTCCLayoutBuilder extends AbstractBuilder 
implements LayoutBuilder
     }
 
     @Override
-    public Layout parseLayout(Element layoutElement, XmlConfiguration config) {
+    public Layout parse(Element layoutElement, XmlConfiguration config) {
         final AtomicBoolean threadPrinting = new AtomicBoolean(Boolean.TRUE);
         final AtomicBoolean categoryPrefixing = new 
AtomicBoolean(Boolean.TRUE);
         final AtomicBoolean contextPrinting = new AtomicBoolean(Boolean.TRUE);
@@ -86,7 +86,7 @@ public class TTCCLayoutBuilder extends AbstractBuilder 
implements LayoutBuilder
     }
 
     @Override
-    public Layout parseLayout(PropertiesConfiguration config) {
+    public Layout parse(PropertiesConfiguration config) {
         boolean threadPrinting = getBooleanProperty(THREAD_PRINTING_PARAM, 
true);
         boolean categoryPrefixing = 
getBooleanProperty(CATEGORY_PREFIXING_PARAM, true);
         boolean contextPrinting = getBooleanProperty(CONTEXT_PRINTING_PARAM, 
true);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
index 6577a52..6918684 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java
@@ -36,7 +36,7 @@ import org.w3c.dom.Element;
  * Build an XML Layout
  */
 @Plugin(name = "org.apache.log4j.xml.XMLLayout", category = CATEGORY)
-public class XmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder 
{
+public class XmlLayoutBuilder extends AbstractBuilder<Layout> implements 
LayoutBuilder {
 
     private static final String LOCATION_INFO = "LocationInfo";
     private static final String PROPERTIES = "Properties";
@@ -50,7 +50,7 @@ public class XmlLayoutBuilder extends AbstractBuilder 
implements LayoutBuilder {
 
 
     @Override
-    public Layout parseLayout(Element layoutElement, XmlConfiguration config) {
+    public Layout parse(Element layoutElement, XmlConfiguration config) {
         final AtomicBoolean properties = new AtomicBoolean();
         final AtomicBoolean locationInfo = new AtomicBoolean();
         forEachElement(layoutElement.getElementsByTagName(PARAM_TAG), 
currentElement -> {
@@ -64,7 +64,7 @@ public class XmlLayoutBuilder extends AbstractBuilder 
implements LayoutBuilder {
     }
 
     @Override
-    public Layout parseLayout(PropertiesConfiguration config) {
+    public Layout parse(PropertiesConfiguration config) {
         boolean properties = getBooleanProperty(PROPERTIES);
         boolean locationInfo = getBooleanProperty(LOCATION_INFO);
         return createLayout(properties, locationInfo);
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/rewrite/RewritePolicyBuilder.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/rewrite/RewritePolicyBuilder.java
index 94500ae..e83d033 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/rewrite/RewritePolicyBuilder.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/rewrite/RewritePolicyBuilder.java
@@ -16,18 +16,12 @@
  */
 package org.apache.log4j.builders.rewrite;
 
-import org.apache.log4j.builders.Builder;
-import org.apache.log4j.config.PropertiesConfiguration;
+import org.apache.log4j.builders.Parser;
 import org.apache.log4j.rewrite.RewritePolicy;
-import org.apache.log4j.xml.XmlConfiguration;
-import org.w3c.dom.Element;
 
 /**
  * Define a RewritePolicy Builder.
  */
-public interface RewritePolicyBuilder extends Builder {
-
-    RewritePolicy parseRewritePolicy(Element element, XmlConfiguration config);
-
-    RewritePolicy parseRewritePolicy(PropertiesConfiguration config);
+public interface RewritePolicyBuilder extends Parser<RewritePolicy> {
+    // empty
 }
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
index 32a523d..bedc4de 100644
--- 
a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
@@ -484,7 +484,7 @@ public class PropertiesConfiguration extends 
Log4j1Configuration {
         if (layoutClass == null) {
             return null;
         }
-        Layout layout = manager.parseLayout(layoutClass, layoutPrefix, props, 
this);
+        Layout layout = manager.parse(layoutClass, layoutPrefix, props, this);
         if (layout == null) {
             layout = buildLayout(layoutPrefix, layoutClass, appenderName, 
props);
         }
@@ -560,7 +560,7 @@ public class PropertiesConfiguration extends 
Log4j1Configuration {
             final String clazz = props.getProperty(entry.getKey());
             Filter filter = null;
             if (clazz != null) {
-                filter = manager.parseFilter(clazz, entry.getKey(), props, 
this);
+                filter = manager.parse(clazz, entry.getKey(), props, this);
                 if (filter == null) {
                     LOGGER.debug("Filter key: [{}] class: [{}] props: {}", 
entry.getKey(), clazz, entry.getValue());
                     filter = buildFilter(clazz, appenderName, 
entry.getValue());

Reply via email to