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 2025/12/15 11:09:32 UTC
(logging-log4j2) branch release/2.25.3 updated (b4079d68c6 -> 041435dada)
This is an automated email from the ASF dual-hosted git repository.
vy pushed a change to branch release/2.25.3
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
discard b4079d68c6 Get ready for the `2.25.3` release
discard 4bfb155da2 Fix log message in `ApiLogger::setUseParentHandlers` (#3943)
discard 28f8f392cc Fix nullability issues in `SslConfiguration` (#3953)
discard 0bc96f1dca Remove the `com.github.spotbugs:spotbugs-annotations` dependency (#3984, #3985)
new 8d43a991c3 Remove the `com.github.spotbugs:spotbugs-annotations` dependency (#3984, #3985)
new 6076b1639a Fix nullability issues in `SslConfiguration` (#3953)
new 73db4fb4d9 Fix log message in `ApiLogger::setUseParentHandlers` (#3943)
new 041435dada Get ready for the `2.25.3` release
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (b4079d68c6)
\
N -- N -- N refs/heads/release/2.25.3 (041435dada)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java | 2 +-
.../org/apache/logging/log4j/core/appender/RandomAccessFileManager.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
(logging-log4j2) 02/04: Fix nullability issues in `SslConfiguration` (#3953)
Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch release/2.25.3
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 6076b1639a6a0b00d9e3977f78fa44a1b6bb3c1b
Author: Matt Sicker <ma...@apache.org>
AuthorDate: Fri Oct 24 14:15:55 2025 -0500
Fix nullability issues in `SslConfiguration` (#3953)
Co-authored-by: Volkan Yazıcı <vo...@yazi.ci>
---
.../log4j/core/appender/TlsSyslogAppenderTest.java | 4 +-
.../log4j/core/net/ssl/SslSocketManagerTest.java | 45 ++++++++++++++++++++++
.../core/appender/HttpURLConnectionManager.java | 10 +++--
.../apache/logging/log4j/core/net/SmtpManager.java | 9 +++--
.../logging/log4j/core/net/SslSocketManager.java | 15 ++++----
.../log4j/core/net/UrlConnectionFactory.java | 10 +++--
.../log4j/core/net/ssl/SslConfiguration.java | 12 +++++-
.../org/apache/logging/log4j/smtp/SmtpManager.java | 9 +++--
.../3947_fix_SslSocketManager_null_keystore.xml | 13 +++++++
9 files changed, 105 insertions(+), 22 deletions(-)
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java
index b18673e4be..5c6adf8f71 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java
@@ -83,7 +83,9 @@ class TlsSyslogAppenderTest extends SyslogAppenderTest {
final TrustStoreConfiguration tsc = new TrustStoreConfiguration(
SslKeyStoreConstants.TRUSTSTORE_LOCATION, SslKeyStoreConstants::TRUSTSTORE_PWD, null, null);
sslConfiguration = SslConfiguration.createSSLConfiguration(null, ksc, tsc);
- serverSocketFactory = sslConfiguration.getSslContext().getServerSocketFactory();
+ serverSocketFactory = sslConfiguration.getSslContext() != null
+ ? sslConfiguration.getSslContext().getServerSocketFactory()
+ : (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
}
private void initTlsTestEnvironment(final int numberOfMessages, final TlsSyslogMessageFormat messageFormat)
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslSocketManagerTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslSocketManagerTest.java
new file mode 100644
index 0000000000..85db9e8f0c
--- /dev/null
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslSocketManagerTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.net.ssl;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.core.net.SslSocketManager;
+import org.junit.jupiter.api.Test;
+import org.junitpioneer.jupiter.Issue;
+
+class SslSocketManagerTest {
+ @Issue("https://github.com/apache/logging-log4j2/issues/3947")
+ @Test
+ void shouldNotThrowExceptionWhenConfiguringTrustStore() {
+ final TrustStoreConfiguration trustStoreConfiguration = assertDoesNotThrow(() -> new TrustStoreConfiguration(
+ SslKeyStoreConstants.TRUSTSTORE_LOCATION,
+ SslKeyStoreConstants::TRUSTSTORE_PWD,
+ SslKeyStoreConstants.TRUSTSTORE_TYPE,
+ null));
+ final SslConfiguration sslConfiguration =
+ SslConfiguration.createSSLConfiguration(null, null, trustStoreConfiguration);
+ assertDoesNotThrow(() -> {
+ // noinspection EmptyTryBlock (try-with-resources to close `SslSocketManager`, even on failure
+ try (final SslSocketManager ignored = SslSocketManager.getSocketManager(
+ sslConfiguration, "localhost", 0, 0, 0, true, PatternLayout.createDefaultLayout(), 8192, null)) {
+ // Do nothing
+ }
+ });
+ }
+}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
index 7346341fc0..5cd96e5430 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
@@ -22,8 +22,10 @@ import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Objects;
import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.LoggerContext;
@@ -37,7 +39,7 @@ import org.apache.logging.log4j.core.util.IOUtils;
public class HttpURLConnectionManager extends HttpManager {
- private static final Charset CHARSET = Charset.forName("US-ASCII");
+ private static final Charset CHARSET = StandardCharsets.US_ASCII;
private final URL url;
private final boolean isHttps;
@@ -100,8 +102,10 @@ public class HttpURLConnectionManager extends HttpManager {
header.getName(), header.evaluate(getConfiguration().getStrSubstitutor()));
}
if (sslConfiguration != null) {
- ((HttpsURLConnection) urlConnection)
- .setSSLSocketFactory(sslConfiguration.getSslContext().getSocketFactory());
+ final SSLContext sslContext = sslConfiguration.getSslContext();
+ if (sslContext != null) {
+ ((HttpsURLConnection) urlConnection).setSSLSocketFactory(sslContext.getSocketFactory());
+ }
}
if (isHttps && !verifyHostname) {
((HttpsURLConnection) urlConnection).setHostnameVerifier(LaxHostnameVerifier.INSTANCE);
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index c525eabe1e..72376d3965 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -34,6 +34,7 @@ import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.util.ByteArrayDataSource;
+import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import org.apache.logging.log4j.LoggingException;
import org.apache.logging.log4j.core.Layout;
@@ -308,9 +309,11 @@ public class SmtpManager extends MailManager {
if (smtpProtocol.equals("smtps")) {
final SslConfiguration sslConfiguration = data.getSslConfiguration();
if (sslConfiguration != null) {
- final SSLSocketFactory sslSocketFactory =
- sslConfiguration.getSslContext().getSocketFactory();
- properties.put(prefix + ".ssl.socketFactory", sslSocketFactory);
+ final SSLContext sslContext = sslConfiguration.getSslContext();
+ if (sslContext != null) {
+ final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+ properties.put(prefix + ".ssl.socketFactory", sslSocketFactory);
+ }
properties.setProperty(
prefix + ".ssl.checkserveridentity", Boolean.toString(sslConfiguration.isVerifyHostName()));
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java
index 4f28e57502..994f11bbce 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java
@@ -27,8 +27,10 @@ import java.security.cert.X509Certificate;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import org.apache.logging.log4j.core.Layout;
@@ -245,6 +247,7 @@ public class SslSocketManager extends TcpSocketManager {
*/
private static String createSslConfigurationId(final SslConfiguration sslConfig) {
return String.valueOf(Stream.of(sslConfig.getKeyStoreConfig(), sslConfig.getTrustStoreConfig())
+ .filter(Objects::nonNull)
.flatMap(keyStoreConfig -> {
final Enumeration<String> aliases;
try {
@@ -289,15 +292,13 @@ public class SslSocketManager extends TcpSocketManager {
}
private static SSLSocketFactory createSslSocketFactory(final SslConfiguration sslConf) {
- SSLSocketFactory socketFactory;
-
if (sslConf != null) {
- socketFactory = sslConf.getSslContext().getSocketFactory();
- } else {
- socketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
+ final SSLContext sslContext = sslConf.getSslContext();
+ if (sslContext != null) {
+ return sslContext.getSocketFactory();
+ }
}
-
- return socketFactory;
+ return (SSLSocketFactory) SSLSocketFactory.getDefault();
}
private static class SslSocketManagerFactory extends TcpSocketManagerFactory<SslSocketManager, SslFactoryData> {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
index 91e7b0d81a..68b933bfea 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
@@ -27,6 +27,7 @@ import java.net.URLConnection;
import java.util.Arrays;
import java.util.List;
import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.net.ssl.LaxHostnameVerifier;
@@ -120,10 +121,13 @@ public class UrlConnectionFactory {
httpURLConnection.setIfModifiedSince(lastModifiedMillis);
}
if (url.getProtocol().equals(HTTPS) && sslConfiguration != null) {
- ((HttpsURLConnection) httpURLConnection)
- .setSSLSocketFactory(sslConfiguration.getSslContext().getSocketFactory());
+ final SSLContext sslContext = sslConfiguration.getSslContext();
+ final HttpsURLConnection httpsURLConnection = (HttpsURLConnection) httpURLConnection;
+ if (sslContext != null) {
+ httpsURLConnection.setSSLSocketFactory(sslContext.getSocketFactory());
+ }
if (!sslConfiguration.isVerifyHostName()) {
- ((HttpsURLConnection) httpURLConnection).setHostnameVerifier(LaxHostnameVerifier.INSTANCE);
+ httpsURLConnection.setHostnameVerifier(LaxHostnameVerifier.INSTANCE);
}
}
urlConnection = httpURLConnection;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfiguration.java
index cb24113bd9..41e2fc1031 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfiguration.java
@@ -54,6 +54,7 @@ public class SslConfiguration {
@Nullable
private final TrustStoreConfiguration trustStoreConfig;
+ @Nullable
private final transient SSLContext sslContext;
private SslConfiguration(
@@ -88,8 +89,9 @@ public class SslConfiguration {
* @deprecated Use {@link SSLContext#getSocketFactory()} on {@link #getSslContext()}
*/
@Deprecated
+ @Nullable
public SSLSocketFactory getSslSocketFactory() {
- return sslContext.getSocketFactory();
+ return sslContext != null ? sslContext.getSocketFactory() : null;
}
/**
@@ -99,10 +101,12 @@ public class SslConfiguration {
* @deprecated Use {@link SSLContext#getServerSocketFactory()} on {@link #getSslContext()}
*/
@Deprecated
+ @Nullable
public SSLServerSocketFactory getSslServerSocketFactory() {
- return sslContext.getServerSocketFactory();
+ return sslContext != null ? sslContext.getServerSocketFactory() : null;
}
+ @Nullable
private static SSLContext createDefaultSslContext(final String protocol) {
try {
return SSLContext.getDefault();
@@ -121,6 +125,7 @@ public class SslConfiguration {
}
}
+ @Nullable
private static SSLContext createSslContext(
final String protocol,
@Nullable final KeyStoreConfiguration keyStoreConfig,
@@ -242,14 +247,17 @@ public class SslConfiguration {
return verifyHostName;
}
+ @Nullable
public KeyStoreConfiguration getKeyStoreConfig() {
return keyStoreConfig;
}
+ @Nullable
public TrustStoreConfiguration getTrustStoreConfig() {
return trustStoreConfig;
}
+ @Nullable
public SSLContext getSslContext() {
return sslContext;
}
diff --git a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/SmtpManager.java b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/SmtpManager.java
index ab1963ea23..f98457a410 100644
--- a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/SmtpManager.java
+++ b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/SmtpManager.java
@@ -36,6 +36,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;
+import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import org.apache.logging.log4j.LoggingException;
import org.apache.logging.log4j.core.Layout;
@@ -262,9 +263,11 @@ public class SmtpManager extends MailManager {
if (smtpProtocol.equals("smtps")) {
final SslConfiguration sslConfiguration = data.getSslConfiguration();
if (sslConfiguration != null) {
- final SSLSocketFactory sslSocketFactory =
- sslConfiguration.getSslContext().getSocketFactory();
- properties.put(prefix + ".ssl.socketFactory", sslSocketFactory);
+ final SSLContext sslContext = sslConfiguration.getSslContext();
+ if (sslContext != null) {
+ final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+ properties.put(prefix + ".ssl.socketFactory", sslSocketFactory);
+ }
properties.setProperty(
prefix + ".ssl.checkserveridentity", Boolean.toString(sslConfiguration.isVerifyHostName()));
}
diff --git a/src/changelog/.2.x.x/3947_fix_SslSocketManager_null_keystore.xml b/src/changelog/.2.x.x/3947_fix_SslSocketManager_null_keystore.xml
new file mode 100644
index 0000000000..ff6efe8256
--- /dev/null
+++ b/src/changelog/.2.x.x/3947_fix_SslSocketManager_null_keystore.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns="https://logging.apache.org/xml/ns"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ https://logging.apache.org/xml/ns
+ https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
+ type="fixed">
+ <issue id="3947" link="https://github.com/apache/logging-log4j2/issues/3947"/>
+ <issue id="3953" link="https://github.com/apache/logging-log4j2/pull/3953"/>
+ <description format="asciidoc">
+ Fix failures caused by null `SslConfiguration`
+ </description>
+</entry>
(logging-log4j2) 04/04: Get ready for the `2.25.3` release
Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch release/2.25.3
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 041435dadabbe6e39f13aa455ad18df5bc4a7211
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Mon Dec 15 11:54:25 2025 +0100
Get ready for the `2.25.3` release
---
pom.xml | 10 ++++-----
src/changelog/2.25.3/.release-notes.adoc.ftl | 25 ++++++++++++++++++++++
src/changelog/2.25.3/.release.xml | 21 ++++++++++++++++++
.../3871_graalvm_binary_name.xml | 2 +-
...35_optimize_DefaultThreadContextMap_getCopy.xml | 0
.../3947_fix_SslSocketManager_null_keystore.xml | 0
.../3985_remove_spotbugs_annotations.xml | 0
7 files changed, 52 insertions(+), 6 deletions(-)
diff --git a/pom.xml b/pom.xml
index e8770e87a5..a1844ac17c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -279,7 +279,7 @@
<scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false" child.scm.url.inherit.append.path="false">
<connection>scm:git:https://github.com/apache/logging-log4j2.git</connection>
<developerConnection>scm:git:https://github.com/apache/logging-log4j2.git</developerConnection>
- <tag>rel/2.25.2</tag>
+ <tag>rel/2.25.3</tag>
<url>https://github.com/apache/logging-log4j2</url>
</scm>
@@ -307,11 +307,11 @@
<properties>
<!-- project version -->
- <revision>2.25.2</revision>
+ <revision>2.25.3</revision>
<!-- Versions used on the site: no snapshots! -->
- <site-log4j-api.version>2.25.2</site-log4j-api.version>
- <site-log4j-core.version>2.25.2</site-log4j-core.version>
- <site-log4j-layout-template-json.version>2.25.2</site-log4j-layout-template-json.version>
+ <site-log4j-api.version>2.25.3</site-log4j-api.version>
+ <site-log4j-core.version>2.25.3</site-log4j-core.version>
+ <site-log4j-layout-template-json.version>2.25.3</site-log4j-layout-template-json.version>
<!-- =================
Common properties
diff --git a/src/changelog/2.25.3/.release-notes.adoc.ftl b/src/changelog/2.25.3/.release-notes.adoc.ftl
new file mode 100644
index 0000000000..5e29b89f9e
--- /dev/null
+++ b/src/changelog/2.25.3/.release-notes.adoc.ftl
@@ -0,0 +1,25 @@
+////
+ 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
+
+ https://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.
+////
+
+[${'#release-notes-' + release.version?replace("[^a-zA-Z0-9]", "-", "r")}]
+== ${release.version}
+
+<#if release.date?has_content>Release date:: ${release.date}</#if>
+
+This patch release addresses issues detailed in the changelog below.
+
+<#include "../.changelog.adoc.ftl">
diff --git a/src/changelog/2.25.3/.release.xml b/src/changelog/2.25.3/.release.xml
new file mode 100644
index 0000000000..983946a176
--- /dev/null
+++ b/src/changelog/2.25.3/.release.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<release xmlns="https://logging.apache.org/xml/ns"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
+ date="2025-12-15" version="2.25.3"/>
diff --git a/src/changelog/.2.x.x/3871_graalvm_binary_name.xml b/src/changelog/2.25.3/3871_graalvm_binary_name.xml
similarity index 94%
rename from src/changelog/.2.x.x/3871_graalvm_binary_name.xml
rename to src/changelog/2.25.3/3871_graalvm_binary_name.xml
index a6a5e8c257..e188de9b30 100644
--- a/src/changelog/.2.x.x/3871_graalvm_binary_name.xml
+++ b/src/changelog/2.25.3/3871_graalvm_binary_name.xml
@@ -8,6 +8,6 @@
<issue id="3871" link="https://github.com/apache/logging-log4j2/issues/3871"/>
<issue id="3996" link="https://github.com/apache/logging-log4j2/pull/3996"/>
<description format="asciidoc">
- Fix GraalVM metadata for nested classes to use binary names instead of canonical names.
+ Fix GraalVM metadata for nested classes to use binary names instead of canonical names
</description>
</entry>
diff --git a/src/changelog/.2.x.x/3935_optimize_DefaultThreadContextMap_getCopy.xml b/src/changelog/2.25.3/3935_optimize_DefaultThreadContextMap_getCopy.xml
similarity index 100%
rename from src/changelog/.2.x.x/3935_optimize_DefaultThreadContextMap_getCopy.xml
rename to src/changelog/2.25.3/3935_optimize_DefaultThreadContextMap_getCopy.xml
diff --git a/src/changelog/.2.x.x/3947_fix_SslSocketManager_null_keystore.xml b/src/changelog/2.25.3/3947_fix_SslSocketManager_null_keystore.xml
similarity index 100%
rename from src/changelog/.2.x.x/3947_fix_SslSocketManager_null_keystore.xml
rename to src/changelog/2.25.3/3947_fix_SslSocketManager_null_keystore.xml
diff --git a/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml b/src/changelog/2.25.3/3985_remove_spotbugs_annotations.xml
similarity index 100%
rename from src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml
rename to src/changelog/2.25.3/3985_remove_spotbugs_annotations.xml
(logging-log4j2) 03/04: Fix log message in `ApiLogger::setUseParentHandlers` (#3943)
Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch release/2.25.3
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 73db4fb4d95525e0dee7ef7ea57ef95108985fbc
Author: Jeff Maxwell <je...@uptake.com>
AuthorDate: Thu Oct 9 03:23:58 2025 -0400
Fix log message in `ApiLogger::setUseParentHandlers` (#3943)
---
log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java
index 861eaeff2f..91b5b94484 100644
--- a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java
+++ b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java
@@ -125,7 +125,7 @@ public class ApiLogger extends Logger {
@Override
public void setUseParentHandlers(boolean useParentHandlers) {
- LOGGER.warn(MUTATOR_DISABLED, "setLevel", useParentHandlers);
+ LOGGER.warn(MUTATOR_DISABLED, "setUseParentHandlers", useParentHandlers);
super.setUseParentHandlers(useParentHandlers);
}
(logging-log4j2) 01/04: Remove the `com.github.spotbugs:spotbugs-annotations` dependency (#3984, #3985)
Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch release/2.25.3
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 8d43a991c3068c6ff4c8fc38ee2c73ba5d24299a
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Wed Nov 26 01:25:09 2025 +0500
Remove the `com.github.spotbugs:spotbugs-annotations` dependency (#3984, #3985)
Co-authored-by: Volkan Yazıcı <vo...@yazi.ci>
---
.github/dependabot.yaml | 3 ---
.../org/apache/log4j/DefaultThrowableRenderer.java | 2 +-
.../main/java/org/apache/log4j/FileAppender.java | 2 +-
.../src/main/java/org/apache/log4j/Hierarchy.java | 2 +-
.../java/org/apache/log4j/PropertyConfigurator.java | 2 +-
.../java/org/apache/log4j/RollingFileAppender.java | 2 +-
.../java/org/apache/log4j/helpers/FileWatchdog.java | 2 +-
.../org/apache/log4j/helpers/UtilLoggingLevel.java | 2 +-
.../java/org/apache/log4j/helpers/package-info.java | 2 +-
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../org/apache/log4j/layout/Log4j1XmlLayout.java | 2 +-
.../main/java/org/apache/log4j/package-info.java | 2 +-
.../java/org/apache/log4j/xml/DOMConfigurator.java | 2 +-
.../java/org/apache/log4j/xml/XmlConfiguration.java | 2 +-
.../java/org/apache/log4j/xml/package-info.java | 2 +-
.../org/apache/logging/log4j/test/TestLogger.java | 2 +-
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../logging/log4j/test/junit/DirectoryCleaner.java | 2 +-
.../logging/log4j/test/junit/FileCleaner.java | 2 +-
.../apache/logging/log4j/test/junit/SerialUtil.java | 2 +-
.../logging/log4j/test/junit/package-info.java | 2 +-
.../org/apache/logging/log4j/test/package-info.java | 2 +-
.../logging/log4j/status/StatusLoggerDateTest.java | 2 +-
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../apache/logging/log4j/simple/SimpleLogger.java | 2 +-
.../logging/log4j/simple/SimpleLoggerContext.java | 2 +-
.../apache/logging/log4j/simple/package-info.java | 2 +-
.../logging/log4j/status/StatusConsoleListener.java | 2 +-
.../org/apache/logging/log4j/status/StatusData.java | 4 ++--
.../apache/logging/log4j/status/StatusLogger.java | 4 ++--
.../apache/logging/log4j/status/package-info.java | 2 +-
.../log4j/util/PropertyFilePropertySource.java | 2 +-
.../org/apache/logging/log4j/util/ProviderUtil.java | 2 +-
.../log4j/util/internal/SerializationUtil.java | 2 +-
.../org/apache/logging/log4j/util/package-info.java | 2 +-
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../logging/log4j/appserver/jetty/Log4j2Logger.java | 2 +-
.../logging/log4j/appserver/jetty/package-info.java | 2 +-
.../log4j/appserver/tomcat/TomcatLogger.java | 2 +-
.../log4j/appserver/tomcat/package-info.java | 2 +-
.../log4j/core/test/AvailablePortFinder.java | 2 +-
.../log4j/core/test/GcFreeLoggingTestUtil.java | 2 +-
.../test/appender/db/jdbc/JdbcH2TestHelper.java | 2 +-
.../core/test/appender/db/jdbc/package-info.java | 2 +-
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../test/junit/AbstractExternalFileCleaner.java | 2 +-
.../logging/log4j/core/test/junit/JdbcRule.java | 2 +-
.../logging/log4j/core/test/junit/package-info.java | 2 +-
.../core/test/net/mock/MockTcpSyslogServer.java | 2 +-
.../log4j/core/test/net/mock/package-info.java | 2 +-
.../log4j/core/test/net/ssl/TlsSyslogTestUtil.java | 2 +-
.../log4j/core/test/net/ssl/package-info.java | 2 +-
.../logging/log4j/core/test/package-info.java | 2 +-
.../log4j/core/test/smtp/SimpleSmtpServer.java | 2 +-
.../logging/log4j/core/test/smtp/package-info.java | 2 +-
.../core/appender/SocketAppenderReconnectTest.java | 2 +-
.../core/config/xml/XmlConfigurationPropsTest.java | 2 +-
.../apache/logging/log4j/core/LoggerContext.java | 2 +-
.../logging/log4j/core/appender/FileManager.java | 2 +-
.../core/appender/HttpURLConnectionManager.java | 2 +-
.../core/appender/MemoryMappedFileManager.java | 2 +-
.../core/appender/RandomAccessFileManager.java | 2 +-
.../core/appender/db/jdbc/JdbcDatabaseManager.java | 2 +-
.../log4j/core/appender/db/jdbc/package-info.java | 2 +-
.../appender/rolling/AbstractRolloverStrategy.java | 2 +-
.../appender/rolling/DefaultRolloverStrategy.java | 2 +-
.../rolling/DirectWriteRolloverStrategy.java | 2 +-
.../log4j/core/appender/rolling/FileExtension.java | 2 +-
.../core/appender/rolling/RollingFileManager.java | 2 +-
.../rolling/RollingRandomAccessFileManager.java | 2 +-
.../appender/rolling/TimeBasedTriggeringPolicy.java | 2 +-
.../appender/rolling/action/AbstractPathAction.java | 2 +-
.../appender/rolling/action/FileRenameAction.java | 2 +-
.../rolling/action/PosixViewAttributeAction.java | 2 +-
.../logging/log4j/core/async/AsyncLoggerConfig.java | 2 +-
.../log4j/core/config/ConfigurationSource.java | 2 +-
.../builder/impl/DefaultConfigurationBuilder.java | 2 +-
.../core/config/builder/impl/package-info.java | 2 +-
.../core/config/plugins/convert/TypeConverters.java | 2 +-
.../core/config/plugins/convert/package-info.java | 2 +-
.../core/config/plugins/util/ResolverUtil.java | 2 +-
.../core/config/plugins/util/package-info.java | 2 +-
.../core/config/status/StatusConfiguration.java | 2 +-
.../log4j/core/config/status/package-info.java | 2 +-
.../log4j/core/config/xml/XmlConfiguration.java | 2 +-
.../core/filter/MutableThreadContextMapFilter.java | 2 +-
.../logging/log4j/core/filter/package-info.java | 2 +-
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../logging/log4j/core/jmx/LoggerContextAdmin.java | 2 +-
.../apache/logging/log4j/core/jmx/package-info.java | 2 +-
.../logging/log4j/core/layout/GelfLayout.java | 2 +-
.../logging/log4j/core/layout/HtmlLayout.java | 2 +-
.../logging/log4j/core/lookup/MainMapLookup.java | 2 +-
.../apache/logging/log4j/core/net/JndiManager.java | 2 +-
.../apache/logging/log4j/core/net/SmtpManager.java | 2 +-
.../logging/log4j/core/net/TcpSocketManager.java | 2 +-
.../log4j/core/net/UrlConnectionFactory.java | 2 +-
.../apache/logging/log4j/core/net/package-info.java | 2 +-
.../log4j/core/net/ssl/FilePasswordProvider.java | 2 +-
.../log4j/core/net/ssl/LaxHostnameVerifier.java | 2 +-
.../logging/log4j/core/net/ssl/package-info.java | 2 +-
.../org/apache/logging/log4j/core/package-info.java | 2 +-
.../logging/log4j/core/script/ScriptFile.java | 2 +-
.../apache/logging/log4j/core/tools/Generate.java | 2 +-
.../logging/log4j/core/tools/package-info.java | 2 +-
.../log4j/core/tools/picocli/CommandLine.java | 2 +-
.../apache/logging/log4j/core/util/FileUtils.java | 2 +-
.../apache/logging/log4j/core/util/NameUtil.java | 2 +-
.../apache/logging/log4j/core/util/NetUtils.java | 2 +-
.../org/apache/logging/log4j/core/util/Source.java | 2 +-
.../apache/logging/log4j/core/util/Throwables.java | 2 +-
.../logging/log4j/core/util/package-info.java | 2 +-
.../logging/log4j/jul/Log4jBridgeHandler.java | 2 +-
.../jul/internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../org/apache/logging/log4j/jul/package-info.java | 2 +-
.../annotation/SuppressFBWarnings.java} | 21 ++++++++++++++-------
.../log4j/layout/template/json/util/Uris.java | 2 +-
.../layout/template/json/util/package-info.java | 2 +-
log4j-parent/pom.xml | 15 ---------------
.../internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
.../log4j/perf/jmh/JdbcAppenderBenchmark.java | 2 +-
.../log4j/perf/jmh/JpaAppenderBenchmark.java | 2 +-
.../.2.x.x/3985_remove_spotbugs_annotations.xml | 13 +++++++++++++
123 files changed, 252 insertions(+), 194 deletions(-)
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 5e7fa1e63c..6c73c48d8d 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -90,9 +90,6 @@ updates:
registries:
- maven-central
ignore:
- # `com.github.spotbugs:spotbugs-annotations:4.9.0` and onwards require Java 11
- - dependency-name: "com.github.spotbugs:spotbugs-annotations"
- versions: [ "[4.9.0,)" ]
# Jetty 10.x does not have an internal logging API
- dependency-name: "org.eclipse.jetty:*"
versions: [ "[10,)" ]
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java b/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java
index 79129edbb3..0c84d3d0ce 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.LineNumberReader;
@@ -24,6 +23,7 @@ import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.spi.ThrowableRenderer;
/**
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java b/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java
index 25b6edf77d..69996e7da4 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
@@ -26,6 +25,7 @@ import java.io.InterruptedIOException;
import java.io.Writer;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.QuietWriter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.spi.ErrorCode;
/**
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java b/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java
index 850ea52bd6..d147155867 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
@@ -25,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.legacy.core.ContextUtil;
import org.apache.log4j.or.ObjectRenderer;
import org.apache.log4j.or.RendererMap;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java b/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java
index 647b86e5b9..9892109b9b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InputStream;
import java.io.InterruptedIOException;
@@ -37,6 +36,7 @@ import org.apache.log4j.config.PropertySetter;
import org.apache.log4j.helpers.FileWatchdog;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.or.RendererMap;
import org.apache.log4j.spi.Configurator;
import org.apache.log4j.spi.ErrorHandler;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java b/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java
index ce03ec2bc8..315ff108d7 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.InterruptedIOException;
@@ -24,6 +23,7 @@ import java.io.Writer;
import org.apache.log4j.helpers.CountingQuietWriter;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.spi.LoggingEvent;
/**
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java
index a43776bed7..7be1458011 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java
@@ -16,8 +16,8 @@
*/
package org.apache.log4j.helpers;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
/**
* Checks every now and then that a certain file has not changed. If it has, then call the {@link #doOnChange} method.
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java
index f99ad0b8c7..5e64f0c813 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java
@@ -18,10 +18,10 @@ package org.apache.log4j.helpers;
import static org.apache.logging.log4j.util.Strings.toRootUpperCase;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Level;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
/**
* An extension of the Level class that provides support for java.util.logging Levels.
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java
index b94af3ba61..a6e54fdb7b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java
@@ -18,7 +18,7 @@
* Log4j 1.x compatibility layer.
*/
@Export
-@Version("2.20.3")
+@Version("2.26.0")
package org.apache.log4j.helpers;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-1.2-api/src/main/java/org/apache/log4j/internal/annotation/SuppressFBWarnings.java
similarity index 70%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-1.2-api/src/main/java/org/apache/log4j/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..25809ea12d 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.log4j.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java b/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java
index a508218b11..ed7ff047ae 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java
@@ -16,12 +16,12 @@
*/
package org.apache.log4j.layout;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Objects;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Node;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java b/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java
index 7462396fa7..e8b2323477 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java
@@ -18,7 +18,7 @@
* Log4j 1.x compatibility layer.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.log4j;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
index 5aff69da56..17e904d08c 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j.xml;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -34,6 +33,7 @@ import org.apache.log4j.LogManager;
import org.apache.log4j.config.PropertySetter;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java
index dd2a0312b0..a4e7916139 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java
@@ -16,7 +16,6 @@
*/
package org.apache.log4j.xml;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.util.HashMap;
@@ -36,6 +35,7 @@ import org.apache.log4j.bridge.FilterAdapter;
import org.apache.log4j.config.Log4j1Configuration;
import org.apache.log4j.config.PropertySetter;
import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.log4j.rewrite.RewritePolicy;
import org.apache.log4j.spi.AppenderAttachable;
import org.apache.log4j.spi.ErrorHandler;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java
index b7c3d31598..947cfd6965 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java
@@ -18,7 +18,7 @@
* Log4j 1.x compatibility layer.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.log4j.xml;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java
index e95f1e9bb6..3dd4278ec2 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.test;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
@@ -28,6 +27,7 @@ import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.MessageFactory;
import org.apache.logging.log4j.spi.AbstractLogger;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
/**
*
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-api-test/src/main/java/org/apache/logging/log4j/test/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..ced8d09001 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.test.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
index 84c12b4210..efcd29753d 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.test.junit;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
@@ -26,6 +25,7 @@ import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Collection;
import java.util.HashSet;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
import org.junit.jupiter.api.extension.ExtensionContext;
class DirectoryCleaner extends AbstractFileCleaner {
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
index 9a9500d53a..bf49a7ea51 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
@@ -16,13 +16,13 @@
*/
package org.apache.logging.log4j.test.junit;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.HashSet;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
import org.junit.jupiter.api.extension.ExtensionContext;
class FileCleaner extends AbstractFileCleaner {
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
index e568e41513..707fee87d3 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.test.junit;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -25,6 +24,7 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.util.Constants;
import org.apache.logging.log4j.util.FilteredObjectInputStream;
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
index 2a37b2933f..ca324bf73a 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.24.1")
+@Version("2.26.0")
package org.apache.logging.log4j.test.junit;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java
index 5a0ebc4510..36413766c5 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.21.1")
+@Version("2.26.0")
package org.apache.logging.log4j.test;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
index 0978587692..55cd157783 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
@@ -18,11 +18,11 @@ package org.apache.logging.log4j.status;
import static org.assertj.core.api.Assertions.assertThat;
-import edu.umd.cs.findbugs.annotations.Nullable;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Properties;
+import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-api/src/main/java/org/apache/logging/log4j/internal/annotation/SuppressFBWarnings.java
similarity index 70%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-api/src/main/java/org/apache/logging/log4j/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..2023a4cb06 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
index 1690893187..4d36201e9e 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.simple;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.PrintStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -25,6 +24,7 @@ import java.util.Map;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.MessageFactory;
import org.apache.logging.log4j.spi.AbstractLogger;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
index 55cced06f5..3286bb356d 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
@@ -16,9 +16,9 @@
*/
package org.apache.logging.log4j.simple;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.PrintStream;
import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.message.MessageFactory;
import org.apache.logging.log4j.message.ParameterizedMessageFactory;
import org.apache.logging.log4j.simple.internal.SimpleProvider;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java b/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java
index 29139a12ac..3e5667856f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java
@@ -20,7 +20,7 @@
* Providers are able to be loaded at runtime.
*/
@Export
-@Version("2.24.1")
+@Version("2.26.0")
package org.apache.logging.log4j.simple;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
index ce23ff5aa9..7e7b2b2c92 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
@@ -18,13 +18,13 @@ package org.apache.logging.log4j.status;
import static java.util.Objects.requireNonNull;
-import edu.umd.cs.findbugs.annotations.Nullable;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import org.apache.logging.log4j.Level;
+import org.jspecify.annotations.Nullable;
/**
* A {@link StatusListener} that writes to the console.
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
index 1b0dcf31de..7cef97d94c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
@@ -19,15 +19,15 @@ package org.apache.logging.log4j.status;
import static java.util.Objects.requireNonNull;
import static org.apache.logging.log4j.util.Chars.SPACE;
-import edu.umd.cs.findbugs.annotations.Nullable;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.Serializable;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.message.Message;
+import org.jspecify.annotations.Nullable;
/**
* The Status data.
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
index 699dc66c8a..06d8a547b0 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
@@ -18,8 +18,6 @@ package org.apache.logging.log4j.status;
import static java.util.Objects.requireNonNull;
-import edu.umd.cs.findbugs.annotations.Nullable;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -41,11 +39,13 @@ import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.MessageFactory;
import org.apache.logging.log4j.message.ParameterizedNoReferenceMessageFactory;
import org.apache.logging.log4j.spi.AbstractLogger;
import org.apache.logging.log4j.util.Constants;
+import org.jspecify.annotations.Nullable;
/**
* Records events that occur in the logging system.
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java b/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java
index 12fddb6039..25274a7b23 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java
@@ -19,7 +19,7 @@
* used by applications reporting on the status of the logging system
*/
@Export
-@Version("2.23.1")
+@Version("2.26.0")
package org.apache.logging.log4j.status;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
index acb4310c3c..4c665879ba 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
@@ -16,12 +16,12 @@
*/
package org.apache.logging.log4j.util;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
/**
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java
index 2b74606f08..d66c35c34c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java
@@ -21,7 +21,6 @@ import static org.apache.logging.log4j.spi.Provider.PROVIDER_PROPERTY_NAME;
import aQute.bnd.annotation.Cardinality;
import aQute.bnd.annotation.Resolution;
import aQute.bnd.annotation.spi.ServiceConsumer;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.URL;
import java.util.Collection;
@@ -35,6 +34,7 @@ import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.simple.internal.SimpleProvider;
import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.apache.logging.log4j.spi.Provider;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
index 6180f47421..3cb7066898 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.util.internal;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -29,6 +28,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.List;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.FilteredObjectInputStream;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java
index 23fcfbd931..f20d42965c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java
@@ -20,7 +20,7 @@
* There are no guarantees for binary or logical compatibility in this package.
*/
@Export
-@Version("2.25.0")
+@Version("2.26.0")
package org.apache.logging.log4j.util;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..480ad32607 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.appserver.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
index 70b9344328..b520c04f5b 100644
--- a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
+++ b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
@@ -16,9 +16,9 @@
*/
package org.apache.logging.log4j.appserver.jetty;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.appserver.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.spi.ExtendedLogger;
import org.apache.logging.log4j.spi.LoggerContext;
import org.eclipse.jetty.util.log.AbstractLogger;
diff --git a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
index 41b7bce811..d4e606ba46 100644
--- a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
+++ b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
@@ -19,7 +19,7 @@
*/
@Open
@Export
-@Version("2.20.1")
+@Version("2.26.0")
package org.apache.logging.log4j.appserver.jetty;
import aQute.bnd.annotation.jpms.Open;
diff --git a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
index 11817c6618..2176acc494 100644
--- a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
+++ b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
@@ -18,13 +18,13 @@ package org.apache.logging.log4j.appserver.tomcat;
import aQute.bnd.annotation.Resolution;
import aQute.bnd.annotation.spi.ServiceProvider;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import org.apache.juli.logging.Log;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.appserver.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.spi.ExtendedLogger;
import org.apache.logging.log4j.spi.LoggerContext;
diff --git a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
index d8d724f4eb..0a84c1f708 100644
--- a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
+++ b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
@@ -18,7 +18,7 @@
* Log4j integration with Apache Tomcat 8.5 or greater.
*/
@Export
-@Version("2.20.1")
+@Version("2.26.0")
package org.apache.logging.log4j.appserver.tomcat;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
index ffd7d0b276..8758a6e0bb 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
@@ -16,13 +16,13 @@
*/
package org.apache.logging.log4j.core.test;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.util.NoSuchElementException;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.status.StatusLogger;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
index ace4185467..a299334b05 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
@@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import com.google.monitoring.runtime.instrumentation.AllocationRecorder;
import com.google.monitoring.runtime.instrumentation.Sampler;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.net.URL;
import java.nio.charset.Charset;
@@ -35,6 +34,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.message.StringMapMessage;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
index 95ee5330ca..e8dcc9fa60 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
@@ -16,13 +16,13 @@
*/
package org.apache.logging.log4j.core.test.appender.db.jdbc;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.logging.log4j.core.appender.db.jdbc.AbstractConnectionSource;
import org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
@SuppressFBWarnings("HARD_CODE_PASSWORD")
public class JdbcH2TestHelper {
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
index 638390f63a..b49536fd02 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.20.3")
+@Version("2.26.0")
package org.apache.logging.log4j.core.test.appender.db.jdbc;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..c30fd886e4 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.core.test.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
index 4477b55da7..9fa720e66e 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.test.junit;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
@@ -28,6 +27,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
import org.junit.Assert;
import org.junit.rules.ExternalResource;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
index d6f76b4fa2..76065470d5 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
@@ -16,13 +16,13 @@
*/
package org.apache.logging.log4j.core.test.junit;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
index 4103b14804..a92fa4c345 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
@@ -20,7 +20,7 @@
* @see org.junit.rules.TestRule
*/
@Export
-@Version("2.23.1")
+@Version("2.26.0")
package org.apache.logging.log4j.core.test.junit;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
index 7fecbe9ef8..87a8703047 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
@@ -16,11 +16,11 @@
*/
package org.apache.logging.log4j.core.test.net.mock;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
public class MockTcpSyslogServer extends MockSyslogServer {
private final ServerSocket serverSocket;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
index 466921018d..a7501fb3cd 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.21.0")
+@Version("2.26.0")
package org.apache.logging.log4j.core.test.net.mock;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
index bb3b7691b6..a67aa3d7a9 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
@@ -16,9 +16,9 @@
*/
package org.apache.logging.log4j.core.test.net.ssl;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.ArrayList;
import java.util.Random;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
@SuppressFBWarnings("PREDICTABLE_RANDOM")
public class TlsSyslogTestUtil {
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
index 97a787665d..734cd0dc60 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.logging.log4j.core.test.net.ssl;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
index 2199930f31..70fbbc2b6f 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.25.0")
+@Version("2.26.0")
@BaselineIgnore("2.25.0")
package org.apache.logging.log4j.core.test;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
index c02b115d22..42f3b05eac 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.test.smtp;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -26,6 +25,7 @@ import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.util.Strings;
/**
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
index 3d4e74b7a9..8b7122660a 100644
--- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.logging.log4j.core.test.smtp;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
index 619749eacf..ebba3ba42f 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
@@ -21,7 +21,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
import static org.junit.jupiter.api.Assertions.fail;
-import edu.umd.cs.findbugs.annotations.Nullable;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -48,6 +47,7 @@ import org.apache.logging.log4j.core.net.TcpSocketManager.HostResolver;
import org.apache.logging.log4j.core.net.ssl.SslKeyStoreConstants;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.test.junit.UsingStatusListener;
+import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.CleanupMode;
import org.junit.jupiter.api.io.TempDir;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
index 3437f787b8..d421d58c3a 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
@@ -22,7 +22,6 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
-import edu.umd.cs.findbugs.annotations.Nullable;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
@@ -31,6 +30,7 @@ import org.apache.logging.log4j.status.StatusConsoleListener;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.test.junit.SetTestProperty;
import org.apache.logging.log4j.test.junit.UsingStatusLoggerMock;
+import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 6db471cb87..da62cc2485 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.core;
import static org.apache.logging.log4j.core.jmx.internal.JmxUtil.isJmxDisabled;
import static org.apache.logging.log4j.core.util.ShutdownCallbackRegistry.SHUTDOWN_HOOK_MARKER;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -42,6 +41,7 @@ import org.apache.logging.log4j.core.config.DefaultConfiguration;
import org.apache.logging.log4j.core.config.NullConfiguration;
import org.apache.logging.log4j.core.config.Reconfigurable;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.jmx.Server;
import org.apache.logging.log4j.core.util.Cancellable;
import org.apache.logging.log4j.core.util.Constants;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
index 46123ce074..3d0a0d7e6e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -42,6 +41,7 @@ import java.util.Set;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.core.util.FileUtils;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
index a4e9858431..7346341fc0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -31,6 +30,7 @@ import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationException;
import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.net.ssl.LaxHostnameVerifier;
import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
import org.apache.logging.log4j.core.util.IOUtils;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
index d5f8949adb..07a0b7aa62 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -30,6 +29,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.NullOutputStream;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
index 41d503d0b1..13b8c7e1f8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -28,6 +27,7 @@ import java.util.Map;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.NullOutputStream;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
index 54ac2aace9..34a932f274 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.db.jdbc;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.Reader;
import java.io.Serializable;
import java.io.StringReader;
@@ -50,6 +49,7 @@ import org.apache.logging.log4j.core.appender.db.ColumnMapping;
import org.apache.logging.log4j.core.appender.db.DbAppenderLoggingException;
import org.apache.logging.log4j.core.config.plugins.convert.DateTypeConverter;
import org.apache.logging.log4j.core.config.plugins.convert.TypeConverters;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.core.util.Log4jThread;
import org.apache.logging.log4j.message.MapMessage;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
index 49a64405d8..02ea4343fc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
@@ -19,7 +19,7 @@
* a JDBC driver on your classpath for the database you wish to log to.
*/
@Export
-@Version("2.20.1")
+@Version("2.26.0")
package org.apache.logging.log4j.core.appender.db.jdbc;
import org.osgi.annotation.bundle.Export;
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 6bc352b993..f9953d6018 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
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
@@ -32,6 +31,7 @@ import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LoggingException;
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.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.lookup.StrSubstitutor;
import org.apache.logging.log4j.core.pattern.NotANumber;
import org.apache.logging.log4j.core.util.Integers;
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 728763433e..3e3ad02f6a 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
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@@ -42,6 +41,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.lookup.StrSubstitutor;
import org.apache.logging.log4j.core.util.Integers;
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 ea41918e4a..1deebe2acf 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
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@@ -41,6 +40,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.lookup.StrSubstitutor;
import org.apache.logging.log4j.core.util.Integers;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
index a7622b2c5f..e62419b685 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
@@ -16,13 +16,13 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.util.Objects;
import org.apache.logging.log4j.core.appender.rolling.action.Action;
import org.apache.logging.log4j.core.appender.rolling.action.CommonsCompressAction;
import org.apache.logging.log4j.core.appender.rolling.action.GzCompressAction;
import org.apache.logging.log4j.core.appender.rolling.action.ZipCompressAction;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
/**
* Enumerates over supported file extensions for compression.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 7aec034036..59db7fb8c2 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -47,6 +46,7 @@ import org.apache.logging.log4j.core.appender.ManagerFactory;
import org.apache.logging.log4j.core.appender.rolling.action.AbstractAction;
import org.apache.logging.log4j.core.appender.rolling.action.Action;
import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.Log4jThreadFactory;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
index 047e397dd1..c6e0fe8a3d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -30,6 +29,7 @@ import org.apache.logging.log4j.core.appender.AppenderLoggingException;
import org.apache.logging.log4j.core.appender.ConfigurationFactoryData;
import org.apache.logging.log4j.core.appender.ManagerFactory;
import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.NullOutputStream;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
index a761aa8312..072c17a3cc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.core.Core;
@@ -25,6 +24,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.PluginBuilderAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Integers;
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
index c8d251f672..b795d449bf 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling.action;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitor;
@@ -29,6 +28,7 @@ import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.lookup.StrSubstitutor;
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
index e7bb2376db..5db648a126 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling.action;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
@@ -25,6 +24,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
/**
* File rename action.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
index 9e45b5bef5..4327819907 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.appender.rolling.action;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
@@ -37,6 +36,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.lookup.StrSubstitutor;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.util.Strings;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
index 92d351e2de..ec76a76d60 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.async;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -36,6 +35,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.jmx.RingBufferAdmin;
import org.apache.logging.log4j.core.util.Booleans;
import org.apache.logging.log4j.spi.AbstractLogger;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
index d6143cdc15..dd50987f25 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.config;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -34,6 +33,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Objects;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.net.UrlConnectionFactory;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.Loader;
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 bf039a2daf..43016cfbed 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
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.config.builder.impl;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.OutputStream;
import java.io.StringReader;
@@ -60,6 +59,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.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Throwables;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
index 32a69487d7..c7feac338f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
@@ -20,7 +20,7 @@
* @since 2.4
*/
@Export
-@Version("2.25.0")
+@Version("2.26.0")
package org.apache.logging.log4j.core.config.builder.impl;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
index 6c81224c2d..8b57df7fcd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.config.plugins.convert;
import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -37,6 +36,7 @@ import java.util.regex.Pattern;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.CronExpression;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.Constants;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
index a430094531..e7d16d7f33 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
@@ -20,7 +20,7 @@
* attributes in plugin factory methods.
*/
@Export
-@Version("2.24.0")
+@Version("2.26.0")
package org.apache.logging.log4j.core.config.plugins.convert;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
index 53a32a99ed..810938c2ee 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.config.plugins.util;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -38,6 +37,7 @@ import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarInputStream;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Loader;
import org.apache.logging.log4j.status.StatusLogger;
import org.osgi.framework.FrameworkUtil;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
index c2c42b8d5b..e395672615 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
@@ -19,7 +19,7 @@
* Utility and manager classes for Log4j 2 plugins.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.logging.log4j.core.config.plugins.util;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
index 1a1c22835a..31c43983e7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.config.status;
-import edu.umd.cs.findbugs.annotations.Nullable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -30,6 +29,7 @@ import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.NetUtils;
import org.apache.logging.log4j.status.StatusConsoleListener;
import org.apache.logging.log4j.status.StatusLogger;
+import org.jspecify.annotations.Nullable;
/**
* Configuration for setting up the {@link StatusLogger} fallback listener.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
index 1e20784cf9..703f79aa00 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
@@ -19,7 +19,7 @@
* Configuration classes for the {@link org.apache.logging.log4j.status.StatusLogger} API.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.logging.log4j.core.config.status;
import org.osgi.annotation.bundle.Export;
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 6caeec59ae..3218589bb1 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
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.config.xml;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -41,6 +40,7 @@ import org.apache.logging.log4j.core.config.Node;
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.status.StatusConfiguration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.core.util.Integers;
import org.apache.logging.log4j.core.util.Loader;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
index 62ef3a596e..cc1f2e6c02 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.filter;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.InputStream;
import java.net.URI;
@@ -44,6 +43,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
import org.apache.logging.log4j.core.filter.mutable.KeyValuePairConfig;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.AuthorizationProvider;
import org.apache.logging.log4j.core.util.KeyValuePair;
import org.apache.logging.log4j.core.util.internal.HttpInputStreamUtil;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
index bb45186e7a..f02feaa580 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
@@ -22,7 +22,7 @@
* {@link org.apache.logging.log4j.core.Filter#ELEMENT_TYPE filter}.
*/
@Export
-@Version("2.25.0")
+@Version("2.26.0")
package org.apache.logging.log4j.core.filter;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-core/src/main/java/org/apache/logging/log4j/core/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..ffad525732 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.core.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
index e91cb4c388..d8927d6737 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.jmx;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.ByteArrayInputStream;
@@ -44,6 +43,7 @@ import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.ConfigurationSource;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.Strings;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java
index 480cc2c6b2..dd13c9482a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java
@@ -18,7 +18,7 @@
* Log4j 2 JMX support.
*/
@Export
-@Version("2.23.0")
+@Version("2.26.0")
package org.apache.logging.log4j.core.jmx;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
index 39458807f7..69aed97d19 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.core.layout;
import static org.apache.logging.log4j.util.Chars.LF;
import static org.apache.logging.log4j.util.Chars.NUL;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -43,6 +42,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.layout.internal.ExcludeChecker;
import org.apache.logging.log4j.core.layout.internal.IncludeChecker;
import org.apache.logging.log4j.core.layout.internal.ListChecker;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
index 45a80fa8f0..252f34f2ea 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.layout;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.LineNumberReader;
@@ -37,6 +36,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.pattern.DatePatternConverter;
import org.apache.logging.log4j.core.util.Transform;
import org.apache.logging.log4j.util.Strings;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
index 2ff23cc38f..eda565875b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
@@ -16,10 +16,10 @@
*/
package org.apache.logging.log4j.core.lookup;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Map;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
/**
* A map-based lookup for main arguments.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
index 1aa2f5e18d..cfd6a9003d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.net;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;
@@ -26,6 +25,7 @@ import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.logging.log4j.core.appender.AbstractManager;
import org.apache.logging.log4j.core.appender.ManagerFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.JndiCloser;
import org.apache.logging.log4j.util.PropertiesUtil;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index f129b80fe4..c525eabe1e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.net;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -40,6 +39,7 @@ import org.apache.logging.log4j.LoggingException;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.layout.AbstractStringLayout.Serializer;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index ac53c1b4a7..75d4306b68 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.net;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
@@ -34,6 +33,7 @@ import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.appender.AppenderLoggingException;
import org.apache.logging.log4j.core.appender.ManagerFactory;
import org.apache.logging.log4j.core.appender.OutputStreamManager;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.core.util.Log4jThread;
import org.apache.logging.log4j.core.util.NullOutputStream;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
index e98d3d9a9d..91e7b0d81a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.net;
import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.JarURLConnection;
@@ -29,6 +28,7 @@ import java.util.Arrays;
import java.util.List;
import javax.net.ssl.HttpsURLConnection;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.net.ssl.LaxHostnameVerifier;
import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
import org.apache.logging.log4j.core.net.ssl.SslConfigurationFactory;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java
index 9a23c5b137..089d4b3f26 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java
@@ -25,7 +25,7 @@
* </ul>
*/
@Export
-@Version("2.20.3")
+@Version("2.26.0")
package org.apache.logging.log4j.core.net;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
index f2407a979b..d264c5e570 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.net.ssl;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
@@ -26,6 +25,7 @@ import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
/**
* PasswordProvider that reads password from a file.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
index 0068619c70..3e2ef8e253 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
@@ -16,9 +16,9 @@
*/
package org.apache.logging.log4j.core.net.ssl;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
/**
* An HostnameVerifier which accepts everything.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
index 7f7b26c282..748173b9a3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
@@ -18,7 +18,7 @@
* Log4j 2 SSL support
*/
@Export
-@Version("2.20.3")
+@Version("2.26.0")
package org.apache.logging.log4j.core.net.ssl;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java
index 00552976b7..45bc926c52 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java
@@ -18,7 +18,7 @@
* Implementation of Log4j 2.
*/
@Export
-@Version("2.24.2")
+@Version("2.26.0")
package org.apache.logging.log4j.core;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
index 5ff0b27d34..6c9ea030b5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.script;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -30,6 +29,7 @@ import org.apache.logging.log4j.core.config.Node;
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.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.ExtensionLanguageMapping;
import org.apache.logging.log4j.core.util.FileUtils;
import org.apache.logging.log4j.core.util.IOUtils;
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 873729a4bc..81afa461dc 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
@@ -16,11 +16,11 @@
*/
package org.apache.logging.log4j.core.tools;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.core.util.Integers;
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
index 8cbd2eb92f..38f664c29c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
@@ -18,7 +18,7 @@
* Log4j 2 command line tools.
*/
@Export
-@Version("2.20.1")
+@Version("2.26.0")
package org.apache.logging.log4j.core.tools;
import org.osgi.annotation.bundle.Export;
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 6c1dcbb986..fb0b56bfce 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
@@ -22,7 +22,6 @@ import static org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Colum
import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
import static org.apache.logging.log4j.util.Strings.toRootUpperCase;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.PrintStream;
import java.lang.annotation.ElementType;
@@ -70,6 +69,7 @@ import java.util.TreeSet;
import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.regex.Pattern;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
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;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
index 5eb467d0be..74ac05e64a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.util;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.net.URI;
@@ -34,6 +33,7 @@ import java.nio.file.attribute.UserPrincipalLookupService;
import java.util.Objects;
import java.util.Set;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java
index c1f9c6d5a8..1c2b32d0d8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java
@@ -16,11 +16,11 @@
*/
package org.apache.logging.log4j.core.util;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Objects;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.util.Strings;
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
index 22286c636d..92a85a6fa1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.core.util;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.net.InetAddress;
import java.net.MalformedURLException;
@@ -32,6 +31,7 @@ import java.util.Enumeration;
import java.util.List;
import java.util.function.Function;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
index 5a79ab8b9a..e7f4757b21 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.util;
import static java.util.Objects.requireNonNull;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -30,6 +29,7 @@ import java.nio.file.Paths;
import java.util.Objects;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationSource;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.Strings;
import org.jspecify.annotations.NullMarked;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
index 7c97d495ba..cf00631f9f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.util;
import static java.util.Objects.requireNonNull;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.LineNumberReader;
@@ -29,6 +28,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
/**
* Helps with Throwable objects.
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java
index 932e8bc080..b9efa51956 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java
@@ -18,7 +18,7 @@
* Log4j 2 helper classes.
*/
@Export
-@Version("2.25.0")
+@Version("2.26.0")
package org.apache.logging.log4j.core.util;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java
index efc3e56398..40a8a0d2f0 100644
--- a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java
+++ b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java
@@ -17,7 +17,6 @@
package org.apache.logging.log4j.jul;
// note: NO import of Logger, Level, LogManager to prevent conflicts JUL/log4j
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Enumeration;
@@ -28,6 +27,7 @@ import java.util.logging.LogRecord;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.jul.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.spi.ExtendedLogger;
import org.apache.logging.log4j.status.StatusLogger;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-jul/src/main/java/org/apache/logging/log4j/jul/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..0fddf126ce 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.jul.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java
index dd22747306..d7c5b41f89 100644
--- a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java
+++ b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java
@@ -15,7 +15,7 @@
* limitations under the license.
*/
@Export
-@Version("2.20.2")
+@Version("2.26.0")
package org.apache.logging.log4j.jul;
import org.osgi.annotation.bundle.Export;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/internal/annotation/SuppressFBWarnings.java
similarity index 68%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..4328e28efc 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.layout.template.json.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
index 957326d9ad..d1c69d8788 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.layout.template.json.util;
import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -33,6 +32,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.layout.template.json.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.LoaderUtil;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
index dbb7814d27..a806ff5105 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
@Export
-@Version("2.22.0")
+@Version("2.26.0")
@Open("org.apache.logging.log4j.core")
package org.apache.logging.log4j.layout.template.json.util;
diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index 8cfd494c68..e939009ee4 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -132,8 +132,6 @@
<osgi.annotation.versioning.version>1.1.2</osgi.annotation.versioning.version>
<pax-exam.version>4.14.0</pax-exam.version>
<plexus-utils.version>3.6.0</plexus-utils.version>
- <!-- `com.github.spotbugs:spotbugs-annotations:4.9.0` and onwards require Java 11: -->
- <spotbugs-annotations.version>4.8.6</spotbugs-annotations.version>
<spring-boot.version>2.7.18</spring-boot.version>
<spring-framework.version>5.3.39</spring-framework.version>
<system-stubs.version>2.0.3</system-stubs.version>
@@ -163,7 +161,6 @@
<bnd-jpms-module-info>$[bnd-module-name];access=0;modules="
biz.aQute.bnd.annotation,
com.google.errorprone.annotations,
- com.github.spotbugs.annotations,
org.osgi.annotation.bundle,
org.osgi.annotation.versioning
"</bnd-jpms-module-info>
@@ -877,13 +874,6 @@
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>com.github.spotbugs</groupId>
- <artifactId>spotbugs-annotations</artifactId>
- <version>${spotbugs-annotations.version}</version>
- <scope>provided</scope>
- </dependency>
-
</dependencies>
<build>
@@ -1124,11 +1114,6 @@
<artifactId>org.osgi.annotation.versioning</artifactId>
<version>${osgi.annotation.versioning.version}</version>
</dependency>
- <dependency>
- <groupId>com.github.spotbugs</groupId>
- <artifactId>spotbugs-annotations</artifactId>
- <version>${spotbugs-annotations.version}</version>
- </dependency>
</compileOnlyApiDependencies>
</configuration>
<executions>
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..f139a9c809 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.perf.internal.annotation;
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+ String[] value() default {};
+
+ String justification() default "";
+}
diff --git a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
index 83a4d45672..baa44d234a 100644
--- a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
+++ b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.perf.jmh;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
@@ -29,6 +28,7 @@ import org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.DefaultConfiguration;
import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.perf.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
diff --git a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
index e58d7613b6..75c614588b 100644
--- a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
+++ b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.perf.jmh;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
@@ -29,6 +28,7 @@ import org.apache.logging.log4j.core.appender.db.jpa.JpaAppender;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.DefaultConfiguration;
import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.perf.internal.annotation.SuppressFBWarnings;
import org.apache.logging.log4j.status.StatusLogger;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
diff --git a/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml b/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml
new file mode 100644
index 0000000000..a2c7b3b8b2
--- /dev/null
+++ b/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns="https://logging.apache.org/xml/ns"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ https://logging.apache.org/xml/ns
+ https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
+ type="removed">
+ <issue id="3984" link="https://github.com/apache/logging-log4j2/issues/3984"/>
+ <issue id="3985" link="https://github.com/apache/logging-log4j2/pull/3985"/>
+ <description format="asciidoc">
+ Remove the `com.github.spotbugs:spotbugs-annotations` dependency
+ </description>
+</entry>