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/02/21 13:11:13 UTC
[logging-log4j2] branch release-2.x updated: Trim whitespace before parsing a String into an Integer.
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 c33646f Trim whitespace before parsing a String into an Integer.
c33646f is described below
commit c33646f61850619c756797122f4fc4c53f7013f1
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Feb 21 08:11:09 2022 -0500
Trim whitespace before parsing a String into an Integer.
---
.../org/apache/logging/log4j/message/StructuredDataId.java | 2 +-
.../java/org/apache/logging/log4j/util/PropertiesUtil.java | 2 +-
.../src/main/java/org/apache/logging/log4j/util/Unbox.java | 2 +-
.../apache/logging/log4j/core/appender/SmtpAppender.java | 7 ++++---
.../log4j/core/appender/mom/kafka/KafkaManager.java | 3 ++-
.../core/appender/rolling/AbstractRolloverStrategy.java | 3 ++-
.../core/appender/rolling/DefaultRolloverStrategy.java | 2 +-
.../core/appender/rolling/DirectWriteRolloverStrategy.java | 2 +-
.../org/apache/logging/log4j/core/async/DisruptorUtil.java | 2 +-
.../log4j/core/async/ThreadNameCachingStrategy.java | 3 ++-
.../config/builder/impl/DefaultConfigurationBuilder.java | 3 ++-
.../log4j/core/config/composite/DefaultMergeStrategy.java | 5 +++--
.../logging/log4j/core/config/json/JsonConfiguration.java | 10 ++++++----
.../config/properties/PropertiesConfigurationBuilder.java | 4 ++--
.../logging/log4j/core/config/xml/XmlConfiguration.java | 4 +++-
.../logging/log4j/core/impl/ThrowableFormatOptions.java | 3 ++-
.../core/jackson/Log4jStackTraceElementDeserializer.java | 4 +++-
.../org/apache/logging/log4j/core/layout/LoggerFields.java | 3 ++-
.../logging/log4j/core/pattern/LevelPatternConverter.java | 3 ++-
.../apache/logging/log4j/core/pattern/NameAbbreviator.java | 3 ++-
.../logging/log4j/core/pattern/RepeatPatternConverter.java | 3 ++-
.../java/org/apache/logging/log4j/core/tools/Generate.java | 4 +++-
.../logging/log4j/core/tools/picocli/CommandLine.java | 14 ++++++++------
.../org/apache/logging/log4j/core/util/CronExpression.java | 8 ++++----
.../java/org/apache/logging/log4j/core/util/Integers.java | 5 ++++-
.../apache/logging/log4j/core/util/OptionConverter.java | 4 ++--
.../logging/log4j/core/util/datetime/FastDateParser.java | 4 +++-
.../logging/log4j/core/appender/FileAppenderTest.java | 3 ++-
.../appender/rolling/RollingAppenderDeleteScriptTest.java | 3 ++-
.../logging/log4j/core/async/perftest/PerfTestDriver.java | 7 ++++---
.../log4j/core/async/perftest/ResponseTimeTest.java | 3 ++-
.../logging/log4j/core/layout/Rfc5424LayoutTest.java | 12 ++++++++----
.../log4j/core/net/ssl/TlsSyslogInputStreamReader.java | 4 +++-
.../log4j/core/pattern/ThrowablePatternConverterTest.java | 9 ++++++---
.../logging/log4j/flume/appender/FlumeAppenderTest.java | 5 +++--
.../log4j/flume/appender/FlumePersistentAppenderTest.java | 7 ++++---
.../db/jpa/converter/InstantAttributeConverter.java | 9 +++++----
.../jpa/converter/StackTraceElementAttributeConverter.java | 3 ++-
.../log4j/layout/template/json/util/RecyclerFactories.java | 11 ++++++-----
.../log4j/layout/template/json/util/JsonReaderTest.java | 9 +++++----
.../apache/logging/log4j/mongodb3/MongoDb3TestRule.java | 3 ++-
.../apache/logging/log4j/mongodb4/MongoDb4TestRule.java | 3 ++-
.../logging/log4j/samples/app/LoggingController.java | 3 ++-
.../org/apache/logging/log4j/spring/boot/SpringLookup.java | 9 +++++----
src/changes/changes.xml | 3 +++
45 files changed, 135 insertions(+), 83 deletions(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataId.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataId.java
index 674bd35..902645d 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataId.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/StructuredDataId.java
@@ -110,7 +110,7 @@ public class StructuredDataId implements Serializable, StringBuilderFormattable
if (index > 0) {
this.name = name.substring(0, index);
- this.enterpriseNumber = Integer.parseInt(name.substring(index + 1));
+ this.enterpriseNumber = Integer.parseInt(name.substring(index + 1).trim());
} else {
this.name = name;
this.enterpriseNumber = RESERVED;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
index 4275a3c..2a69548 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
@@ -242,7 +242,7 @@ public final class PropertiesUtil {
final String prop = getStringProperty(name);
if (prop != null) {
try {
- return Integer.parseInt(prop);
+ return Integer.parseInt(prop.trim());
} catch (final Exception ignored) {
// ignore
}
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java
index bb59d46..b93b0f0 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Unbox.java
@@ -131,7 +131,7 @@ public class Unbox {
final String userPreferredRBSize = PropertiesUtil.getProperties().getStringProperty(propertyName,
String.valueOf(RINGBUFFER_MIN_SIZE));
try {
- int size = Integer.parseInt(userPreferredRBSize);
+ int size = Integer.parseInt(userPreferredRBSize.trim());
if (size < RINGBUFFER_MIN_SIZE) {
size = RINGBUFFER_MIN_SIZE;
LOGGER.warn("Invalid {} {}, using minimum size {}.", propertyName, userPreferredRBSize,
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
index 8fca6ff..7b0ed6c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
@@ -17,6 +17,8 @@
package org.apache.logging.log4j.core.appender;
+import java.io.Serializable;
+
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Core;
import org.apache.logging.log4j.core.Filter;
@@ -38,8 +40,7 @@ import org.apache.logging.log4j.core.layout.HtmlLayout;
import org.apache.logging.log4j.core.net.SmtpManager;
import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
import org.apache.logging.log4j.core.util.Booleans;
-
-import java.io.Serializable;
+import org.apache.logging.log4j.core.util.Integers;
/**
* Send an e-mail when a specific logging event occurs, typically on errors or
@@ -308,7 +309,7 @@ public final class SmtpAppender extends AbstractAppender {
final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
final int smtpPort = AbstractAppender.parseInt(smtpPortStr, 0);
final boolean isSmtpDebug = Boolean.parseBoolean(smtpDebug);
- final int bufferSize = bufferSizeStr == null ? DEFAULT_BUFFER_SIZE : Integer.parseInt(bufferSizeStr);
+ final int bufferSize = bufferSizeStr == null ? DEFAULT_BUFFER_SIZE : Integers.parseInt(bufferSizeStr);
if (layout == null) {
layout = HtmlLayout.createDefaultLayout();
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
index cd37d75..14a1dff 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
@@ -32,6 +32,7 @@ import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.AbstractManager;
import org.apache.logging.log4j.core.appender.ManagerFactory;
import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Log4jThread;
public class KafkaManager extends AbstractManager {
@@ -72,7 +73,7 @@ public class KafkaManager extends AbstractManager {
this.key = key;
- this.timeoutMillis = Integer.parseInt(config.getProperty("timeout.ms", DEFAULT_TIMEOUT_MILLIS));
+ this.timeoutMillis = Integers.parseInt(config.getProperty("timeout.ms", DEFAULT_TIMEOUT_MILLIS));
}
@Override
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
index e623b93..d16f778 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
@@ -34,6 +34,7 @@ import org.apache.logging.log4j.core.appender.rolling.action.Action;
import org.apache.logging.log4j.core.appender.rolling.action.CompositeAction;
import org.apache.logging.log4j.core.lookup.StrSubstitutor;
import org.apache.logging.log4j.core.pattern.NotANumber;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.status.StatusLogger;
/**
@@ -140,7 +141,7 @@ public abstract class AbstractRolloverStrategy implements RolloverStrategy {
final Matcher matcher = pattern.matcher(entry.toFile().getName());
if (matcher.matches() && !entry.equals(current)) {
try {
- final Integer index = Integer.parseInt(matcher.group(1));
+ final Integer index = Integers.parseInt(matcher.group(1));
eligibleFiles.put(index, entry);
} catch (NumberFormatException ex) {
LOGGER.debug("Ignoring file {} which matches pattern but the index is invalid.",
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
index ee61cf2..d12af4a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
@@ -126,7 +126,7 @@ public class DefaultRolloverStrategy extends AbstractRolloverStrategy {
useMax = fileIndex == null ? true : fileIndex.equalsIgnoreCase("max");
minIndex = MIN_WINDOW_SIZE;
if (min != null) {
- minIndex = Integer.parseInt(min.trim());
+ minIndex = Integers.parseInt(min);
if (minIndex < 1) {
LOGGER.error("Minimum window size too small. Limited to " + MIN_WINDOW_SIZE);
minIndex = MIN_WINDOW_SIZE;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
index 8e8dca8..ab13a33 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
@@ -87,7 +87,7 @@ public class DirectWriteRolloverStrategy extends AbstractRolloverStrategy implem
public DirectWriteRolloverStrategy build() {
int maxIndex = Integer.MAX_VALUE;
if (maxFiles != null) {
- maxIndex = Integer.parseInt(maxFiles);
+ maxIndex = Integers.parseInt(maxFiles);
if (maxIndex < 0) {
maxIndex = Integer.MAX_VALUE;
} else if (maxIndex < 2) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
index e344005..16a2354 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
@@ -106,7 +106,7 @@ final class DisruptorUtil {
final String userPreferredRBSize = PropertiesUtil.getProperties().getStringProperty(propertyName,
String.valueOf(ringBufferSize));
try {
- int size = Integer.parseInt(userPreferredRBSize);
+ int size = Integers.parseInt(userPreferredRBSize);
if (size < RINGBUFFER_MIN_SIZE) {
size = RINGBUFFER_MIN_SIZE;
LOGGER.warn("Invalid RingBufferSize {}, using minimum size {}.", userPreferredRBSize,
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
index 32e15e8..685f54d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
@@ -20,6 +20,7 @@ package org.apache.logging.log4j.core.async;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.Constants;
import org.apache.logging.log4j.util.PropertiesUtil;
@@ -73,7 +74,7 @@ public enum ThreadNameCachingStrategy { // LOG4J2-467
Pattern javaVersionPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)_(\\d+)");
Matcher m = javaVersionPattern.matcher(System.getProperty("java.version"));
if (m.matches()) {
- return Integer.parseInt(m.group(3)) == 0 && Integer.parseInt(m.group(4)) < 102;
+ return Integers.parseInt(m.group(3)) == 0 && Integers.parseInt(m.group(4)) < 102;
}
return true;
} catch (Exception e) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
index 766d2ab..6b8c7a3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
@@ -60,6 +60,7 @@ import org.apache.logging.log4j.core.config.builder.api.PropertyComponentBuilder
import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
import org.apache.logging.log4j.core.config.builder.api.ScriptComponentBuilder;
import org.apache.logging.log4j.core.config.builder.api.ScriptFileComponentBuilder;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Throwables;
/**
@@ -561,7 +562,7 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement
@Override
public ConfigurationBuilder<T> setMonitorInterval(final String intervalSeconds) {
- monitorInterval = Integer.parseInt(intervalSeconds);
+ monitorInterval = Integers.parseInt(intervalSeconds);
return this;
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
index 50e2a54..6f39e44 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
@@ -28,6 +28,7 @@ import org.apache.logging.log4j.core.config.Node;
import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
import org.apache.logging.log4j.core.config.plugins.util.PluginType;
import org.apache.logging.log4j.core.filter.CompositeFilter;
+import org.apache.logging.log4j.core.util.Integers;
/**
* The default merge strategy for composite configurations.
@@ -86,8 +87,8 @@ public class DefaultMergeStrategy implements MergeStrategy {
targetAttribute.setValue(attribute.getValue());
}
} else if (attribute.getKey().equalsIgnoreCase("monitorInterval")) {
- final int sourceInterval = Integer.parseInt(attribute.getValue());
- final int targetInterval = Integer.parseInt(targetAttribute.getValue());
+ final int sourceInterval = Integers.parseInt(attribute.getValue());
+ final int targetInterval = Integers.parseInt(targetAttribute.getValue());
if (targetInterval == 0 || sourceInterval < targetInterval) {
targetAttribute.setValue(attribute.getValue());
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
index 3e9dd9c..defa730 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
@@ -26,9 +26,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.AbstractConfiguration;
import org.apache.logging.log4j.core.config.Configuration;
@@ -39,8 +36,13 @@ import org.apache.logging.log4j.core.config.Reconfigurable;
import org.apache.logging.log4j.core.config.plugins.util.PluginType;
import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil;
import org.apache.logging.log4j.core.config.status.StatusConfiguration;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Patterns;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
/**
* Creates a Node hierarchy from a JSON file.
*/
@@ -88,7 +90,7 @@ public class JsonConfiguration extends AbstractConfiguration implements Reconfig
} else if ("name".equalsIgnoreCase(key)) {
setName(value);
} else if ("monitorInterval".equalsIgnoreCase(key)) {
- monitorIntervalSeconds = Integer.parseInt(value);
+ monitorIntervalSeconds = Integers.parseInt(value);
} else if ("advertiser".equalsIgnoreCase(key)) {
createAdvertiser(value, configSource, buffer, "application/json");
}
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 6564a29..436eefa 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
@@ -17,7 +17,6 @@
package org.apache.logging.log4j.core.config.properties;
-import java.util.Arrays;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
@@ -43,6 +42,7 @@ import org.apache.logging.log4j.core.config.builder.api.ScriptComponentBuilder;
import org.apache.logging.log4j.core.config.builder.api.ScriptFileComponentBuilder;
import org.apache.logging.log4j.core.filter.AbstractFilter.AbstractFilterBuilder;
import org.apache.logging.log4j.core.util.Builder;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.util.PropertiesUtil;
import org.apache.logging.log4j.util.Strings;
@@ -124,7 +124,7 @@ public class PropertiesConfigurationBuilder extends ConfigurationBuilderFactory
final Properties levelProps = PropertiesUtil.extractSubset(rootProperties, "customLevel");
if (levelProps.size() > 0) {
for (final String key : levelProps.stringPropertyNames()) {
- builder.add(builder.newCustomLevel(key, Integer.parseInt(levelProps.getProperty(key))));
+ builder.add(builder.newCustomLevel(key, Integers.parseInt(levelProps.getProperty(key))));
}
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 939c36c..649f013 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -43,6 +44,7 @@ import org.apache.logging.log4j.core.config.plugins.util.PluginType;
import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil;
import org.apache.logging.log4j.core.config.status.StatusConfiguration;
import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Loader;
import org.apache.logging.log4j.core.util.Patterns;
import org.apache.logging.log4j.core.util.Throwables;
@@ -130,7 +132,7 @@ public class XmlConfiguration extends AbstractConfiguration implements Reconfigu
} else if ("schema".equalsIgnoreCase(key)) {
schemaResource = value;
} else if ("monitorInterval".equalsIgnoreCase(key)) {
- monitorIntervalSeconds = Integer.parseInt(value);
+ monitorIntervalSeconds = Integers.parseInt(value);
} else if ("advertiser".equalsIgnoreCase(key)) {
createAdvertiser(value, configSource, buffer, "text/xml");
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
index aeb4535..32f7cee 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
@@ -23,6 +23,7 @@ import java.util.Scanner;
import org.apache.logging.log4j.core.pattern.JAnsiTextRenderer;
import org.apache.logging.log4j.core.pattern.PlainTextRenderer;
import org.apache.logging.log4j.core.pattern.TextRenderer;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Loader;
import org.apache.logging.log4j.core.util.Patterns;
import org.apache.logging.log4j.status.StatusLogger;
@@ -294,7 +295,7 @@ public final class ThrowableFormatOptions {
} else if (option.startsWith("suffix(") && option.endsWith(")")){
suffix = option.substring("suffix(".length(), option.length() - 1);
} else if (!option.equalsIgnoreCase(FULL)) {
- lines = Integer.parseInt(option);
+ lines = Integers.parseInt(option);
}
}
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/Log4jStackTraceElementDeserializer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/Log4jStackTraceElementDeserializer.java
index 936ace1..aa0890c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/Log4jStackTraceElementDeserializer.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/Log4jStackTraceElementDeserializer.java
@@ -18,6 +18,8 @@ package org.apache.logging.log4j.core.jackson;
import java.io.IOException;
+import org.apache.logging.log4j.core.util.Integers;
+
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
@@ -62,7 +64,7 @@ public final class Log4jStackTraceElementDeserializer extends StdScalarDeseriali
} else {
// An XML number always comes in a string since there is no syntax help as with JSON.
try {
- lineNumber = Integer.parseInt(jp.getText().trim());
+ lineNumber = Integers.parseInt(jp.getText());
} catch (final NumberFormatException e) {
throw JsonMappingException.from(jp, "Non-numeric token (" + t + ") for property 'line'", e);
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LoggerFields.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LoggerFields.java
index b01dc5e..323e3bb 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LoggerFields.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LoggerFields.java
@@ -25,6 +25,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.KeyValuePair;
import org.apache.logging.log4j.message.StructuredDataId;
@@ -88,7 +89,7 @@ public final class LoggerFields {
if (enterpriseId == null || sdId == null) {
return null;
}
- final int eId = Integer.parseInt(enterpriseId);
+ final int eId = Integers.parseInt(enterpriseId);
return new StructuredDataId(sdId, eId, null, null);
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
index 88dca4f..9a7da16 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Patterns;
import org.apache.logging.log4j.util.PerformanceSensitive;
@@ -73,7 +74,7 @@ public class LevelPatternConverter extends LogEventPatternConverter {
final String key = pair[0].trim();
final String value = pair[1].trim();
if (OPTION_LENGTH.equalsIgnoreCase(key)) {
- length = Integer.parseInt(value);
+ length = Integers.parseInt(value);
} else if (OPTION_LOWER.equalsIgnoreCase(key)) {
lowerCase = Boolean.parseBoolean(value);
} else {
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 318e3ff..d6f4e4d 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
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.pattern;
import java.util.ArrayList;
import java.util.List;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.util.PerformanceSensitive;
@@ -78,7 +79,7 @@ public abstract class NameAbbreviator {
// if all blanks and digits
//
if (i == number.length()) {
- return new MaxElementAbbreviator(Integer.parseInt(number),
+ return new MaxElementAbbreviator(Integers.parseInt(number),
isNegativeNumber? MaxElementAbbreviator.Strategy.DROP : MaxElementAbbreviator.Strategy.RETAIN);
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RepeatPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RepeatPatternConverter.java
index df3179b..f4298d3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RepeatPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RepeatPatternConverter.java
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.pattern;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.util.PerformanceSensitive;
import org.apache.logging.log4j.util.Strings;
@@ -55,7 +56,7 @@ public final class RepeatPatternConverter extends LogEventPatternConverter {
int count = 0;
String result = options[0];
try {
- count = Integer.parseInt(options[1].trim());
+ count = Integers.parseInt(options[1]);
result = Strings.repeat(options[0], count);
} catch (Exception ex) {
LOGGER.error("The repeat count is not an integer: {}", options[1].trim());
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java
index 2bf35b4..d76dfd8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java
@@ -22,6 +22,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.apache.logging.log4j.core.util.Integers;
+
/**
* Generates source code for custom or extended logger wrappers.
* <p>
@@ -1039,7 +1041,7 @@ public final class Generate {
LevelInfo(final String description) {
final String[] parts = description.split("=");
name = parts[0];
- intLevel = Integer.parseInt(parts[1]);
+ intLevel = Integers.parseInt(parts[1]);
}
public static List<LevelInfo> parse(final List<String> values, final Class<?> generator) {
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 724ce47..d6ced4f 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
@@ -16,6 +16,11 @@
*/
package org.apache.logging.log4j.core.tools.picocli;
+import static java.util.Locale.ENGLISH;
+import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Column.Overflow.SPAN;
+import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Column.Overflow.TRUNCATE;
+import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Column.Overflow.WRAP;
+
import java.io.File;
import java.io.PrintStream;
import java.lang.annotation.ElementType;
@@ -64,14 +69,11 @@ import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.regex.Pattern;
+import org.apache.logging.log4j.core.tools.picocli.CommandLine.Help;
import org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Ansi.IStyle;
import org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Ansi.Style;
import org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Ansi.Text;
-
-import static java.util.Locale.ENGLISH;
-import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Column.Overflow.SPAN;
-import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Column.Overflow.TRUNCATE;
-import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Column.Overflow.WRAP;
+import org.apache.logging.log4j.core.util.Integers;
/**
* <p>
@@ -1752,7 +1754,7 @@ public class CommandLine {
}
private static int parseInt(final String str, final int defaultValue) {
try {
- return Integer.parseInt(str);
+ return Integers.parseInt(str);
} catch (final Exception ex) {
return defaultValue;
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
index 1032f98..f8d0804 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
@@ -549,7 +549,7 @@ public final class CronExpression {
case '#':
try {
i += 4;
- nthdayOfWeek = Integer.parseInt(s.substring(i));
+ nthdayOfWeek = Integers.parseInt(s.substring(i));
if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
throw new Exception();
}
@@ -746,7 +746,7 @@ public final class CronExpression {
}
i++;
try {
- nthdayOfWeek = Integer.parseInt(s.substring(i));
+ nthdayOfWeek = Integers.parseInt(s.substring(i));
if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
throw new Exception();
}
@@ -1139,14 +1139,14 @@ public final class CronExpression {
final ValueSet val = new ValueSet();
val.pos = (i < s.length()) ? i : i + 1;
- val.value = Integer.parseInt(s1.toString());
+ val.value = Integers.parseInt(s1.toString());
return val;
}
protected int getNumericValue(final String s, final int i) {
final int endOfVal = findNextWhiteSpace(i, s);
final String val = s.substring(i, endOfVal);
- return Integer.parseInt(val);
+ return Integers.parseInt(val);
}
protected int getMonthNumber(final String s) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Integers.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Integers.java
index 65f3750..1d4703b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Integers.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Integers.java
@@ -30,6 +30,9 @@ public final class Integers {
/**
* Parses the string argument as a signed decimal integer.
+ * <p>
+ * The input may be surrounded by whitespace.
+ * </p>
*
* @param s a {@code String} containing the {@code int} representation to parse, may be {@code null} or {@code ""}
* @param defaultValue the return value, use {@code defaultValue} if {@code s} is {@code null} or {@code ""}
@@ -37,7 +40,7 @@ public final class Integers {
* @throws NumberFormatException if the string does not contain a parsable integer.
*/
public static int parseInt(final String s, final int defaultValue) {
- return Strings.isEmpty(s) ? defaultValue : Integer.parseInt(s);
+ return Strings.isEmpty(s) ? defaultValue : Integer.parseInt(s.trim());
}
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
index bd31fd3..a181ccb 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
@@ -148,9 +148,9 @@ public final class OptionConverter {
*/
public static int toInt(final String value, final int defaultValue) {
if (value != null) {
- final String s = value.trim();
+ final String s = value;
try {
- return Integer.parseInt(s);
+ return Integers.parseInt(s);
} catch (final NumberFormatException e) {
LOGGER.error("[{}] is not in proper int form.", s, e);
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java
index 6dcd9a7..7646af2 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java
@@ -39,6 +39,8 @@ import java.util.concurrent.ConcurrentMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.logging.log4j.core.util.Integers;
+
/**
* <p>FastDateParser is a fast and thread-safe version of
* {@link java.text.SimpleDateFormat}.</p>
@@ -775,7 +777,7 @@ public class FastDateParser implements DateParser, Serializable {
return false;
}
- final int value = Integer.parseInt(source.substring(pos.getIndex(), idx));
+ final int value = Integers.parseInt(source.substring(pos.getIndex(), idx));
pos.setIndex(idx);
calendar.set(field, modify(parser, value));
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
index 4ff6754..f207f6b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
@@ -40,6 +40,7 @@ import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Throwables;
import org.apache.logging.log4j.junit.CleanUpFiles;
import org.apache.logging.log4j.message.SimpleMessage;
@@ -323,7 +324,7 @@ public class FileAppenderTest {
}
final String id = args[0];
- final int count = Integer.parseInt(args[1]);
+ final int count = Integers.parseInt(args[1]);
if (count <= 0) {
System.out.println("Invalid count value: " + args[1]);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDeleteScriptTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDeleteScriptTest.java
index b3f14ba..3547483 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDeleteScriptTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDeleteScriptTest.java
@@ -22,6 +22,7 @@ import java.io.File;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.util.Constants;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.junit.LoggerContextRule;
import org.junit.BeforeClass;
import org.junit.Rule;
@@ -68,7 +69,7 @@ public class RollingAppenderDeleteScriptTest {
assertTrue(file.getName() + " starts with 'test-'", file.getName().startsWith("test-"));
assertTrue(file.getName() + " ends with '.log'", file.getName().endsWith(".log"));
final String strIndex = file.getName().substring(5, file.getName().indexOf('.'));
- final int index = Integer.parseInt(strIndex);
+ final int index = Integers.parseInt(strIndex);
assertTrue(file + " should have odd index", index % 2 == 1);
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
index e9934fc..10ed108 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
@@ -29,6 +29,7 @@ import java.util.Collections;
import java.util.List;
import org.apache.logging.log4j.core.async.AsyncLoggerContextSelector;
+import org.apache.logging.log4j.core.util.Integers;
/**
* Runs a sequence of performance tests.
@@ -112,7 +113,7 @@ public class PerfTestDriver {
private int getUserSpecifiedRingBufferSize() {
try {
- return Integer.parseInt(System.getProperty("RingBufferSize", "-1"));
+ return Integers.parseInt(System.getProperty("RingBufferSize", "-1"));
} catch (final Exception ignored) {
return -1;
}
@@ -170,7 +171,7 @@ public class PerfTestDriver {
average += Long.parseLong(parts[i++].split("=")[1]);
pct99 += Long.parseLong(parts[i++].split("=")[1]);
pct99_99 += Long.parseLong(parts[i++].split("=")[1]);
- count += Integer.parseInt(parts[i].split("=")[1]);
+ count += Integers.parseInt(parts[i].split("=")[1]);
} else {
throughputRowCount++;
final String number = line.substring(0, line.indexOf(' '));
@@ -288,7 +289,7 @@ public class PerfTestDriver {
private static void runPerfTests(final String[] args, final List<Setup> tests) throws IOException,
InterruptedException, FileNotFoundException {
final String java = args.length > 0 ? args[0] : "java";
- final int repeat = args.length > 1 ? Integer.parseInt(args[1]) : 5;
+ final int repeat = args.length > 1 ? Integers.parseInt(args[1]) : 5;
int x = 0;
for (final Setup setup : tests) {
System.out.print(setup.description());
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/ResponseTimeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/ResponseTimeTest.java
index 93f0f2e..5cc4b17 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/ResponseTimeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/ResponseTimeTest.java
@@ -30,6 +30,7 @@ import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.async.DefaultAsyncQueueFullPolicy;
import org.apache.logging.log4j.core.async.EventRoute;
import org.apache.logging.log4j.core.util.Constants;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Loader;
/**
@@ -100,7 +101,7 @@ public class ResponseTimeTest {
"and logger library (Log4j1, Log4j2, Logback, JUL)");
return;
}
- final int threadCount = Integer.parseInt(args[0]);
+ final int threadCount = Integers.parseInt(args[0]);
final double loadMessagesPerSec = Double.parseDouble(args[1]);
final String loggerLib = args.length > 2 ? args[2] : "Log4j2";
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
index 9dece77..115c152 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
@@ -16,6 +16,11 @@
*/
package org.apache.logging.log4j.core.layout;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -30,6 +35,7 @@ import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.net.Facility;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.KeyValuePair;
import org.apache.logging.log4j.junit.UsingAnyThreadContext;
import org.apache.logging.log4j.message.StructuredDataCollectionMessage;
@@ -42,8 +48,6 @@ import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
-
@UsingAnyThreadContext
public class Rfc5424LayoutTest {
LoggerContext ctx = LoggerContext.getContext();
@@ -137,7 +141,7 @@ public class Rfc5424LayoutTest {
final int firstSpacePosition = frame.indexOf(' ');
final String messageLength = frame.substring(0, firstSpacePosition);
try {
- length = Integer.parseInt(messageLength);
+ length = Integers.parseInt(messageLength);
// the ListAppender removes the ending newline, so we expect one less size
assertEquals(frameLength, messageLength.length() + length);
}
@@ -215,7 +219,7 @@ public class Rfc5424LayoutTest {
final int firstSpacePosition = frame.indexOf(' ');
final String messageLength = frame.substring(0, firstSpacePosition);
try {
- length = Integer.parseInt(messageLength);
+ length = Integers.parseInt(messageLength);
// the ListAppender removes the ending newline, so we expect one less size
assertEquals(frameLength, messageLength.length() + length);
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/TlsSyslogInputStreamReader.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/TlsSyslogInputStreamReader.java
index 8ea3142..eeacdae 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/TlsSyslogInputStreamReader.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/TlsSyslogInputStreamReader.java
@@ -22,6 +22,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
+import org.apache.logging.log4j.core.util.Integers;
+
public class TlsSyslogInputStreamReader extends TlsSyslogInputStreamReaderBase {
private static final char SPACE = ' ';
@@ -86,6 +88,6 @@ public class TlsSyslogInputStreamReader extends TlsSyslogInputStreamReaderBase {
private void calculateNextMessageLength() {
final byte[] length = Arrays.copyOfRange(lengthBuffer, 0, position);
- nextMessageLength = Integer.parseInt(new String(length));
+ nextMessageLength = Integers.parseInt(new String(length));
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
index cc52994..1755898 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
@@ -16,15 +16,18 @@
*/
package org.apache.logging.log4j.core.pattern;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.message.SimpleMessage;
import org.apache.logging.log4j.util.Strings;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
-
public class ThrowablePatternConverterTest {
private final static class LocalizedException extends Exception {
@@ -139,7 +142,7 @@ public class ThrowablePatternConverterTest {
final StringBuilder sb = new StringBuilder();
converter.format(event, sb);
final String result = sb.toString();
- assertEquals(Integer.parseInt(result), expectedLineNumber, "The line numbers should be same");
+ assertEquals(Integers.parseInt(result), expectedLineNumber, "The line numbers should be same");
}
@Test
diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeAppenderTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeAppenderTest.java
index 2e1cda1..e9f7d75 100644
--- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeAppenderTest.java
+++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeAppenderTest.java
@@ -45,6 +45,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.message.StructuredDataMessage;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.test.AvailablePortFinder;
@@ -383,7 +384,7 @@ public class FlumeAppenderTest {
@Test
public void testNotConnected() throws Exception {
eventSource.stop();
- final String altPort = Integer.toString(Integer.parseInt(testPort) + 1);
+ final String altPort = Integer.toString(Integers.parseInt(testPort) + 1);
final Agent[] agents = new Agent[] {
Agent.createAgent("localhost", testPort),
Agent.createAgent("localhost", altPort) };
@@ -431,7 +432,7 @@ public class FlumeAppenderTest {
@Test
public void testReconnect() throws Exception {
- final String altPort = Integer.toString(Integer.parseInt(testPort) + 1);
+ final String altPort = Integer.toString(Integers.parseInt(testPort) + 1);
final Agent[] agents = new Agent[] {
Agent.createAgent("localhost", testPort),
Agent.createAgent("localhost", altPort) };
diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java
index 80582da..cf23413 100644
--- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java
+++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java
@@ -52,6 +52,7 @@ import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.message.StructuredDataMessage;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.test.AvailablePortFinder;
@@ -156,7 +157,7 @@ public class FlumePersistentAppenderTest {
Assert.assertNotNull("Received " + i + " events. Event " + (i + 1) + " is null", event);
final String value = event.getHeaders().get("counter");
Assert.assertNotNull("Missing 'counter' in map " + event.getHeaders() + ", i = " + i, value);
- final int counter = Integer.parseInt(value);
+ final int counter = Integers.parseInt(value);
if (fields[counter]) {
Assert.fail("Duplicate event");
} else {
@@ -184,7 +185,7 @@ public class FlumePersistentAppenderTest {
Assert.assertNotNull("Received " + i + " events. Event " + (i + 1) + " is null", event);
final String value = event.getHeaders().get("counter");
Assert.assertNotNull("Missing counter", value);
- final int counter = Integer.parseInt(value);
+ final int counter = Integers.parseInt(value);
if (fields[counter]) {
Assert.fail("Duplicate event");
} else {
@@ -336,7 +337,7 @@ public class FlumePersistentAppenderTest {
+ (i + 1) + " is null", event);
final String value = event.getHeaders().get("counter");
Assert.assertNotNull("Missing counter", value);
- final int counter = Integer.parseInt(value);
+ final int counter = Integers.parseInt(value);
if (fields[counter]) {
Assert.fail("Duplicate event");
} else {
diff --git a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/InstantAttributeConverter.java b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/InstantAttributeConverter.java
index fde75af..795ded0 100644
--- a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/InstantAttributeConverter.java
+++ b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/InstantAttributeConverter.java
@@ -16,14 +16,15 @@
*/
package org.apache.logging.log4j.core.appender.db.jpa.converter;
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
import org.apache.logging.log4j.core.time.Instant;
import org.apache.logging.log4j.core.time.MutableInstant;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.Strings;
-import javax.persistence.AttributeConverter;
-import javax.persistence.Converter;
-
/**
* A JPA 2.1 attribute converter for {@link Instant}s in {@link org.apache.logging.log4j.core.LogEvent}s. This
* converter is capable of converting both to and from {@link String}s.
@@ -48,7 +49,7 @@ public class InstantAttributeConverter implements AttributeConverter<Instant, St
final int pos = s.indexOf(",");
final long epochSecond = Long.parseLong(s.substring(0, pos));
- final int nanos = Integer.parseInt(s.substring(pos + 1, s.length()));
+ final int nanos = Integers.parseInt(s.substring(pos + 1, s.length()));
final MutableInstant result = new MutableInstant();
result.initFromEpochSecond(epochSecond, nanos);
diff --git a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/StackTraceElementAttributeConverter.java b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/StackTraceElementAttributeConverter.java
index b34822d..ed16100 100644
--- a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/StackTraceElementAttributeConverter.java
+++ b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/StackTraceElementAttributeConverter.java
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.appender.db.jpa.converter;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.util.Strings;
/**
@@ -67,7 +68,7 @@ public class StackTraceElementAttributeConverter implements AttributeConverter<S
if (colon > UNKNOWN_SOURCE) {
fileName = parenthesisContents.substring(0, colon);
try {
- lineNumber = Integer.parseInt(parenthesisContents.substring(colon + 1));
+ lineNumber = Integers.parseInt(parenthesisContents.substring(colon + 1));
} catch (final NumberFormatException ignore) {
// we don't care
}
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/RecyclerFactories.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/RecyclerFactories.java
index 22244fb..26921c2 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/RecyclerFactories.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/RecyclerFactories.java
@@ -16,10 +16,6 @@
*/
package org.apache.logging.log4j.layout.template.json.util;
-import org.apache.logging.log4j.core.util.Constants;
-import org.apache.logging.log4j.util.LoaderUtil;
-import org.jctools.queues.MpmcArrayQueue;
-
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;
@@ -29,6 +25,11 @@ import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.function.Supplier;
+import org.apache.logging.log4j.core.util.Constants;
+import org.apache.logging.log4j.core.util.Integers;
+import org.apache.logging.log4j.util.LoaderUtil;
+import org.jctools.queues.MpmcArrayQueue;
+
public final class RecyclerFactories {
private RecyclerFactories() {}
@@ -126,7 +127,7 @@ public final class RecyclerFactories {
capacity = defaultCapacity;
} else {
try {
- capacity = Integer.parseInt(capacityValue.toString());
+ capacity = Integers.parseInt(capacityValue.toString());
} catch (final NumberFormatException error) {
throw new IllegalArgumentException(
"failed reading capacity in queueing recycler " +
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonReaderTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonReaderTest.java
index 2c35e5a..b8126fc 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonReaderTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonReaderTest.java
@@ -16,15 +16,16 @@
*/
package org.apache.logging.log4j.layout.template.json.util;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.Test;
-
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
+import org.apache.logging.log4j.core.util.Integers;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+
class JsonReaderTest {
@Test
@@ -152,7 +153,7 @@ class JsonReaderTest {
for (final String signedInteger : new String[]{integer, '-' + integer}) {
final Object expectedToken =
signedInteger.length() < 3
- ? Integer.parseInt(signedInteger)
+ ? Integers.parseInt(signedInteger)
: new BigInteger(signedInteger);
test(signedInteger, expectedToken);
}
diff --git a/log4j-mongodb3/src/test/java/org/apache/logging/log4j/mongodb3/MongoDb3TestRule.java b/log4j-mongodb3/src/test/java/org/apache/logging/log4j/mongodb3/MongoDb3TestRule.java
index 8066d6a..30ae761 100644
--- a/log4j-mongodb3/src/test/java/org/apache/logging/log4j/mongodb3/MongoDb3TestRule.java
+++ b/log4j-mongodb3/src/test/java/org/apache/logging/log4j/mongodb3/MongoDb3TestRule.java
@@ -20,6 +20,7 @@ package org.apache.logging.log4j.mongodb3;
import java.util.Objects;
import org.apache.commons.lang3.NotImplementedException;
+import org.apache.logging.log4j.core.util.Integers;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
@@ -123,7 +124,7 @@ public class MongoDb3TestRule implements TestRule {
public void evaluate() throws Throwable {
final String value = Objects.requireNonNull(System.getProperty(portSystemPropertyName),
"System property '" + portSystemPropertyName + "' is null");
- final int port = Integer.parseInt(value);
+ final int port = Integers.parseInt(value);
mongodExecutable = starter.prepare(
// @formatter:off
MongodConfig.builder()
diff --git a/log4j-mongodb4/src/test/java/org/apache/logging/log4j/mongodb4/MongoDb4TestRule.java b/log4j-mongodb4/src/test/java/org/apache/logging/log4j/mongodb4/MongoDb4TestRule.java
index 28dbd7d..04db122 100644
--- a/log4j-mongodb4/src/test/java/org/apache/logging/log4j/mongodb4/MongoDb4TestRule.java
+++ b/log4j-mongodb4/src/test/java/org/apache/logging/log4j/mongodb4/MongoDb4TestRule.java
@@ -20,6 +20,7 @@ package org.apache.logging.log4j.mongodb4;
import java.util.Objects;
import org.apache.commons.lang3.NotImplementedException;
+import org.apache.logging.log4j.core.util.Integers;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
@@ -121,7 +122,7 @@ public class MongoDb4TestRule implements TestRule {
public void evaluate() throws Throwable {
final String value = Objects.requireNonNull(System.getProperty(portSystemPropertyName),
"System property '" + portSystemPropertyName + "' is null");
- final int port = Integer.parseInt(value);
+ final int port = Integers.parseInt(value);
mongodExecutable = starter.prepare(
// @formatter:off
MongodConfig.builder()
diff --git a/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java b/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
index 02d47b3..3bb015c 100755
--- a/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
+++ b/log4j-samples/log4j-samples-flume-common/src/main/java/org/apache/logging/log4j/samples/app/LoggingController.java
@@ -24,6 +24,7 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.samples.dto.AuditEvent;
import org.apache.logging.log4j.samples.dto.RequestContext;
import org.apache.logging.log4j.util.Strings;
@@ -60,7 +61,7 @@ public class LoggingController {
int numThreads = 1;
if (Strings.isNotEmpty(threadCount)) {
try {
- numThreads = Integer.parseInt(threadCount);
+ numThreads = Integers.parseInt(threadCount);
} catch (final Exception ex) {
System.out.println("Invalid threadCount specified: " + threadCount);
}
diff --git a/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/SpringLookup.java b/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/SpringLookup.java
index c71941a..401cbde 100644
--- a/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/SpringLookup.java
+++ b/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/SpringLookup.java
@@ -16,16 +16,17 @@
*/
package org.apache.logging.log4j.spring.boot;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.lookup.StrLookup;
+import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.status.StatusLogger;
import org.springframework.core.env.Environment;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
/**
* Lookup for Spring properties.
*/
@@ -60,7 +61,7 @@ public class SpringLookup extends SpringEnvironmentHolder implements StrLookup {
Matcher matcher = ACTIVE_PATTERN.matcher(key);
if (matcher.matches()) {
try {
- int index = Integer.parseInt(matcher.group(1));
+ int index = Integers.parseInt(matcher.group(1));
if (index < env.getActiveProfiles().length) {
return env.getActiveProfiles()[index];
}
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 14418d8..7e0aa0f 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -229,6 +229,9 @@
<action issue="LOG4J2-3392" dev="ggregory" type="fix" due-to="Gary Gregory">
Possible NullPointerException in MongoDb4DocumentObject, MongoDbDocumentObject, DefaultNoSqlObject.
</action>
+ <action dev="ggregory" type="fix" due-to="Gary Gregory">
+ Trim whitespace before parsing a String into an Integer.
+ </action>
<!-- ADD -->
<action issue="LOG4J2-3297" dev="rgoers" type="add">
Limit loading of configuration via a url to https by default.