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

commit 543c441cdd590af61b7cadc5674c739afc0637e5
Author: Gary Gregory <[email protected]>
AuthorDate: Wed Jan 19 09:00:34 2022 -0500

    Reuse empty array constants.
    
    Refactor empty array constants.
---
 .../src/main/java/org/apache/logging/log4j/spi/LoggerContext.java    | 5 +++++
 log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java | 5 +++++
 .../org/apache/logging/log4j/core/config/AbstractConfiguration.java  | 2 +-
 .../logging/log4j/core/config/plugins/processor/PluginProcessor.java | 4 +++-
 .../apache/logging/log4j/core/config/plugins/util/PluginBuilder.java | 4 +++-
 .../java/org/apache/logging/log4j/core/filter/CompositeFilter.java   | 2 +-
 .../org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java   | 3 ++-
 .../main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java | 4 ++--
 .../org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java     | 2 +-
 .../main/java/org/apache/logging/log4j/core/lookup/MapLookup.java    | 3 ++-
 .../apache/logging/log4j/core/pattern/MessagePatternConverter.java   | 3 ++-
 .../java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java  | 5 ++++-
 .../java/org/apache/logging/log4j/core/pattern/PatternParser.java    | 2 +-
 .../org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java | 5 ++++-
 .../src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java  | 2 +-
 .../src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java   | 3 ++-
 .../core/appender/db/jpa/converter/ThrowableAttributeConverter.java  | 4 +++-
 17 files changed, 42 insertions(+), 16 deletions(-)

diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
index 29be5ac..1638569 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
@@ -25,6 +25,11 @@ import org.apache.logging.log4j.message.MessageFactory;
 public interface LoggerContext {
 
     /**
+     * Empty array.
+     */
+    LoggerContext[] EMPTY_ARRAY = {};
+
+    /**
      * Gets the anchor for some other context, such as a ClassLoader or 
ServletContext.
      * @return The external context.
      */
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java
index 91a0932..1ed1582 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java
@@ -43,6 +43,11 @@ public interface Appender extends LifeCycle {
      * @since 2.6
      */
     String ELEMENT_TYPE = "appender";
+    
+    /**
+     * Empty array.
+     */
+    Appender[] EMPTY_ARRAY = {};
 
     /**
      * Logs a LogEvent using whatever logic this Appender wishes to use. It is 
typically recommended to use a
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 5e4f566..41a072e 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
@@ -380,7 +380,7 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
         root.getReliabilityStrategy().beforeStopAppenders();
 
         // Stop the appenders in reverse order in case they still have 
activity.
-        final Appender[] array = appenders.values().toArray(new 
Appender[appenders.size()]);
+        final Appender[] array = 
appenders.values().toArray(Appender.EMPTY_ARRAY);
         final List<Appender> async = getAsyncAppenders(array);
         if (!async.isEmpty()) {
             // LOG4J2-511, LOG4J2-392 stop AsyncAppenders first
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
index 4ee6917..b1ca407 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
@@ -52,6 +52,8 @@ public class PluginProcessor extends AbstractProcessor {
 
     // TODO: this could be made more abstract to allow for compile-time and 
run-time plugin processing
 
+    private static final Element[] EMPTY_ELEMENT_ARRAY = {};
+
     /**
      * The location of the plugin cache data file. This file is written to by 
this processor, and read from by
      * {@link org.apache.logging.log4j.core.config.plugins.util.PluginManager}.
@@ -77,7 +79,7 @@ public class PluginProcessor extends AbstractProcessor {
                 return false;
             }
             collectPlugins(elements);
-            writeCacheFile(elements.toArray(new Element[elements.size()]));
+            writeCacheFile(elements.toArray(EMPTY_ELEMENT_ARRAY));
             messager.printMessage(Kind.NOTE, "Annotations processed");
             return true;
         } catch (final Exception ex) {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
index 69623d3..b5788c1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
@@ -52,6 +52,8 @@ import org.apache.logging.log4j.util.StringBuilders;
  */
 public class PluginBuilder implements Builder<Object> {
 
+    private static final Field[] EMPTY_FIELD_ARRAY = new Field[] {};
+
     private static final Logger LOGGER = StatusLogger.getLogger();
 
     private final PluginType<?> pluginType;
@@ -162,7 +164,7 @@ public class PluginBuilder implements Builder<Object> {
 
     private void injectFields(final Builder<?> builder) throws 
IllegalAccessException {
         final List<Field> fields = 
TypeUtil.getAllDeclaredFields(builder.getClass());
-        AccessibleObject.setAccessible(fields.toArray(new Field[] {}), true);
+        AccessibleObject.setAccessible(fields.toArray(EMPTY_FIELD_ARRAY), 
true);
         final StringBuilder log = new StringBuilder();
         boolean invalid = false;
         String reason = "";
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
index b942bbb..6286876 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
@@ -89,7 +89,7 @@ public final class CompositeFilter extends AbstractLifeCycle 
implements Iterable
         } else {
             filterList.remove(filter);
         }
-        return new CompositeFilter(filterList.toArray(new 
Filter[this.filters.length - 1]));
+        return new CompositeFilter(filterList.toArray(Filter.EMPTY_ARRAY));
     }
 
     @Override
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
index b45ba19..08f6d33 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
@@ -25,6 +25,7 @@ import java.util.Objects;
 import org.apache.logging.log4j.util.BiConsumer;
 import org.apache.logging.log4j.util.ReadOnlyStringMap;
 import org.apache.logging.log4j.util.StringMap;
+import org.apache.logging.log4j.util.Strings;
 import org.apache.logging.log4j.util.TriConsumer;
 
 /**
@@ -91,7 +92,7 @@ public class JdkMapAdapterStringMap implements StringMap {
 
     private String[] getSortedKeys() {
         if (sortedKeys == null) {
-            sortedKeys = map.keySet().toArray(new String[map.size()]);
+            sortedKeys = map.keySet().toArray(Strings.EMPTY_ARRAY);
             Arrays.sort(sortedKeys, NULL_FIRST_COMPARATOR);
         }
         return sortedKeys;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
index bd10224..c8940f6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
@@ -49,8 +49,6 @@ import org.apache.logging.log4j.util.Strings;
  */
 public class ThrowableProxy implements Serializable {
 
-    static final ThrowableProxy[] EMPTY_ARRAY = {};
-
     private static final char EOL = '\n';
 
     private static final String EOL_STR = String.valueOf(EOL);
@@ -73,6 +71,8 @@ public class ThrowableProxy implements Serializable {
 
     private final transient Throwable throwable;
 
+    static final ThrowableProxy[] EMPTY_ARRAY = {};
+
     /**
      * For JSON and XML IO via Jackson.
      */
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
index 955bdd7..84e2fd1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
@@ -138,7 +138,7 @@ class ThrowableProxyHelper {
                     proxies.add(new ThrowableProxy(candidate, 
suppressedVisited));
                 }
             }
-            return proxies.toArray(new ThrowableProxy[proxies.size()]);
+            return proxies.toArray(ThrowableProxy.EMPTY_ARRAY);
         } catch (final Exception e) {
             StatusLogger.getLogger().error(e);
         }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
index a7f815d..34ed17c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.message.MapMessage;
+import org.apache.logging.log4j.util.Strings;
 
 /**
  * A map-based lookup.
@@ -102,7 +103,7 @@ public class MapLookup implements StrLookup {
             return null;
         }
         final int size = args.size();
-        return initMap(args.toArray(new String[size]), newMap(size));
+        return initMap(args.toArray(Strings.EMPTY_ARRAY), newMap(size));
     }
 
     static Map<String, String> toMap(final String[] args) {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
index 6bdd56f..41222c6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
@@ -31,6 +31,7 @@ import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.MultiFormatStringBuilderFormattable;
 import org.apache.logging.log4j.util.PerformanceSensitive;
 import org.apache.logging.log4j.util.StringBuilderFormattable;
+import org.apache.logging.log4j.util.Strings;
 
 /**
  * Returns the event's rendered message in a StringBuilder.
@@ -99,7 +100,7 @@ public class MessagePatternConverter extends 
LogEventPatternConverter {
                 results.add(option);
             }
         }
-        return results.toArray(new String[0]);
+        return results.toArray(Strings.EMPTY_ARRAY);
     }
 
     @Override
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 921a99e..318e3ff 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
@@ -258,6 +258,9 @@ public abstract class NameAbbreviator {
      * Fragment of an pattern abbreviator.
      */
     private static final class PatternAbbreviatorFragment {
+        
+        static final PatternAbbreviatorFragment[] EMPTY_ARRAY = {};
+
         /**
          * Count of initial characters of element to output.
          */
@@ -336,7 +339,7 @@ public abstract class NameAbbreviator {
                     "fragments must have at least one element");
             }
 
-            this.fragments = fragments.toArray(new 
PatternAbbreviatorFragment[0]);
+            this.fragments = 
fragments.toArray(PatternAbbreviatorFragment.EMPTY_ARRAY);
         }
 
         /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
index 9e66441..dc77f87 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
@@ -570,7 +570,7 @@ public final class PatternParser {
             boolean errors = false;
             for (final Class<?> clazz : parmTypes) {
                 if (clazz.isArray() && 
clazz.getName().equals("[Ljava.lang.String;")) {
-                    final String[] optionsArray = options.toArray(new 
String[options.size()]);
+                    final String[] optionsArray = 
options.toArray(Strings.EMPTY_ARRAY);
                     parms[i] = optionsArray;
                 } else if (clazz.isAssignableFrom(Configuration.class)) {
                     parms[i] = config;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
index a5ab486..06c4981 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
@@ -164,7 +164,7 @@ public class FastDatePrinter implements DatePrinter, 
Serializable {
      */
     private void init() {
         final List<Rule> rulesList = parsePattern();
-        mRules = rulesList.toArray(new Rule[rulesList.size()]);
+        mRules = rulesList.toArray(Rule.EMPTY_ARRAY);
 
         int len = 0;
         for (int i=mRules.length; --i >= 0; ) {
@@ -737,6 +737,9 @@ public class FastDatePrinter implements DatePrinter, 
Serializable {
      * <p>Inner class defining a rule.</p>
      */
     private interface Rule {
+        
+        static final Rule[] EMPTY_ARRAY = {};
+
         /**
          * Returns the estimated length of the result.
          *
diff --git 
a/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java 
b/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
index 93e38d1..ebc3cf5 100644
--- a/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
+++ b/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
@@ -88,7 +88,7 @@ public class SmtpMessage {
         if (values == null) {
             return Strings.EMPTY_ARRAY;
         }
-        return values.toArray(new String[values.size()]);
+        return values.toArray(Strings.EMPTY_ARRAY);
     }
 
     /**
diff --git 
a/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java 
b/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java
index 6a318a4..615bb77 100644
--- a/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java
+++ b/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogConfigurationException;
 import org.apache.commons.logging.LogFactory;
 import org.apache.logging.log4j.spi.LoggerAdapter;
+import org.apache.logging.log4j.util.Strings;
 
 /**
  * Log4j binding for Commons Logging.
@@ -47,7 +48,7 @@ public class LogFactoryImpl extends LogFactory {
 
     @Override
     public String[] getAttributeNames() {
-        return attributes.keySet().toArray(new String[attributes.size()]);
+        return attributes.keySet().toArray(Strings.EMPTY_ARRAY);
     }
 
     @Override
diff --git 
a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
 
b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
index bbec319..50afb94 100644
--- 
a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
+++ 
b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
@@ -35,6 +35,8 @@ import org.apache.logging.log4j.util.Strings;
  */
 @Converter(autoApply = false)
 public class ThrowableAttributeConverter implements 
AttributeConverter<Throwable, String> {
+    private static final StackTraceElement[] EMPTY_STACK_TRACE_ELEMENT_ARRAY = 
new StackTraceElement[0];
+
     private static final int CAUSED_BY_STRING_LENGTH = 10;
 
     private static final Field THROWABLE_CAUSE;
@@ -118,7 +120,7 @@ public class ThrowableAttributeConverter implements 
AttributeConverter<Throwable
         }
 
         return this.getThrowable(throwableClassName, message, cause,
-                stackTrace.toArray(new StackTraceElement[stackTrace.size()]));
+                stackTrace.toArray(EMPTY_STACK_TRACE_ELEMENT_ARRAY));
     }
 
     private Throwable getThrowable(final String throwableClassName, final 
String message, final Throwable cause,

Reply via email to