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

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 2ab5ff6  Less nesting.
2ab5ff6 is described below

commit 2ab5ff6a9322f7cc15b67d0107cf9532cdc5f8d2
Author: Gary Gregory <[email protected]>
AuthorDate: Wed Feb 3 15:08:48 2021 -0500

    Less nesting.
    
    Combine nested 'if' statement in 'else' block to 'else if'.
---
 .../apache/log4j/util/SerializationTestHelper.java |   8 +-
 .../log4j/message/ParameterizedMessage.java        |   8 +-
 .../message/ReusableParameterizedMessage.java      |  22 ++-
 .../apache/logging/log4j/AbstractLoggerTest.java   |  73 ++++----
 .../org/apache/logging/log4j/TraceLoggingTest.java |  39 ++--
 .../core/appender/rolling/RollingFileManager.java  |   6 +-
 .../logging/log4j/core/appender/routing/Route.java |   8 +-
 .../core/appender/routing/RoutingAppender.java     |  10 +-
 .../log4j/core/config/AbstractConfiguration.java   |  38 ++--
 .../logging/log4j/core/config/Configurator.java    |   6 +-
 .../logging/log4j/core/config/LoggerConfig.java    |  68 ++++---
 .../properties/PropertiesConfigurationBuilder.java |  20 +--
 .../logging/log4j/core/layout/GelfLayout.java      |   8 +-
 .../logging/log4j/core/lookup/StrSubstitutor.java  | 200 ++++++++++-----------
 .../log4j/core/pattern/MdcPatternConverter.java    |  24 ++-
 .../log4j/core/pattern/NameAbbreviator.java        |  10 +-
 .../log4j/core/tools/picocli/CommandLine.java      |   8 +-
 .../logging/log4j/core/util/WatchManager.java      |   6 +-
 .../apache/logging/dumbster/smtp/SmtpRequest.java  | 115 ++++++------
 ...RollingAppenderSizeCompressPermissionsTest.java |  12 +-
 20 files changed, 312 insertions(+), 377 deletions(-)

diff --git 
a/log4j-1.2-api/src/test/java/org/apache/log4j/util/SerializationTestHelper.java
 
b/log4j-1.2-api/src/test/java/org/apache/log4j/util/SerializationTestHelper.java
index 0576463..882a37a 100644
--- 
a/log4j-1.2-api/src/test/java/org/apache/log4j/util/SerializationTestHelper.java
+++ 
b/log4j-1.2-api/src/test/java/org/apache/log4j/util/SerializationTestHelper.java
@@ -129,11 +129,9 @@ public class SerializationTestHelper {
             for (int i = 0; i < endScan; i++) {
                 if ((skipIndex < skip.length) && (skip[skipIndex] == i)) {
                     skipIndex++;
-                } else {
-                    if (expected[i] != actual[i]) {
-                        assertEquals(
-                            "Difference at offset " + i, expected[i], 
actual[i]);
-                    }
+                } else if (expected[i] != actual[i]) {
+                    assertEquals(
+                        "Difference at offset " + i, expected[i], actual[i]);
                 }
             }
         } else {
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
index c4a1bbf..4eb396b 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
@@ -221,12 +221,10 @@ public class ParameterizedMessage implements Message, 
StringBuilderFormattable {
     public void formatTo(final StringBuilder buffer) {
         if (formattedMessage != null) {
             buffer.append(formattedMessage);
+        } else if (indices[0] < 0) {
+            ParameterFormatter.formatMessage(buffer, messagePattern, argArray, 
usedCount);
         } else {
-            if (indices[0] < 0) {
-                ParameterFormatter.formatMessage(buffer, messagePattern, 
argArray, usedCount);
-            } else {
-                ParameterFormatter.formatMessage2(buffer, messagePattern, 
argArray, usedCount, indices);
-            }
+            ParameterFormatter.formatMessage2(buffer, messagePattern, 
argArray, usedCount, indices);
         }
     }
 
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
index c206ab1..f1d1fb7 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
@@ -68,20 +68,18 @@ public class ReusableParameterizedMessage implements 
ReusableMessage, ParameterV
             result = params;
             if (emptyReplacement.length >= MAX_PARMS) {
                 params = emptyReplacement;
-            } else {
+            } else if (argCount <= emptyReplacement.length) {
                 // Bad replacement! Too small, may blow up future 10-arg 
messages.
-                if (argCount <= emptyReplacement.length) {
-                    // copy params into the specified replacement array and 
return that
-                    System.arraycopy(params, 0, emptyReplacement, 0, argCount);
-                    // Do not retain references to objects in the reusable 
params array.
-                    for (int i = 0; i < argCount; i++) {
-                        params[i] = null;
-                    }
-                    result = emptyReplacement;
-                } else {
-                    // replacement array is too small for current content and 
future content: discard it
-                    params = new Object[MAX_PARMS];
+                // copy params into the specified replacement array and return 
that
+                System.arraycopy(params, 0, emptyReplacement, 0, argCount);
+                // Do not retain references to objects in the reusable params 
array.
+                for (int i = 0; i < argCount; i++) {
+                    params[i] = null;
                 }
+                result = emptyReplacement;
+            } else {
+                // replacement array is too small for current content and 
future content: discard it
+                params = new Object[MAX_PARMS];
             }
         } else {
             // The returned array will be reused by the caller in future 
swapParameter() calls.
diff --git 
a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java 
b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
index 26e9790..02df0ed 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
@@ -988,40 +988,33 @@ public class AbstractLoggerTest {
                 if (currentEvent.markerName != null) {
                     fail("Incorrect marker. Expected " + 
currentEvent.markerName + ", actual is null");
                 }
+            } else if (currentEvent.markerName == null) {
+                fail("Incorrect marker. Expected null. Actual is " + 
marker.getName());
             } else {
-                if (currentEvent.markerName == null) {
-                    fail("Incorrect marker. Expected null. Actual is " + 
marker.getName());
-                } else {
-                    assertEquals(currentEvent.markerName, marker.getName(),
-                            "Incorrect marker. Expected " + 
currentEvent.markerName + ", actual " + marker.getName());
-                }
+                assertEquals(currentEvent.markerName, marker.getName(),
+                    "Incorrect marker. Expected " + currentEvent.markerName + 
", actual " + marker.getName());
             }
             if (data == null) {
                 if (currentEvent.data != null) {
                     fail("Incorrect message. Expected " + currentEvent.data + 
", actual is null");
                 }
+            } else if (currentEvent.data == null) {
+                fail("Incorrect message. Expected null. Actual is " + 
data.getFormattedMessage());
             } else {
-                if (currentEvent.data == null) {
-                    fail("Incorrect message. Expected null. Actual is " + 
data.getFormattedMessage());
-                } else {
-                    assertTrue(
-                            
data.getClass().isAssignableFrom(currentEvent.data.getClass()),
-                            "Incorrect message type. Expected " + 
currentEvent.data + ", actual " + data);
-                    assertEquals(currentEvent.data.getFormattedMessage(), 
data.getFormattedMessage(),
-                            "Incorrect message. Expected " + 
currentEvent.data.getFormattedMessage() + ", actual " +
-                                    data.getFormattedMessage());
-                }
+                
assertTrue(data.getClass().isAssignableFrom(currentEvent.data.getClass()),
+                    "Incorrect message type. Expected " + currentEvent.data + 
", actual " + data);
+                assertEquals(currentEvent.data.getFormattedMessage(), 
data.getFormattedMessage(),
+                    "Incorrect message. Expected " + 
currentEvent.data.getFormattedMessage() + ", actual "
+                        + data.getFormattedMessage());
             }
             if (t == null) {
                 if (currentEvent.t != null) {
                     fail("Incorrect Throwable. Expected " + currentEvent.t + 
", actual is null");
                 }
+            } else if (currentEvent.t == null) {
+                fail("Incorrect Throwable. Expected null. Actual is " + t);
             } else {
-                if (currentEvent.t == null) {
-                    fail("Incorrect Throwable. Expected null. Actual is " + t);
-                } else {
-                    assertEquals(currentEvent.t, t, "Incorrect Throwable. 
Expected " + currentEvent.t + ", actual " + t);
-                }
+                assertEquals(currentEvent.t, t, "Incorrect Throwable. Expected 
" + currentEvent.t + ", actual " + t);
             }
             return true;
         }
@@ -1123,46 +1116,40 @@ public class AbstractLoggerTest {
         }
 
         @Override
-        public void logMessage(final String fqcn, final Level level, final 
Marker marker, final Message data, final Throwable t) {
+        public void logMessage(final String fqcn, final Level level, final 
Marker marker, final Message data,
+            final Throwable t) {
             assertEquals(level, currentLevel, "Incorrect Level. Expected " + 
currentLevel + ", actual " + level);
             if (marker == null) {
                 if (currentEvent.markerName != null) {
                     fail("Incorrect marker. Expected " + 
currentEvent.markerName + ", actual is null");
                 }
+            } else if (currentEvent.markerName == null) {
+                fail("Incorrect marker. Expected null. Actual is " + 
marker.getName());
             } else {
-                if (currentEvent.markerName == null) {
-                    fail("Incorrect marker. Expected null. Actual is " + 
marker.getName());
-                } else {
-                    assertEquals(currentEvent.markerName, marker.getName(),
-                            "Incorrect marker. Expected " + 
currentEvent.markerName + ", actual " + marker.getName());
-                }
+                assertEquals(currentEvent.markerName, marker.getName(),
+                    "Incorrect marker. Expected " + currentEvent.markerName + 
", actual " + marker.getName());
             }
             if (data == null) {
                 if (currentEvent.data != null) {
                     fail("Incorrect message. Expected " + currentEvent.data + 
", actual is null");
                 }
+            } else if (currentEvent.data == null) {
+                fail("Incorrect message. Expected null. Actual is " + 
data.getFormattedMessage());
             } else {
-                if (currentEvent.data == null) {
-                    fail("Incorrect message. Expected null. Actual is " + 
data.getFormattedMessage());
-                } else {
-                    assertTrue(
-                            
data.getClass().isAssignableFrom(currentEvent.data.getClass()),
-                            "Incorrect message type. Expected " + 
currentEvent.data + ", actual " + data);
-                    assertEquals(currentEvent.data.getFormattedMessage(), 
data.getFormattedMessage(),
-                            "Incorrect message. Expected " + 
currentEvent.data.getFormattedMessage() + ", actual " +
-                                    data.getFormattedMessage());
-                }
+                
assertTrue(data.getClass().isAssignableFrom(currentEvent.data.getClass()),
+                    "Incorrect message type. Expected " + currentEvent.data + 
", actual " + data);
+                assertEquals(currentEvent.data.getFormattedMessage(), 
data.getFormattedMessage(),
+                    "Incorrect message. Expected " + 
currentEvent.data.getFormattedMessage() + ", actual "
+                        + data.getFormattedMessage());
             }
             if (t == null) {
                 if (currentEvent.t != null) {
                     fail("Incorrect Throwable. Expected " + currentEvent.t + 
", actual is null");
                 }
+            } else if (currentEvent.t == null) {
+                fail("Incorrect Throwable. Expected null. Actual is " + t);
             } else {
-                if (currentEvent.t == null) {
-                    fail("Incorrect Throwable. Expected null. Actual is " + t);
-                } else {
-                    assertEquals(currentEvent.t, t, "Incorrect Throwable. 
Expected " + currentEvent.t + ", actual " + t);
-                }
+                assertEquals(currentEvent.t, t, "Incorrect Throwable. Expected 
" + currentEvent.t + ", actual " + t);
             }
         }
     }
diff --git 
a/log4j-api/src/test/java/org/apache/logging/log4j/TraceLoggingTest.java 
b/log4j-api/src/test/java/org/apache/logging/log4j/TraceLoggingTest.java
index 82cc261..4aac63e 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/TraceLoggingTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/TraceLoggingTest.java
@@ -217,47 +217,40 @@ public class TraceLoggingTest extends AbstractLogger {
     }
 
     @Override
-    public void logMessage(final String fqcn, final Level level, final Marker 
marker, final Message data, final Throwable t) {
+    public void logMessage(final String fqcn, final Level level, final Marker 
marker, final Message data,
+        final Throwable t) {
         assertEquals(level, currentLevel, "Incorrect Level. Expected " + 
currentLevel + ", actual " + level);
         if (marker == null) {
             if (currentEvent.markerName != null) {
                 fail("Incorrect marker. Expected " + currentEvent.markerName + 
", actual is null");
             }
+        } else if (currentEvent.markerName == null) {
+            fail("Incorrect marker. Expected null. Actual is " + 
marker.getName());
         } else {
-            if (currentEvent.markerName == null) {
-                fail("Incorrect marker. Expected null. Actual is " + 
marker.getName());
-            } else {
-                assertEquals(currentEvent.markerName, marker.getName(),
-                        "Incorrect marker. Expected " + 
currentEvent.markerName + ", actual " +
-                                marker.getName());
-            }
+            assertEquals(currentEvent.markerName, marker.getName(),
+                "Incorrect marker. Expected " + currentEvent.markerName + ", 
actual " + marker.getName());
         }
         if (data == null) {
             if (currentEvent.data != null) {
                 fail("Incorrect message. Expected " + currentEvent.data + ", 
actual is null");
             }
+        } else if (currentEvent.data == null) {
+            fail("Incorrect message. Expected null. Actual is " + 
data.getFormattedMessage());
         } else {
-            if (currentEvent.data == null) {
-                fail("Incorrect message. Expected null. Actual is " + 
data.getFormattedMessage());
-            } else {
-                assertTrue(
-                        
data.getClass().isAssignableFrom(currentEvent.data.getClass()),
-                        "Incorrect message type. Expected " + 
currentEvent.data + ", actual " + data);
-                assertEquals(currentEvent.data.getFormattedMessage(), 
data.getFormattedMessage(),
-                        "Incorrect message. Expected " + 
currentEvent.data.getFormattedMessage() + ", actual " +
-                                data.getFormattedMessage());
-            }
+            
assertTrue(data.getClass().isAssignableFrom(currentEvent.data.getClass()),
+                "Incorrect message type. Expected " + currentEvent.data + ", 
actual " + data);
+            assertEquals(currentEvent.data.getFormattedMessage(), 
data.getFormattedMessage(),
+                "Incorrect message. Expected " + 
currentEvent.data.getFormattedMessage() + ", actual "
+                    + data.getFormattedMessage());
         }
         if (t == null) {
             if (currentEvent.t != null) {
                 fail("Incorrect Throwable. Expected " + currentEvent.t + ", 
actual is null");
             }
+        } else if (currentEvent.t == null) {
+            fail("Incorrect Throwable. Expected null. Actual is " + t);
         } else {
-            if (currentEvent.t == null) {
-                fail("Incorrect Throwable. Expected null. Actual is " + t);
-            } else {
-                assertEquals(currentEvent.t, t, "Incorrect Throwable. Expected 
" + currentEvent.t + ", actual " + t);
-            }
+            assertEquals(currentEvent.t, t, "Incorrect Throwable. Expected " + 
currentEvent.t + ", actual " + t);
         }
     }
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 7d7811d..39c35ed 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -382,10 +382,8 @@ public class RollingFileManager extends FileManager {
             if (policy instanceof LifeCycle) {
                 ((LifeCycle) policy).stop();
             }
-        } else {
-            if (triggeringPolicy instanceof LifeCycle) {
-                ((LifeCycle) triggeringPolicy).stop();
-            }
+        } else if (triggeringPolicy instanceof LifeCycle) {
+            ((LifeCycle) triggeringPolicy).stop();
         }
     }
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Route.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Route.java
index 1a92b66..a61e1b5 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Route.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/Route.java
@@ -103,11 +103,9 @@ public final class Route {
                 LOGGER.error("A route cannot be configured with an appender 
reference and an appender definition");
                 return null;
             }
-        } else {
-            if (appenderRef == null) {
-                LOGGER.error("A route must specify an appender reference or an 
appender definition");
-                return null;
-            }
+        } else if (appenderRef == null) {
+            LOGGER.error("A route must specify an appender reference or an 
appender definition");
+            return null;
         }
         return new Route(node, appenderRef, key);
     }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index f639777..1093ab3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -337,13 +337,11 @@ public final class RoutingAppender extends 
AbstractAppender {
             // Don't attempt to stop the appender in a synchronized block, 
since it may block flushing events
             // to disk.
             control.tryStopAppender();
+        } else if (referencedAppenders.containsKey(key)) {
+            LOGGER.debug("Route {} using an appender reference may not be 
removed because " +
+                    "the appender may be used outside of the RoutingAppender", 
key);
         } else {
-            if (referencedAppenders.containsKey(key)) {
-                LOGGER.debug("Route {} using an appender reference may not be 
removed because " +
-                        "the appender may be used outside of the 
RoutingAppender", key);
-            } else {
-                LOGGER.debug("Route with {} key already deleted", key);
-            }
+            LOGGER.debug("Route with {} key already deleted", key);
         }
     }
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 9cae60d..2243f9d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -246,22 +246,21 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
     protected void initializeWatchers(Reconfigurable reconfigurable, 
ConfigurationSource configSource,
         int monitorIntervalSeconds) {
         if (configSource.getFile() != null || configSource.getURL() != null) {
-               if (monitorIntervalSeconds > 0) {
-                               
watchManager.setIntervalSeconds(monitorIntervalSeconds);
-                               if (configSource.getFile() != null) {
-                                       final Source cfgSource = new 
Source(configSource);
-                                       final long lastModifeid = 
configSource.getFile().lastModified();
-                                       final ConfigurationFileWatcher watcher 
= new ConfigurationFileWatcher(this, reconfigurable,
-                                               listeners, lastModifeid);
-                                       watchManager.watch(cfgSource, watcher);
-                               } else {
-                                       if (configSource.getURL() != null) {
-                                               monitorSource(reconfigurable, 
configSource);
-                                       }
-                               }
-                       } else if (watchManager.hasEventListeners() && 
configSource.getURL() != null && monitorIntervalSeconds >= 0) {
-                               monitorSource(reconfigurable, configSource);
-                       }
+            if (monitorIntervalSeconds > 0) {
+                watchManager.setIntervalSeconds(monitorIntervalSeconds);
+                if (configSource.getFile() != null) {
+                    final Source cfgSource = new Source(configSource);
+                    final long lastModifeid = 
configSource.getFile().lastModified();
+                    final ConfigurationFileWatcher watcher = new 
ConfigurationFileWatcher(this, reconfigurable,
+                        listeners, lastModifeid);
+                    watchManager.watch(cfgSource, watcher);
+                } else if (configSource.getURL() != null) {
+                    monitorSource(reconfigurable, configSource);
+                }
+            } else if (watchManager.hasEventListeners() && 
configSource.getURL() != null
+                && monitorIntervalSeconds >= 0) {
+                monitorSource(reconfigurable, configSource);
+            }
         }
     }
 
@@ -558,10 +557,9 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
                     if (script instanceof ScriptRef) {
                         LOGGER.error("Script reference to {} not added. 
Scripts definition cannot contain script references",
                                 script.getName());
-                    } else {
-                        if (scriptManager != null) {
-                            scriptManager.addScript(script);
-                        }}
+                    } else if (scriptManager != null) {
+                        scriptManager.addScript(script);
+                    }
                 }
             } else if (child.getName().equalsIgnoreCase("Appenders")) {
                 appenders = child.getObject();
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
index e5aea28..a83bd73 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
@@ -366,10 +366,8 @@ public final class Configurator {
         final LoggerContext loggerContext = LoggerContext.getContext(false);
         if (Strings.isEmpty(loggerName)) {
             setRootLevel(level);
-        } else {
-            if (setLevel(loggerName, level, loggerContext.getConfiguration())) 
{
-                loggerContext.updateLoggers();
-            }
+        } else if (setLevel(loggerName, level, 
loggerContext.getConfiguration())) {
+            loggerContext.updateLoggers();
         }
     }
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
index be54d42..53913cb 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
@@ -384,24 +384,22 @@ public class LoggerConfig extends AbstractFilterable 
implements LocationAware {
         List<Property> props = null;
         if (!propertiesRequireLookup) {
             props = properties;
-        } else {
-            if (properties != null) {
-                props = new ArrayList<>(properties.size());
-                final LogEvent event = Log4jLogEvent.newBuilder()
-                        .setMessage(data)
-                        .setMarker(marker)
-                        .setLevel(level)
-                        .setLoggerName(loggerName)
-                        .setLoggerFqcn(fqcn)
-                        .setThrown(t)
-                        .build();
-                for (int i = 0; i < properties.size(); i++) {
-                    final Property prop = properties.get(i);
-                    final String value = prop.isValueNeedsLookup() // since 
LOG4J2-1575
-                            ? config.getStrSubstitutor().replace(event, 
prop.getValue()) //
-                            : prop.getValue();
-                    props.add(Property.createProperty(prop.getName(), value));
-                }
+        } else if (properties != null) {
+            props = new ArrayList<>(properties.size());
+            final LogEvent event = Log4jLogEvent.newBuilder()
+                    .setMessage(data)
+                    .setMarker(marker)
+                    .setLevel(level)
+                    .setLoggerName(loggerName)
+                    .setLoggerFqcn(fqcn)
+                    .setThrown(t)
+                    .build();
+            for (int i = 0; i < properties.size(); i++) {
+                final Property prop = properties.get(i);
+                final String value = prop.isValueNeedsLookup() // since 
LOG4J2-1575
+                        ? config.getStrSubstitutor().replace(event, 
prop.getValue()) //
+                        : prop.getValue();
+                props.add(Property.createProperty(prop.getName(), value));
             }
         }
         final LogEvent logEvent = logEventFactory instanceof 
LocationAwareLogEventFactory ?
@@ -433,24 +431,22 @@ public class LoggerConfig extends AbstractFilterable 
implements LocationAware {
         List<Property> props = null;
         if (!propertiesRequireLookup) {
             props = properties;
-        } else {
-            if (properties != null) {
-                props = new ArrayList<>(properties.size());
-                final LogEvent event = Log4jLogEvent.newBuilder()
-                    .setMessage(data)
-                    .setMarker(marker)
-                    .setLevel(level)
-                    .setLoggerName(loggerName)
-                    .setLoggerFqcn(fqcn)
-                    .setThrown(t)
-                    .build();
-                for (int i = 0; i < properties.size(); i++) {
-                    final Property prop = properties.get(i);
-                    final String value = prop.isValueNeedsLookup() // since 
LOG4J2-1575
-                        ? config.getStrSubstitutor().replace(event, 
prop.getValue()) //
-                        : prop.getValue();
-                    props.add(Property.createProperty(prop.getName(), value));
-                }
+        } else if (properties != null) {
+            props = new ArrayList<>(properties.size());
+            final LogEvent event = Log4jLogEvent.newBuilder()
+                .setMessage(data)
+                .setMarker(marker)
+                .setLevel(level)
+                .setLoggerName(loggerName)
+                .setLoggerFqcn(fqcn)
+                .setThrown(t)
+                .build();
+            for (int i = 0; i < properties.size(); i++) {
+                final Property prop = properties.get(i);
+                final String value = prop.isValueNeedsLookup() // since 
LOG4J2-1575
+                    ? config.getStrSubstitutor().replace(event, 
prop.getValue()) //
+                    : prop.getValue();
+                props.add(Property.createProperty(prop.getName(), value));
             }
         }
         final LogEvent logEvent = logEventFactory instanceof 
LocationAwareLogEventFactory ?
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
index 0a35a1e..45a783d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
@@ -270,13 +270,11 @@ public class PropertiesConfigurationBuilder extends 
ConfigurationBuilderFactory
             } else {
                 throw new ConfigurationException("Unknown Logger type " + type 
+ " for Logger " + name);
             }
+        } else if (location != null) {
+            includeLocation = Boolean.parseBoolean(location);
+            loggerBuilder = builder.newLogger(name, level, includeLocation);
         } else {
-            if (location != null) {
-                includeLocation = Boolean.parseBoolean(location);
-                loggerBuilder = builder.newLogger(name, level, 
includeLocation);
-            } else {
-                loggerBuilder = builder.newLogger(name, level);
-            }
+            loggerBuilder = builder.newLogger(name, level);
         }
         addLoggersToComponent(loggerBuilder, properties);
         addFiltersToComponent(loggerBuilder, properties);
@@ -304,13 +302,11 @@ public class PropertiesConfigurationBuilder extends 
ConfigurationBuilderFactory
             } else {
                 throw new ConfigurationException("Unknown Logger type for root 
logger" + type);
             }
+        } else if (location != null) {
+            includeLocation = Boolean.parseBoolean(location);
+            loggerBuilder = builder.newRootLogger(level, includeLocation);
         } else {
-            if (location != null) {
-                includeLocation = Boolean.parseBoolean(location);
-                loggerBuilder = builder.newRootLogger(level, includeLocation);
-            } else {
-                loggerBuilder = builder.newRootLogger(level);
-            }
+            loggerBuilder = builder.newRootLogger(level);
         }
         addLoggersToComponent(loggerBuilder, properties);
         return addFiltersToComponent(loggerBuilder, properties);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
index 8b01fc2..83a2550 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
@@ -509,12 +509,10 @@ public final class GelfLayout extends 
AbstractStringLayout {
                 final StringBuilder messageBuffer = getMessageStringBuilder();
                 layout.serialize(event, messageBuffer);
                 JsonUtils.quoteAsString(messageBuffer, builder);
+            } else if (includeStacktrace) {
+                JsonUtils.quoteAsString(formatThrowable(event.getThrown()), 
builder);
             } else {
-                if (includeStacktrace) {
-                    
JsonUtils.quoteAsString(formatThrowable(event.getThrown()), builder);
-                } else {
-                    JsonUtils.quoteAsString(event.getThrown().toString(), 
builder);
-                }
+                JsonUtils.quoteAsString(event.getThrown().toString(), builder);
             }
             builder.append(QC);
         }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
index 33fc535..8faf6f2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
@@ -943,122 +943,116 @@ public class StrSubstitutor implements 
ConfigurationAware {
             final int startMatchLen = prefixMatcher.isMatch(chars, pos, 
offset, bufEnd);
             if (startMatchLen == 0) {
                 pos++;
+            } else // found variable start marker
+            if (pos > offset && chars[pos - 1] == escape) {
+                // escaped
+                buf.deleteCharAt(pos - 1);
+                chars = getChars(buf);
+                lengthChange--;
+                altered = true;
+                bufEnd--;
             } else {
-                // found variable start marker
-                if (pos > offset && chars[pos - 1] == escape) {
-                    // escaped
-                    buf.deleteCharAt(pos - 1);
-                    chars = getChars(buf);
-                    lengthChange--;
-                    altered = true;
-                    bufEnd--;
-                } else {
-                    // find suffix
-                    final int startPos = pos;
-                    pos += startMatchLen;
-                    int endMatchLen = 0;
-                    int nestedVarCount = 0;
-                    while (pos < bufEnd) {
-                        if (substitutionInVariablesEnabled
-                                && (endMatchLen = prefixMatcher.isMatch(chars, 
pos, offset, bufEnd)) != 0) {
-                            // found a nested variable start
-                            nestedVarCount++;
-                            pos += endMatchLen;
-                            continue;
-                        }
+                // find suffix
+                final int startPos = pos;
+                pos += startMatchLen;
+                int endMatchLen = 0;
+                int nestedVarCount = 0;
+                while (pos < bufEnd) {
+                    if (substitutionInVariablesEnabled
+                            && (endMatchLen = prefixMatcher.isMatch(chars, 
pos, offset, bufEnd)) != 0) {
+                        // found a nested variable start
+                        nestedVarCount++;
+                        pos += endMatchLen;
+                        continue;
+                    }
 
-                        endMatchLen = suffixMatcher.isMatch(chars, pos, 
offset, bufEnd);
-                        if (endMatchLen == 0) {
-                            pos++;
-                        } else {
-                            // found variable end marker
-                            if (nestedVarCount == 0) {
-                                String varNameExpr = new String(chars, 
startPos + startMatchLen, pos - startPos - startMatchLen);
-                                if (substitutionInVariablesEnabled) {
-                                    final StringBuilder bufName = new 
StringBuilder(varNameExpr);
-                                    substitute(event, bufName, 0, 
bufName.length());
-                                    varNameExpr = bufName.toString();
-                                }
-                                pos += endMatchLen;
-                                final int endPos = pos;
-
-                                String varName = varNameExpr;
-                                String varDefaultValue = null;
-
-                                if (valueDelimiterMatcher != null) {
-                                    final char [] varNameExprChars = 
varNameExpr.toCharArray();
-                                    int valueDelimiterMatchLen = 0;
-                                    for (int i = 0; i < 
varNameExprChars.length; i++) {
-                                        // if there's any nested variable when 
nested variable substitution disabled, then stop resolving name and default 
value.
-                                        if (!substitutionInVariablesEnabled
-                                                && 
prefixMatcher.isMatch(varNameExprChars, i, i, varNameExprChars.length) != 0) {
-                                            break;
-                                        }
-                                        if (valueEscapeDelimiterMatcher != 
null) {
-                                            int matchLen = 
valueEscapeDelimiterMatcher.isMatch(varNameExprChars, i);
-                                            if (matchLen != 0) {
-                                                String varNamePrefix = 
varNameExpr.substring(0, i) + Interpolator.PREFIX_SEPARATOR;
-                                                varName = varNamePrefix + 
varNameExpr.substring(i + matchLen - 1);
-                                                for (int j = i + matchLen; j < 
varNameExprChars.length; ++j){
-                                                    if 
((valueDelimiterMatchLen = valueDelimiterMatcher.isMatch(varNameExprChars, j)) 
!= 0) {
-                                                        varName = 
varNamePrefix + varNameExpr.substring(i + matchLen, j);
-                                                        varDefaultValue = 
varNameExpr.substring(j + valueDelimiterMatchLen);
-                                                        break;
-                                                    }
-                                                }
-                                                break;
-                                            } else {
-                                                if ((valueDelimiterMatchLen = 
valueDelimiterMatcher.isMatch(varNameExprChars, i)) != 0) {
-                                                    varName = 
varNameExpr.substring(0, i);
-                                                    varDefaultValue = 
varNameExpr.substring(i + valueDelimiterMatchLen);
+                    endMatchLen = suffixMatcher.isMatch(chars, pos, offset, 
bufEnd);
+                    if (endMatchLen == 0) {
+                        pos++;
+                    } else {
+                        // found variable end marker
+                        if (nestedVarCount == 0) {
+                            String varNameExpr = new String(chars, startPos + 
startMatchLen, pos - startPos - startMatchLen);
+                            if (substitutionInVariablesEnabled) {
+                                final StringBuilder bufName = new 
StringBuilder(varNameExpr);
+                                substitute(event, bufName, 0, 
bufName.length());
+                                varNameExpr = bufName.toString();
+                            }
+                            pos += endMatchLen;
+                            final int endPos = pos;
+
+                            String varName = varNameExpr;
+                            String varDefaultValue = null;
+
+                            if (valueDelimiterMatcher != null) {
+                                final char [] varNameExprChars = 
varNameExpr.toCharArray();
+                                int valueDelimiterMatchLen = 0;
+                                for (int i = 0; i < varNameExprChars.length; 
i++) {
+                                    // if there's any nested variable when 
nested variable substitution disabled, then stop resolving name and default 
value.
+                                    if (!substitutionInVariablesEnabled
+                                            && 
prefixMatcher.isMatch(varNameExprChars, i, i, varNameExprChars.length) != 0) {
+                                        break;
+                                    }
+                                    if (valueEscapeDelimiterMatcher != null) {
+                                        int matchLen = 
valueEscapeDelimiterMatcher.isMatch(varNameExprChars, i);
+                                        if (matchLen != 0) {
+                                            String varNamePrefix = 
varNameExpr.substring(0, i) + Interpolator.PREFIX_SEPARATOR;
+                                            varName = varNamePrefix + 
varNameExpr.substring(i + matchLen - 1);
+                                            for (int j = i + matchLen; j < 
varNameExprChars.length; ++j){
+                                                if ((valueDelimiterMatchLen = 
valueDelimiterMatcher.isMatch(varNameExprChars, j)) != 0) {
+                                                    varName = varNamePrefix + 
varNameExpr.substring(i + matchLen, j);
+                                                    varDefaultValue = 
varNameExpr.substring(j + valueDelimiterMatchLen);
                                                     break;
                                                 }
                                             }
-                                        } else {
-                                            if ((valueDelimiterMatchLen = 
valueDelimiterMatcher.isMatch(varNameExprChars, i)) != 0) {
-                                                varName = 
varNameExpr.substring(0, i);
-                                                varDefaultValue = 
varNameExpr.substring(i + valueDelimiterMatchLen);
-                                                break;
-                                            }
+                                            break;
+                                        } else if ((valueDelimiterMatchLen = 
valueDelimiterMatcher.isMatch(varNameExprChars, i)) != 0) {
+                                            varName = varNameExpr.substring(0, 
i);
+                                            varDefaultValue = 
varNameExpr.substring(i + valueDelimiterMatchLen);
+                                            break;
                                         }
+                                    } else if ((valueDelimiterMatchLen = 
valueDelimiterMatcher.isMatch(varNameExprChars, i)) != 0) {
+                                        varName = varNameExpr.substring(0, i);
+                                        varDefaultValue = 
varNameExpr.substring(i + valueDelimiterMatchLen);
+                                        break;
                                     }
                                 }
+                            }
 
-                                // on the first call initialize priorVariables
-                                if (priorVariables == null) {
-                                    priorVariables = new ArrayList<>();
-                                    priorVariables.add(new String(chars, 
offset, length + lengthChange));
-                                }
+                            // on the first call initialize priorVariables
+                            if (priorVariables == null) {
+                                priorVariables = new ArrayList<>();
+                                priorVariables.add(new String(chars, offset, 
length + lengthChange));
+                            }
 
-                                // handle cyclic substitution
-                                checkCyclicSubstitution(varName, 
priorVariables);
-                                priorVariables.add(varName);
+                            // handle cyclic substitution
+                            checkCyclicSubstitution(varName, priorVariables);
+                            priorVariables.add(varName);
 
-                                // resolve the variable
-                                String varValue = resolveVariable(event, 
varName, buf, startPos, endPos);
-                                if (varValue == null) {
-                                    varValue = varDefaultValue;
-                                }
-                                if (varValue != null) {
-                                    // recursive replace
-                                    final int varLen = varValue.length();
-                                    buf.replace(startPos, endPos, varValue);
-                                    altered = true;
-                                    int change = substitute(event, buf, 
startPos, varLen, priorVariables);
-                                    change = change + (varLen - (endPos - 
startPos));
-                                    pos += change;
-                                    bufEnd += change;
-                                    lengthChange += change;
-                                    chars = getChars(buf); // in case buffer 
was altered
-                                }
-
-                                // remove variable from the cyclic stack
-                                priorVariables.remove(priorVariables.size() - 
1);
-                                break;
+                            // resolve the variable
+                            String varValue = resolveVariable(event, varName, 
buf, startPos, endPos);
+                            if (varValue == null) {
+                                varValue = varDefaultValue;
                             }
-                            nestedVarCount--;
-                            pos += endMatchLen;
+                            if (varValue != null) {
+                                // recursive replace
+                                final int varLen = varValue.length();
+                                buf.replace(startPos, endPos, varValue);
+                                altered = true;
+                                int change = substitute(event, buf, startPos, 
varLen, priorVariables);
+                                change = change + (varLen - (endPos - 
startPos));
+                                pos += change;
+                                bufEnd += change;
+                                lengthChange += change;
+                                chars = getChars(buf); // in case buffer was 
altered
+                            }
+
+                            // remove variable from the cyclic stack
+                            priorVariables.remove(priorVariables.size() - 1);
+                            break;
                         }
+                        nestedVarCount--;
+                        pos += endMatchLen;
                     }
                 }
             }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
index 01bbd90..451bac7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
@@ -98,19 +98,17 @@ public final class MdcPatternConverter extends 
LogEventPatternConverter {
                 return;
             }
             appendFully(contextData, toAppendTo);
-        } else {
-            if (keys != null) {
-                if (contextData == null || contextData.isEmpty()) {
-                    toAppendTo.append("{}");
-                    return;
-                }
-                appendSelectedKeys(keys, contextData, toAppendTo);
-            } else if (contextData != null){
-                // otherwise they just want a single key output
-                final Object value = contextData.getValue(key);
-                if (value != null) {
-                    StringBuilders.appendValue(toAppendTo, value);
-                }
+        } else if (keys != null) {
+            if (contextData == null || contextData.isEmpty()) {
+                toAppendTo.append("{}");
+                return;
+            }
+            appendSelectedKeys(keys, contextData, toAppendTo);
+        } else if (contextData != null){
+            // otherwise they just want a single key output
+            final Object value = contextData.getValue(key);
+            if (value != null) {
+                StringBuilders.appendValue(toAppendTo, value);
             }
         }
     }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
index c65835c..9c3d13c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
@@ -93,13 +93,11 @@ public abstract class NameAbbreviator {
                 if (trimmed.charAt(pos) == '*') {
                     charCount = Integer.MAX_VALUE;
                     ellipsisPos++;
+                } else if (trimmed.charAt(pos) >= '0' && trimmed.charAt(pos) 
<= '9') {
+                    charCount = trimmed.charAt(pos) - '0';
+                    ellipsisPos++;
                 } else {
-                    if (trimmed.charAt(pos) >= '0' && trimmed.charAt(pos) <= 
'9') {
-                        charCount = trimmed.charAt(pos) - '0';
-                        ellipsisPos++;
-                    } else {
-                        charCount = 0;
-                    }
+                    charCount = 0;
                 }
 
                 ellipsis = '\0';
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
index 06b879f..8dc4670 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
@@ -2055,12 +2055,8 @@ public class CommandLine {
                         args.push(optionParam);
                         arg = key;
                         if (tracer.isDebug()) {tracer.debug("Separated '%s' 
option from '%s' option parameter%n", key, optionParam);}
-                    } else {
-                        if (tracer.isDebug()) {tracer.debug("'%s' contains 
separator '%s' but '%s' is not a known option%n", arg, separator, key);}
-                    }
-                } else {
-                    if (tracer.isDebug()) {tracer.debug("'%s' cannot be 
separated into <option>%s<option-parameter>%n", arg, separator);}
-                }
+                    } else if (tracer.isDebug()) {tracer.debug("'%s' contains 
separator '%s' but '%s' is not a known option%n", arg, separator, key);}
+                } else if (tracer.isDebug()) {tracer.debug("'%s' cannot be 
separated into <option>%s<option-parameter>%n", arg, separator);}
                 if (optionName2Field.containsKey(arg)) {
                     processStandaloneOption(required, initialized, arg, args, 
paramAttachedToOption);
                 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
index b2e5549..52bf5a6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
@@ -138,10 +138,8 @@ public class WatchManager extends AbstractLifeCycle {
         if (!isStarted()) {
             if (this.intervalSeconds > 0 && intervalSeconds == 0) {
                 scheduler.decrementScheduledItems();
-            } else {
-                if (this.intervalSeconds == 0 && intervalSeconds > 0) {
-                    scheduler.incrementScheduledItems();
-                }
+            } else if (this.intervalSeconds == 0 && intervalSeconds > 0) {
+                scheduler.incrementScheduledItems();
             }
             this.intervalSeconds = intervalSeconds;
         }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java 
b/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java
index d877292..6f895ab 100644
--- a/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java
+++ b/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java
@@ -91,67 +91,66 @@ public class SmtpRequest {
             } else {
                 response = new SmtpResponse(500, "Command not recognized", 
this.state);
             }
-        } else { // Stateful commands
-            if (SmtpActionType.CONNECT == action) {
-                if (SmtpState.CONNECT == state) {
-                    response = new SmtpResponse(220, "localhost Dumbster SMTP 
service ready", SmtpState.GREET);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.EHLO == action) {
-                if (SmtpState.GREET == state) {
-                    response = new SmtpResponse(250, "OK", SmtpState.MAIL);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.MAIL == action) {
-                if (SmtpState.MAIL == state || SmtpState.QUIT == state) {
-                    response = new SmtpResponse(250, "OK", SmtpState.RCPT);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.RCPT == action) {
-                if (SmtpState.RCPT == state) {
-                    response = new SmtpResponse(250, "OK", this.state);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.DATA == action) {
-                if (SmtpState.RCPT == state) {
-                    response = new SmtpResponse(354, "Start mail input; end 
with <CRLF>.<CRLF>", SmtpState.DATA_HDR);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.UNRECOG == action) {
-                if (SmtpState.DATA_HDR == state || SmtpState.DATA_BODY == 
state) {
-                    response = new SmtpResponse(-1, Strings.EMPTY, this.state);
-                } else {
-                    response = new SmtpResponse(500, "Command not recognized", 
this.state);
-                }
-            } else if (SmtpActionType.DATA_END == action) {
-                if (SmtpState.DATA_HDR == state || SmtpState.DATA_BODY == 
state) {
-                    response = new SmtpResponse(250, "OK", SmtpState.QUIT);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.BLANK_LINE == action) {
-                if (SmtpState.DATA_HDR == state) {
-                    response = new SmtpResponse(-1, Strings.EMPTY, 
SmtpState.DATA_BODY);
-                } else if (SmtpState.DATA_BODY == state) {
-                    response = new SmtpResponse(-1, Strings.EMPTY, this.state);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
-            } else if (SmtpActionType.QUIT == action) {
-                if (SmtpState.QUIT == state) {
-                    response = new SmtpResponse(221, "localhost Dumbster 
service closing transmission channel",
-                        SmtpState.CONNECT);
-                } else {
-                    response = new SmtpResponse(503, "Bad sequence of 
commands: " + action, this.state);
-                }
+        // Stateful commands
+        } else if (SmtpActionType.CONNECT == action) {
+            if (SmtpState.CONNECT == state) {
+                response = new SmtpResponse(220, "localhost Dumbster SMTP 
service ready", SmtpState.GREET);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.EHLO == action) {
+            if (SmtpState.GREET == state) {
+                response = new SmtpResponse(250, "OK", SmtpState.MAIL);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.MAIL == action) {
+            if (SmtpState.MAIL == state || SmtpState.QUIT == state) {
+                response = new SmtpResponse(250, "OK", SmtpState.RCPT);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.RCPT == action) {
+            if (SmtpState.RCPT == state) {
+                response = new SmtpResponse(250, "OK", this.state);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.DATA == action) {
+            if (SmtpState.RCPT == state) {
+                response = new SmtpResponse(354, "Start mail input; end with 
<CRLF>.<CRLF>", SmtpState.DATA_HDR);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.UNRECOG == action) {
+            if (SmtpState.DATA_HDR == state || SmtpState.DATA_BODY == state) {
+                response = new SmtpResponse(-1, Strings.EMPTY, this.state);
             } else {
                 response = new SmtpResponse(500, "Command not recognized", 
this.state);
             }
+        } else if (SmtpActionType.DATA_END == action) {
+            if (SmtpState.DATA_HDR == state || SmtpState.DATA_BODY == state) {
+                response = new SmtpResponse(250, "OK", SmtpState.QUIT);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.BLANK_LINE == action) {
+            if (SmtpState.DATA_HDR == state) {
+                response = new SmtpResponse(-1, Strings.EMPTY, 
SmtpState.DATA_BODY);
+            } else if (SmtpState.DATA_BODY == state) {
+                response = new SmtpResponse(-1, Strings.EMPTY, this.state);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else if (SmtpActionType.QUIT == action) {
+            if (SmtpState.QUIT == state) {
+                response = new SmtpResponse(221, "localhost Dumbster service 
closing transmission channel",
+                    SmtpState.CONNECT);
+            } else {
+                response = new SmtpResponse(503, "Bad sequence of commands: " 
+ action, this.state);
+            }
+        } else {
+            response = new SmtpResponse(500, "Command not recognized", 
this.state);
         }
         return response;
     }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderSizeCompressPermissionsTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderSizeCompressPermissionsTest.java
index 403b399..f65ab3b 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderSizeCompressPermissionsTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderSizeCompressPermissionsTest.java
@@ -90,14 +90,12 @@ public class RollingAppenderSizeCompressPermissionsTest {
                     assertEquals("r--r--r--",
                             
PosixFilePermissions.toString(Files.getPosixFilePermissions(file.toPath())));
                 }
+            } else if (file.getName().startsWith("test1")) {
+                assertEquals("rw-------",
+                        
PosixFilePermissions.toString(Files.getPosixFilePermissions(file.toPath())));
             } else {
-                if (file.getName().startsWith("test1")) {
-                    assertEquals("rw-------",
-                            
PosixFilePermissions.toString(Files.getPosixFilePermissions(file.toPath())));
-                } else {
-                    assertEquals("rwx------",
-                            
PosixFilePermissions.toString(Files.getPosixFilePermissions(file.toPath())));
-                }
+                assertEquals("rwx------",
+                        
PosixFilePermissions.toString(Files.getPosixFilePermissions(file.toPath())));
             }
         }
         assertTrue("Files not rolled : " + files.length, files.length > 2);

Reply via email to