You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/19 17:39:30 UTC
[logging-log4j2] 09/10: Reuse empty array constants.
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 <ga...@gmail.com>
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