This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit a4ca6fada94eb324167e5c9116991c6341349da4 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 +++++ log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java | 5 +++++ .../org/apache/logging/log4j/core/config/AbstractConfiguration.java | 2 +- .../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 +- .../logging/log4j/core/time/internal/format/FastDatePrinter.java | 5 ++++- .../src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java | 3 ++- 15 files changed, 40 insertions(+), 13 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 84837d5..c4ce580 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 5519a56..eca106c 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/Filter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java index 1baa39b..aa8f2e0 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/Filter.java @@ -33,6 +33,11 @@ import org.apache.logging.log4j.util.EnglishEnums; public interface Filter extends LifeCycle { /** + * Empty array. + */ + Filter[] EMPTY_ARRAY = {}; + + /** * Main {@linkplain org.apache.logging.log4j.plugins.Plugin#elementType() plugin element type} for * Filter plugins. * 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 677b591..6fbbda5 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 @@ -386,7 +386,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/util/PluginBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java index 4da3fd0..05cbe87 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 @@ -55,6 +55,8 @@ import java.util.function.Function; */ public class PluginBuilder implements Builder<Object> { + private static final Field[] EMPTY_FIELD_ARRAY = {}; + private static final Logger LOGGER = StatusLogger.getLogger(); private final PluginType<?> pluginType; @@ -178,7 +180,7 @@ public class PluginBuilder implements Builder<Object> { private Object injectBuilder(final Builder<?> builder) { final Object target = builder instanceof BuilderWrapper ? ((BuilderWrapper) builder).getBuilder() : builder; final List<Field> fields = TypeUtil.getAllDeclaredFields(target.getClass()); - AccessibleObject.setAccessible(fields.toArray(new Field[0]), true); + AccessibleObject.setAccessible(fields.toArray(EMPTY_FIELD_ARRAY), true); final StringBuilder log = new StringBuilder(); // TODO: collect OptionBindingExceptions into a composite error message (ConfigurationException?) for (final Field field : fields) { 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 26a24cc..4ac1a3f 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 @@ -90,7 +90,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 4d0ea36..631d7b3 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 c3c7aef..1e4d3d8 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 @@ -48,8 +48,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); @@ -72,6 +70,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 f477f0b..66b7014 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 b190e5c..76cb1df 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.plugins.Plugin; import org.apache.logging.log4j.message.MapMessage; +import org.apache.logging.log4j.util.Strings; /** * A map-based lookup. @@ -71,7 +72,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 d3de7ee..01e221e 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 @@ -30,6 +30,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. @@ -98,7 +99,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 42f2b64..4b76875 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 @@ -260,6 +260,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. */ @@ -338,7 +341,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 d9a33c6..05b2214 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 @@ -569,7 +569,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/time/internal/format/FastDatePrinter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FastDatePrinter.java index 1597f3f..8c5b67f 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/FastDatePrinter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/time/internal/format/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; ) { @@ -722,6 +722,9 @@ public class FastDatePrinter implements DatePrinter, Serializable { * <p>Inner class defining a rule.</p> */ private interface Rule { + + Rule[] EMPTY_ARRAY = {}; + /** * Returns the estimated length of the result. * 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
