Repository: logging-log4j2
Updated Branches:
  refs/heads/master e33e950d7 -> 2e2b2d9bb


LOG4J2-2002 Avoid null attribute values in DefaultConfigurationBuilder


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2e2b2d9b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2e2b2d9b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2e2b2d9b

Branch: refs/heads/master
Commit: 2e2b2d9bb1cd20d35df2b1fa4ffc8ea8c5825b49
Parents: e33e950
Author: Mikael Ståldal <mik...@staldal.nu>
Authored: Sat Jan 6 18:40:24 2018 +0100
Committer: Mikael Ståldal <mik...@staldal.nu>
Committed: Sat Jan 6 18:40:24 2018 +0100

----------------------------------------------------------------------
 .../builder/api/ConfigurationBuilder.java       | 58 ++++++++++++++++++++
 .../impl/DefaultConfigurationBuilder.java       | 39 +++++++++++++
 .../impl/DefaultLoggerComponentBuilder.java     | 16 ++++--
 .../impl/DefaultRootLoggerComponentBuilder.java | 16 ++++--
 .../builder/ConfigurationBuilderTest.java       |  5 ++
 src/changes/changes.xml                         |  3 +
 6 files changed, 129 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
index c88cb09..e10f292 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java
@@ -134,6 +134,22 @@ public interface ConfigurationBuilder<T extends 
Configuration> extends Builder<T
      */
     AppenderRefComponentBuilder newAppenderRef(String ref);
 
+
+    /**
+     * Returns a builder for creating Async Loggers.
+     * @param name The name of the Logger.
+     * @return A new LoggerComponentBuilder.
+     */
+    LoggerComponentBuilder newAsyncLogger(String name);
+
+    /**
+     * Returns a builder for creating Async Loggers.
+     * @param name The name of the Logger.
+     * @param includeLocation If true include location information.
+     * @return A new LoggerComponentBuilder.
+     */
+    LoggerComponentBuilder newAsyncLogger(String name, boolean 
includeLocation);
+
     /**
      * Returns a builder for creating Async Loggers.
      * @param name The name of the Logger.
@@ -170,6 +186,20 @@ public interface ConfigurationBuilder<T extends 
Configuration> extends Builder<T
 
     /**
      * Returns a builder for creating the async root Logger.
+     * @return A new RootLoggerComponentBuilder.
+     */
+    RootLoggerComponentBuilder newAsyncRootLogger();
+
+
+    /**
+     * Returns a builder for creating the async root Logger.
+     * @param includeLocation If true include location information.
+     * @return A new RootLoggerComponentBuilder.
+     */
+    RootLoggerComponentBuilder newAsyncRootLogger(boolean includeLocation);
+
+    /**
+     * Returns a builder for creating the async root Logger.
      * @param level The logging Level to be assigned to the root Logger.
      * @return A new RootLoggerComponentBuilder.
      */
@@ -279,6 +309,21 @@ public interface ConfigurationBuilder<T extends 
Configuration> extends Builder<T
     /**
      * Returns a builder for creating Loggers.
      * @param name The name of the Logger.
+     * @return A new LoggerComponentBuilder.
+     */
+    LoggerComponentBuilder newLogger(String name);
+
+    /**
+     * Returns a builder for creating Loggers.
+     * @param name The name of the Logger.
+     * @param includeLocation If true include location information.
+     * @return A new LoggerComponentBuilder.
+     */
+    LoggerComponentBuilder newLogger(String name, boolean includeLocation);
+
+    /**
+     * Returns a builder for creating Loggers.
+     * @param name The name of the Logger.
      * @param level The logging Level to be assigned to the Logger.
      * @return A new LoggerComponentBuilder.
      */
@@ -312,6 +357,19 @@ public interface ConfigurationBuilder<T extends 
Configuration> extends Builder<T
 
     /**
      * Returns a builder for creating the root Logger.
+     * @return A new RootLoggerComponentBuilder.
+     */
+    RootLoggerComponentBuilder newRootLogger();
+
+    /**
+     * Returns a builder for creating the root Logger.
+     * @param includeLocation If true include location information.
+     * @return A new RootLoggerComponentBuilder.
+     */
+    RootLoggerComponentBuilder newRootLogger(boolean includeLocation);
+
+    /**
+     * Returns a builder for creating the root Logger.
      * @param level The logging Level to be assigned to the root Logger.
      * @return A new RootLoggerComponentBuilder.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
index 472ac3d..1559b01 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
@@ -356,6 +356,16 @@ public class DefaultConfigurationBuilder<T extends 
BuiltConfiguration> implement
     }
 
     @Override
+    public LoggerComponentBuilder newAsyncLogger(String name) {
+        return new DefaultLoggerComponentBuilder(this, name, null, 
"AsyncLogger");
+    }
+
+    @Override
+    public LoggerComponentBuilder newAsyncLogger(String name, boolean 
includeLocation) {
+        return new DefaultLoggerComponentBuilder(this, name, null, 
"AsyncLogger", includeLocation);
+    }
+
+    @Override
     public LoggerComponentBuilder newAsyncLogger(final String name, final 
Level level) {
         return new DefaultLoggerComponentBuilder(this, name, level.toString(), 
"AsyncLogger");
     }
@@ -376,6 +386,16 @@ public class DefaultConfigurationBuilder<T extends 
BuiltConfiguration> implement
     }
 
     @Override
+    public RootLoggerComponentBuilder newAsyncRootLogger() {
+        return new DefaultRootLoggerComponentBuilder(this, "AsyncRoot");
+    }
+
+    @Override
+    public RootLoggerComponentBuilder newAsyncRootLogger(boolean 
includeLocation) {
+        return new DefaultRootLoggerComponentBuilder(this, null, "AsyncRoot", 
includeLocation);
+    }
+
+    @Override
     public RootLoggerComponentBuilder newAsyncRootLogger(final Level level) {
         return new DefaultRootLoggerComponentBuilder(this, level.toString(), 
"AsyncRoot");
     }
@@ -443,6 +463,15 @@ public class DefaultConfigurationBuilder<T extends 
BuiltConfiguration> implement
         return new DefaultLayoutComponentBuilder(this, type);
     }
 
+    @Override
+    public LoggerComponentBuilder newLogger(String name) {
+        return new DefaultLoggerComponentBuilder(this, name, null);
+    }
+
+    @Override
+    public LoggerComponentBuilder newLogger(String name, boolean 
includeLocation) {
+        return new DefaultLoggerComponentBuilder(this, name, null, 
includeLocation);
+    }
 
     @Override
     public LoggerComponentBuilder newLogger(final String name, final Level 
level) {
@@ -465,6 +494,16 @@ public class DefaultConfigurationBuilder<T extends 
BuiltConfiguration> implement
     }
 
     @Override
+    public RootLoggerComponentBuilder newRootLogger() {
+        return new DefaultRootLoggerComponentBuilder(this, null);
+    }
+
+    @Override
+    public RootLoggerComponentBuilder newRootLogger(boolean includeLocation) {
+        return new DefaultRootLoggerComponentBuilder(this, null, 
includeLocation);
+    }
+
+    @Override
     public RootLoggerComponentBuilder newRootLogger(final Level level) {
         return new DefaultRootLoggerComponentBuilder(this, level.toString());
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java
index 891e795..b982a9a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java
@@ -36,7 +36,9 @@ class DefaultLoggerComponentBuilder extends 
DefaultComponentAndConfigurationBuil
     public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? 
extends Configuration> builder, final String name,
             final String level) {
         super(builder, name, "Logger");
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
     }
 
     /**
@@ -49,7 +51,9 @@ class DefaultLoggerComponentBuilder extends 
DefaultComponentAndConfigurationBuil
     public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? 
extends Configuration> builder, final String name,
             final String level, final boolean includeLocation) {
         super(builder, name, "Logger");
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
         addAttribute("includeLocation", includeLocation);
     }
 
@@ -63,7 +67,9 @@ class DefaultLoggerComponentBuilder extends 
DefaultComponentAndConfigurationBuil
     public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? 
extends Configuration> builder, final String name,
             final String level, final String type) {
         super(builder, name, type);
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
     }
 
     /**
@@ -77,7 +83,9 @@ class DefaultLoggerComponentBuilder extends 
DefaultComponentAndConfigurationBuil
     public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? 
extends Configuration> builder, final String name,
             final String level, final String type, final boolean 
includeLocation) {
         super(builder, name, type);
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
         addAttribute("includeLocation", includeLocation);
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java
index dcf0b9b..76b112f 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java
@@ -35,7 +35,9 @@ class DefaultRootLoggerComponentBuilder extends 
DefaultComponentAndConfiguration
     public DefaultRootLoggerComponentBuilder(final 
DefaultConfigurationBuilder<? extends Configuration> builder,
             final String level) {
         super(builder, "", "Root");
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
     }
 
     /**
@@ -47,7 +49,9 @@ class DefaultRootLoggerComponentBuilder extends 
DefaultComponentAndConfiguration
     public DefaultRootLoggerComponentBuilder(final 
DefaultConfigurationBuilder<? extends Configuration> builder,
             final String level, final boolean includeLocation) {
         super(builder, "", "Root");
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
         addAttribute("includeLocation", includeLocation);
     }
 
@@ -60,7 +64,9 @@ class DefaultRootLoggerComponentBuilder extends 
DefaultComponentAndConfiguration
     public DefaultRootLoggerComponentBuilder(final 
DefaultConfigurationBuilder<? extends Configuration> builder,
             final String level, final String type) {
         super(builder, "", type);
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
     }
 
 
@@ -73,7 +79,9 @@ class DefaultRootLoggerComponentBuilder extends 
DefaultComponentAndConfiguration
     public DefaultRootLoggerComponentBuilder(final 
DefaultConfigurationBuilder<? extends Configuration> builder,
             final String level, final String type, final boolean 
includeLocation) {
         super(builder, "", type);
-        addAttribute("level", level);
+        if (level != null) {
+            addAttribute("level", level);
+        }
         addAttribute("includeLocation", includeLocation);
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
index 7ac91e5..7026848 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java
@@ -60,6 +60,8 @@ public class ConfigurationBuilderTest {
         builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG, 
true).
                     add(builder.newAppenderRef("Stdout")).
                     addAttribute("additivity", false));
+        builder.add(builder.newLogger("org.apache.logging.log4j.core").
+                    add(builder.newAppenderRef("Stdout")));
         
builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout")));
 
         builder.addProperty("MyKey", "MyValue");
@@ -96,6 +98,9 @@ public class ConfigurationBuilderTest {
                 INDENT + INDENT + "<Logger name=\"org.apache.logging.log4j\" 
level=\"DEBUG\" includeLocation=\"true\" additivity=\"false\">" + EOL +
                 INDENT + INDENT + INDENT + "<AppenderRef ref=\"Stdout\"/>" + 
EOL +
                 INDENT + INDENT + "</Logger>" + EOL +
+                INDENT + INDENT + "<Logger 
name=\"org.apache.logging.log4j.core\">" + EOL +
+                INDENT + INDENT + INDENT + "<AppenderRef ref=\"Stdout\"/>" + 
EOL +
+                INDENT + INDENT + "</Logger>" + EOL +
                 INDENT + INDENT + "<Root level=\"ERROR\">" + EOL +
                 INDENT + INDENT + INDENT + "<AppenderRef ref=\"Stdout\"/>" + 
EOL +
                 INDENT + INDENT + "</Root>" + EOL +

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 4727548..0f48c06 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -31,6 +31,9 @@
          - "remove" - Removed
     -->
     <release version="2.10.1" date="2017-xx-xx" description="GA Release 
2.10.1">
+      <action issue="LOG4J2-2002" dev="mikes" type="fix" due-to="Paul 
Burrowes">
+        Avoid null attribute values in DefaultConfigurationBuilder.
+      </action>
       <action issue="LOG4J2-2175" dev="mikes" type="fix" due-to="Behrang 
Saeedzadeh">
         Fix typo in Property Substitution docs.
       </action>

Reply via email to