You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2021/12/13 11:35:31 UTC
[logging-log4j2] branch release-2.x updated: Remove SetUtils from core.
This is an automated email from the ASF dual-hosted git repository.
vy 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 ad0d0c9 Remove SetUtils from core.
ad0d0c9 is described below
commit ad0d0c900f75961691eb98065453deca7ade5419
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Sun Dec 12 21:14:12 2021 +0100
Remove SetUtils from core.
---
log4j-core/revapi.json | 5 +++
.../apache/logging/log4j/core/util/SetUtils.java | 47 ----------------------
.../logging/log4j/web/Log4jWebInitializerImpl.java | 40 +++++++++++-------
.../logging/log4j/web/Log4jWebInitializerImpl.java | 42 ++++++++++++-------
4 files changed, 58 insertions(+), 76 deletions(-)
diff --git a/log4j-core/revapi.json b/log4j-core/revapi.json
index af702c0..95e6d71 100644
--- a/log4j-core/revapi.json
+++ b/log4j-core/revapi.json
@@ -152,6 +152,11 @@
"old": "class org.apache.logging.log4j.core.time.MutableInstant",
"new": "class org.apache.logging.log4j.core.time.MutableInstant",
"justification": "LOG4J2-3075 MutableInstant extends from TemporalAccessor"
+ },
+ {
+ "code": "java.class.removed",
+ "old": "class org.apache.logging.log4j.core.util.SetUtils",
+ "justification": "only used by web modules"
}
]
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
deleted file mode 100644
index e1a5218..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.util;
-
-import java.util.Set;
-
-/**
- * Set-related convenience methods.
- */
-public final class SetUtils {
-
- private static final String[] EMPTY_STRINGS = new String[0];
-
- private SetUtils() {}
-
- /**
- * Collects strings starting with the given {@code prefix} from the given {@code set}.
- *
- * @param set a (nullable) set of strings
- * @param prefix a prefix to look for in the string set
- * @return an array of the matching strings from the given set
- */
- public static String[] prefixSet(final Set<String> set, final String prefix) {
- if (set == null) {
- return EMPTY_STRINGS;
- }
- return set
- .stream()
- .filter(string -> string.startsWith(prefix))
- .toArray(String[]::new);
- }
-
-}
diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
index 3ecbe14..5279df9 100644
--- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
+++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
@@ -16,19 +16,7 @@
*/
package org.apache.logging.log4j.web;
-import java.net.URI;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
import jakarta.servlet.ServletContext;
-
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.AbstractLifeCycle;
import org.apache.logging.log4j.core.LoggerContext;
@@ -42,10 +30,16 @@ import org.apache.logging.log4j.core.selector.ContextSelector;
import org.apache.logging.log4j.core.selector.NamedContextSelector;
import org.apache.logging.log4j.core.util.Loader;
import org.apache.logging.log4j.core.util.NetUtils;
-import org.apache.logging.log4j.core.util.SetUtils;
import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.apache.logging.log4j.util.LoaderUtil;
+import java.net.URI;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
/**
* This class initializes and deinitializes Log4j no matter how the initialization occurs.
*/
@@ -193,7 +187,7 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe
try {
String configLocation = location;
if (configLocation == null) {
- final String[] paths = SetUtils.prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
+ final String[] paths = prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
LOGGER.debug("getConfigURI found resource paths {} in servletContext at [{}]", Arrays.toString(paths), WEB_INF);
if (paths.length == 1) {
configLocation = paths[0];
@@ -235,6 +229,24 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe
return null;
}
+ /**
+ * Collects strings starting with the given {@code prefix} from the given {@code set}.
+ *
+ * @param set a (nullable) set of strings
+ * @param prefix a prefix to look for in the string set
+ * @return an array of the matching strings from the given set
+ */
+ @SuppressWarnings("SameParameterValue")
+ private static String[] prefixSet(final Set<String> set, final String prefix) {
+ if (set == null) {
+ return new String[0];
+ }
+ return set
+ .stream()
+ .filter(string -> string.startsWith(prefix))
+ .toArray(String[]::new);
+ }
+
@Override
public synchronized boolean stop(final long timeout, final TimeUnit timeUnit) {
if (!this.isStarted() && !this.isStopped()) {
diff --git a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
index ba53d4f..a53ab44 100644
--- a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
+++ b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
@@ -16,19 +16,6 @@
*/
package org.apache.logging.log4j.web;
-import java.net.URI;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
-import javax.servlet.ServletContext;
-
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.AbstractLifeCycle;
import org.apache.logging.log4j.core.LoggerContext;
@@ -42,10 +29,17 @@ import org.apache.logging.log4j.core.selector.ContextSelector;
import org.apache.logging.log4j.core.selector.NamedContextSelector;
import org.apache.logging.log4j.core.util.Loader;
import org.apache.logging.log4j.core.util.NetUtils;
-import org.apache.logging.log4j.core.util.SetUtils;
import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.apache.logging.log4j.util.LoaderUtil;
+import javax.servlet.ServletContext;
+import java.net.URI;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
/**
* This class initializes and deinitializes Log4j no matter how the initialization occurs.
*/
@@ -193,7 +187,7 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe
try {
String configLocation = location;
if (configLocation == null) {
- final String[] paths = SetUtils.prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
+ final String[] paths = prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
LOGGER.debug("getConfigURI found resource paths {} in servletContext at [{}]", Arrays.toString(paths), WEB_INF);
if (paths.length == 1) {
configLocation = paths[0];
@@ -235,6 +229,24 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe
return null;
}
+ /**
+ * Collects strings starting with the given {@code prefix} from the given {@code set}.
+ *
+ * @param set a (nullable) set of strings
+ * @param prefix a prefix to look for in the string set
+ * @return an array of the matching strings from the given set
+ */
+ @SuppressWarnings("SameParameterValue")
+ private static String[] prefixSet(final Set<String> set, final String prefix) {
+ if (set == null) {
+ return new String[0];
+ }
+ return set
+ .stream()
+ .filter(string -> string.startsWith(prefix))
+ .toArray(String[]::new);
+ }
+
@Override
public synchronized boolean stop(final long timeout, final TimeUnit timeUnit) {
if (!this.isStarted() && !this.isStopped()) {
Re: [logging-log4j2] branch release-2.x updated: Remove SetUtils from core.
Posted by Volkan Yazıcı <vo...@yazi.ci>.
It is only used at configuration start, hence I don't think it is needed.
Nevertheless, I have replaced it with Strings.EMPTY_ARRAY.
On Mon, Dec 13, 2021 at 12:39 PM Gary Gregory <ga...@gmail.com>
wrote:
> + return new String[0];
>
> This should be a constant.
>
> Gary
>
> On Mon, Dec 13, 2021 at 6:35 AM <vy...@apache.org> wrote:
>
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > vy 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 ad0d0c9 Remove SetUtils from core.
> > ad0d0c9 is described below
> >
> > commit ad0d0c900f75961691eb98065453deca7ade5419
> > Author: Volkan Yazici <vo...@yazi.ci>
> > AuthorDate: Sun Dec 12 21:14:12 2021 +0100
> >
> > Remove SetUtils from core.
> > ---
> > log4j-core/revapi.json | 5 +++
> > .../apache/logging/log4j/core/util/SetUtils.java | 47
> > ----------------------
> > .../logging/log4j/web/Log4jWebInitializerImpl.java | 40
> +++++++++++-------
> > .../logging/log4j/web/Log4jWebInitializerImpl.java | 42
> > ++++++++++++-------
> > 4 files changed, 58 insertions(+), 76 deletions(-)
> >
> > diff --git a/log4j-core/revapi.json b/log4j-core/revapi.json
> > index af702c0..95e6d71 100644
> > --- a/log4j-core/revapi.json
> > +++ b/log4j-core/revapi.json
> > @@ -152,6 +152,11 @@
> > "old": "class
> org.apache.logging.log4j.core.time.MutableInstant",
> > "new": "class
> org.apache.logging.log4j.core.time.MutableInstant",
> > "justification": "LOG4J2-3075 MutableInstant extends from
> > TemporalAccessor"
> > + },
> > + {
> > + "code": "java.class.removed",
> > + "old": "class org.apache.logging.log4j.core.util.SetUtils",
> > + "justification": "only used by web modules"
> > }
> > ]
> > }
> > diff --git
> >
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
> >
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
> > deleted file mode 100644
> > index e1a5218..0000000
> > ---
> >
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
> > +++ /dev/null
> > @@ -1,47 +0,0 @@
> > -/*
> > - * Licensed to the Apache Software Foundation (ASF) under one or more
> > - * contributor license agreements. See the NOTICE file distributed with
> > - * this work for additional information regarding copyright ownership.
> > - * The ASF licenses this file to You under the Apache license, Version
> 2.0
> > - * (the "License"); you may not use this file except in compliance with
> > - * the License. You may obtain a copy of the License at
> > - *
> > - * http://www.apache.org/licenses/LICENSE-2.0
> > - *
> > - * Unless required by applicable law or agreed to in writing, software
> > - * distributed under the License is distributed on an "AS IS" BASIS,
> > - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> > implied.
> > - * See the license for the specific language governing permissions and
> > - * limitations under the license.
> > - */
> > -package org.apache.logging.log4j.core.util;
> > -
> > -import java.util.Set;
> > -
> > -/**
> > - * Set-related convenience methods.
> > - */
> > -public final class SetUtils {
> > -
> > - private static final String[] EMPTY_STRINGS = new String[0];
> > -
> > - private SetUtils() {}
> > -
> > - /**
> > - * Collects strings starting with the given {@code prefix} from the
> > given {@code set}.
> > - *
> > - * @param set a (nullable) set of strings
> > - * @param prefix a prefix to look for in the string set
> > - * @return an array of the matching strings from the given set
> > - */
> > - public static String[] prefixSet(final Set<String> set, final String
> > prefix) {
> > - if (set == null) {
> > - return EMPTY_STRINGS;
> > - }
> > - return set
> > - .stream()
> > - .filter(string -> string.startsWith(prefix))
> > - .toArray(String[]::new);
> > - }
> > -
> > -}
> > diff --git
> >
> a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> >
> b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> > index 3ecbe14..5279df9 100644
> > ---
> >
> a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> > +++
> >
> b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> > @@ -16,19 +16,7 @@
> > */
> > package org.apache.logging.log4j.web;
> >
> > -import java.net.URI;
> > -import java.net.URL;
> > -import java.text.SimpleDateFormat;
> > -import java.util.ArrayList;
> > -import java.util.Arrays;
> > -import java.util.Date;
> > -import java.util.List;
> > -import java.util.Map;
> > -import java.util.concurrent.ConcurrentHashMap;
> > -import java.util.concurrent.TimeUnit;
> > -
> > import jakarta.servlet.ServletContext;
> > -
> > import org.apache.logging.log4j.LogManager;
> > import org.apache.logging.log4j.core.AbstractLifeCycle;
> > import org.apache.logging.log4j.core.LoggerContext;
> > @@ -42,10 +30,16 @@ import
> > org.apache.logging.log4j.core.selector.ContextSelector;
> > import org.apache.logging.log4j.core.selector.NamedContextSelector;
> > import org.apache.logging.log4j.core.util.Loader;
> > import org.apache.logging.log4j.core.util.NetUtils;
> > -import org.apache.logging.log4j.core.util.SetUtils;
> > import org.apache.logging.log4j.spi.LoggerContextFactory;
> > import org.apache.logging.log4j.util.LoaderUtil;
> >
> > +import java.net.URI;
> > +import java.net.URL;
> > +import java.text.SimpleDateFormat;
> > +import java.util.*;
> > +import java.util.concurrent.ConcurrentHashMap;
> > +import java.util.concurrent.TimeUnit;
> > +
> > /**
> > * This class initializes and deinitializes Log4j no matter how the
> > initialization occurs.
> > */
> > @@ -193,7 +187,7 @@ final class Log4jWebInitializerImpl extends
> > AbstractLifeCycle implements Log4jWe
> > try {
> > String configLocation = location;
> > if (configLocation == null) {
> > - final String[] paths =
> > SetUtils.prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF +
> > "log4j2");
> > + final String[] paths =
> > prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
> > LOGGER.debug("getConfigURI found resource paths {} in
> > servletContext at [{}]", Arrays.toString(paths), WEB_INF);
> > if (paths.length == 1) {
> > configLocation = paths[0];
> > @@ -235,6 +229,24 @@ final class Log4jWebInitializerImpl extends
> > AbstractLifeCycle implements Log4jWe
> > return null;
> > }
> >
> > + /**
> > + * Collects strings starting with the given {@code prefix} from the
> > given {@code set}.
> > + *
> > + * @param set a (nullable) set of strings
> > + * @param prefix a prefix to look for in the string set
> > + * @return an array of the matching strings from the given set
> > + */
> > + @SuppressWarnings("SameParameterValue")
> > + private static String[] prefixSet(final Set<String> set, final
> String
> > prefix) {
> > + if (set == null) {
> > + return new String[0];
> > + }
> > + return set
> > + .stream()
> > + .filter(string -> string.startsWith(prefix))
> > + .toArray(String[]::new);
> > + }
> > +
> > @Override
> > public synchronized boolean stop(final long timeout, final TimeUnit
> > timeUnit) {
> > if (!this.isStarted() && !this.isStopped()) {
> > diff --git
> >
> a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> >
> b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> > index ba53d4f..a53ab44 100644
> > ---
> >
> a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> > +++
> >
> b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> > @@ -16,19 +16,6 @@
> > */
> > package org.apache.logging.log4j.web;
> >
> > -import java.net.URI;
> > -import java.net.URL;
> > -import java.text.SimpleDateFormat;
> > -import java.util.ArrayList;
> > -import java.util.Arrays;
> > -import java.util.Date;
> > -import java.util.List;
> > -import java.util.Map;
> > -import java.util.concurrent.ConcurrentHashMap;
> > -import java.util.concurrent.TimeUnit;
> > -
> > -import javax.servlet.ServletContext;
> > -
> > import org.apache.logging.log4j.LogManager;
> > import org.apache.logging.log4j.core.AbstractLifeCycle;
> > import org.apache.logging.log4j.core.LoggerContext;
> > @@ -42,10 +29,17 @@ import
> > org.apache.logging.log4j.core.selector.ContextSelector;
> > import org.apache.logging.log4j.core.selector.NamedContextSelector;
> > import org.apache.logging.log4j.core.util.Loader;
> > import org.apache.logging.log4j.core.util.NetUtils;
> > -import org.apache.logging.log4j.core.util.SetUtils;
> > import org.apache.logging.log4j.spi.LoggerContextFactory;
> > import org.apache.logging.log4j.util.LoaderUtil;
> >
> > +import javax.servlet.ServletContext;
> > +import java.net.URI;
> > +import java.net.URL;
> > +import java.text.SimpleDateFormat;
> > +import java.util.*;
> > +import java.util.concurrent.ConcurrentHashMap;
> > +import java.util.concurrent.TimeUnit;
> > +
> > /**
> > * This class initializes and deinitializes Log4j no matter how the
> > initialization occurs.
> > */
> > @@ -193,7 +187,7 @@ final class Log4jWebInitializerImpl extends
> > AbstractLifeCycle implements Log4jWe
> > try {
> > String configLocation = location;
> > if (configLocation == null) {
> > - final String[] paths =
> > SetUtils.prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF +
> > "log4j2");
> > + final String[] paths =
> > prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
> > LOGGER.debug("getConfigURI found resource paths {} in
> > servletContext at [{}]", Arrays.toString(paths), WEB_INF);
> > if (paths.length == 1) {
> > configLocation = paths[0];
> > @@ -235,6 +229,24 @@ final class Log4jWebInitializerImpl extends
> > AbstractLifeCycle implements Log4jWe
> > return null;
> > }
> >
> > + /**
> > + * Collects strings starting with the given {@code prefix} from the
> > given {@code set}.
> > + *
> > + * @param set a (nullable) set of strings
> > + * @param prefix a prefix to look for in the string set
> > + * @return an array of the matching strings from the given set
> > + */
> > + @SuppressWarnings("SameParameterValue")
> > + private static String[] prefixSet(final Set<String> set, final
> String
> > prefix) {
> > + if (set == null) {
> > + return new String[0];
> > + }
> > + return set
> > + .stream()
> > + .filter(string -> string.startsWith(prefix))
> > + .toArray(String[]::new);
> > + }
> > +
> > @Override
> > public synchronized boolean stop(final long timeout, final TimeUnit
> > timeUnit) {
> > if (!this.isStarted() && !this.isStopped()) {
> >
>
Re: [logging-log4j2] branch release-2.x updated: Remove SetUtils from core.
Posted by Gary Gregory <ga...@gmail.com>.
+ return new String[0];
This should be a constant.
Gary
On Mon, Dec 13, 2021 at 6:35 AM <vy...@apache.org> wrote:
> This is an automated email from the ASF dual-hosted git repository.
>
> vy 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 ad0d0c9 Remove SetUtils from core.
> ad0d0c9 is described below
>
> commit ad0d0c900f75961691eb98065453deca7ade5419
> Author: Volkan Yazici <vo...@yazi.ci>
> AuthorDate: Sun Dec 12 21:14:12 2021 +0100
>
> Remove SetUtils from core.
> ---
> log4j-core/revapi.json | 5 +++
> .../apache/logging/log4j/core/util/SetUtils.java | 47
> ----------------------
> .../logging/log4j/web/Log4jWebInitializerImpl.java | 40 +++++++++++-------
> .../logging/log4j/web/Log4jWebInitializerImpl.java | 42
> ++++++++++++-------
> 4 files changed, 58 insertions(+), 76 deletions(-)
>
> diff --git a/log4j-core/revapi.json b/log4j-core/revapi.json
> index af702c0..95e6d71 100644
> --- a/log4j-core/revapi.json
> +++ b/log4j-core/revapi.json
> @@ -152,6 +152,11 @@
> "old": "class org.apache.logging.log4j.core.time.MutableInstant",
> "new": "class org.apache.logging.log4j.core.time.MutableInstant",
> "justification": "LOG4J2-3075 MutableInstant extends from
> TemporalAccessor"
> + },
> + {
> + "code": "java.class.removed",
> + "old": "class org.apache.logging.log4j.core.util.SetUtils",
> + "justification": "only used by web modules"
> }
> ]
> }
> diff --git
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
> deleted file mode 100644
> index e1a5218..0000000
> ---
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/SetUtils.java
> +++ /dev/null
> @@ -1,47 +0,0 @@
> -/*
> - * Licensed to the Apache Software Foundation (ASF) under one or more
> - * contributor license agreements. See the NOTICE file distributed with
> - * this work for additional information regarding copyright ownership.
> - * The ASF licenses this file to You under the Apache license, Version 2.0
> - * (the "License"); you may not use this file except in compliance with
> - * the License. You may obtain a copy of the License at
> - *
> - * http://www.apache.org/licenses/LICENSE-2.0
> - *
> - * Unless required by applicable law or agreed to in writing, software
> - * distributed under the License is distributed on an "AS IS" BASIS,
> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> - * See the license for the specific language governing permissions and
> - * limitations under the license.
> - */
> -package org.apache.logging.log4j.core.util;
> -
> -import java.util.Set;
> -
> -/**
> - * Set-related convenience methods.
> - */
> -public final class SetUtils {
> -
> - private static final String[] EMPTY_STRINGS = new String[0];
> -
> - private SetUtils() {}
> -
> - /**
> - * Collects strings starting with the given {@code prefix} from the
> given {@code set}.
> - *
> - * @param set a (nullable) set of strings
> - * @param prefix a prefix to look for in the string set
> - * @return an array of the matching strings from the given set
> - */
> - public static String[] prefixSet(final Set<String> set, final String
> prefix) {
> - if (set == null) {
> - return EMPTY_STRINGS;
> - }
> - return set
> - .stream()
> - .filter(string -> string.startsWith(prefix))
> - .toArray(String[]::new);
> - }
> -
> -}
> diff --git
> a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> index 3ecbe14..5279df9 100644
> ---
> a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> +++
> b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> @@ -16,19 +16,7 @@
> */
> package org.apache.logging.log4j.web;
>
> -import java.net.URI;
> -import java.net.URL;
> -import java.text.SimpleDateFormat;
> -import java.util.ArrayList;
> -import java.util.Arrays;
> -import java.util.Date;
> -import java.util.List;
> -import java.util.Map;
> -import java.util.concurrent.ConcurrentHashMap;
> -import java.util.concurrent.TimeUnit;
> -
> import jakarta.servlet.ServletContext;
> -
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.core.AbstractLifeCycle;
> import org.apache.logging.log4j.core.LoggerContext;
> @@ -42,10 +30,16 @@ import
> org.apache.logging.log4j.core.selector.ContextSelector;
> import org.apache.logging.log4j.core.selector.NamedContextSelector;
> import org.apache.logging.log4j.core.util.Loader;
> import org.apache.logging.log4j.core.util.NetUtils;
> -import org.apache.logging.log4j.core.util.SetUtils;
> import org.apache.logging.log4j.spi.LoggerContextFactory;
> import org.apache.logging.log4j.util.LoaderUtil;
>
> +import java.net.URI;
> +import java.net.URL;
> +import java.text.SimpleDateFormat;
> +import java.util.*;
> +import java.util.concurrent.ConcurrentHashMap;
> +import java.util.concurrent.TimeUnit;
> +
> /**
> * This class initializes and deinitializes Log4j no matter how the
> initialization occurs.
> */
> @@ -193,7 +187,7 @@ final class Log4jWebInitializerImpl extends
> AbstractLifeCycle implements Log4jWe
> try {
> String configLocation = location;
> if (configLocation == null) {
> - final String[] paths =
> SetUtils.prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF +
> "log4j2");
> + final String[] paths =
> prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
> LOGGER.debug("getConfigURI found resource paths {} in
> servletContext at [{}]", Arrays.toString(paths), WEB_INF);
> if (paths.length == 1) {
> configLocation = paths[0];
> @@ -235,6 +229,24 @@ final class Log4jWebInitializerImpl extends
> AbstractLifeCycle implements Log4jWe
> return null;
> }
>
> + /**
> + * Collects strings starting with the given {@code prefix} from the
> given {@code set}.
> + *
> + * @param set a (nullable) set of strings
> + * @param prefix a prefix to look for in the string set
> + * @return an array of the matching strings from the given set
> + */
> + @SuppressWarnings("SameParameterValue")
> + private static String[] prefixSet(final Set<String> set, final String
> prefix) {
> + if (set == null) {
> + return new String[0];
> + }
> + return set
> + .stream()
> + .filter(string -> string.startsWith(prefix))
> + .toArray(String[]::new);
> + }
> +
> @Override
> public synchronized boolean stop(final long timeout, final TimeUnit
> timeUnit) {
> if (!this.isStarted() && !this.isStopped()) {
> diff --git
> a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> index ba53d4f..a53ab44 100644
> ---
> a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> +++
> b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
> @@ -16,19 +16,6 @@
> */
> package org.apache.logging.log4j.web;
>
> -import java.net.URI;
> -import java.net.URL;
> -import java.text.SimpleDateFormat;
> -import java.util.ArrayList;
> -import java.util.Arrays;
> -import java.util.Date;
> -import java.util.List;
> -import java.util.Map;
> -import java.util.concurrent.ConcurrentHashMap;
> -import java.util.concurrent.TimeUnit;
> -
> -import javax.servlet.ServletContext;
> -
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.core.AbstractLifeCycle;
> import org.apache.logging.log4j.core.LoggerContext;
> @@ -42,10 +29,17 @@ import
> org.apache.logging.log4j.core.selector.ContextSelector;
> import org.apache.logging.log4j.core.selector.NamedContextSelector;
> import org.apache.logging.log4j.core.util.Loader;
> import org.apache.logging.log4j.core.util.NetUtils;
> -import org.apache.logging.log4j.core.util.SetUtils;
> import org.apache.logging.log4j.spi.LoggerContextFactory;
> import org.apache.logging.log4j.util.LoaderUtil;
>
> +import javax.servlet.ServletContext;
> +import java.net.URI;
> +import java.net.URL;
> +import java.text.SimpleDateFormat;
> +import java.util.*;
> +import java.util.concurrent.ConcurrentHashMap;
> +import java.util.concurrent.TimeUnit;
> +
> /**
> * This class initializes and deinitializes Log4j no matter how the
> initialization occurs.
> */
> @@ -193,7 +187,7 @@ final class Log4jWebInitializerImpl extends
> AbstractLifeCycle implements Log4jWe
> try {
> String configLocation = location;
> if (configLocation == null) {
> - final String[] paths =
> SetUtils.prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF +
> "log4j2");
> + final String[] paths =
> prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2");
> LOGGER.debug("getConfigURI found resource paths {} in
> servletContext at [{}]", Arrays.toString(paths), WEB_INF);
> if (paths.length == 1) {
> configLocation = paths[0];
> @@ -235,6 +229,24 @@ final class Log4jWebInitializerImpl extends
> AbstractLifeCycle implements Log4jWe
> return null;
> }
>
> + /**
> + * Collects strings starting with the given {@code prefix} from the
> given {@code set}.
> + *
> + * @param set a (nullable) set of strings
> + * @param prefix a prefix to look for in the string set
> + * @return an array of the matching strings from the given set
> + */
> + @SuppressWarnings("SameParameterValue")
> + private static String[] prefixSet(final Set<String> set, final String
> prefix) {
> + if (set == null) {
> + return new String[0];
> + }
> + return set
> + .stream()
> + .filter(string -> string.startsWith(prefix))
> + .toArray(String[]::new);
> + }
> +
> @Override
> public synchronized boolean stop(final long timeout, final TimeUnit
> timeUnit) {
> if (!this.isStarted() && !this.isStopped()) {
>