This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 140a22593b8f74479e943899d7004b8ba3e84307
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Wed Nov 29 15:12:45 2023 +0100

    Port `log4j-spring-cloud-config-client` changes from `2.x` (#2018)
---
 log4j-parent/pom.xml                               | 19 ++++++++
 log4j-spring-cloud-config-client/pom.xml           | 52 +++++++++++++---------
 .../cloud/config/client/WatchEventManager.java     |  5 ++-
 ...pache.logging.log4j.core.util.WatchEventService | 16 +++++++
 .../config/client/Log4j2EventListenerTest.java     |  3 ++
 5 files changed, 72 insertions(+), 23 deletions(-)

diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index 7597c263b6..4b6a9961cd 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -158,6 +158,7 @@
     <slf4j.version>2.0.9</slf4j.version>
     <!-- Last version before a breaking change -->
     <slf4j-ext.version>1.7.25</slf4j-ext.version>
+    <spring-boot.version>2.7.18</spring-boot.version>
     <spring-framework.version>5.3.31</spring-framework.version>
     <system-stubs.version>2.1.5</system-stubs.version>
     <tomcat-juli.version>10.0.23</tomcat-juli.version>
@@ -825,6 +826,24 @@
         <version>${slf4j-ext.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot</artifactId>
+        <version>${spring-boot.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-test</artifactId>
+        <version>${spring-boot.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+
       <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-test</artifactId>
diff --git a/log4j-spring-cloud-config-client/pom.xml 
b/log4j-spring-cloud-config-client/pom.xml
index 94ccedbe9e..12c74caca6 100644
--- a/log4j-spring-cloud-config-client/pom.xml
+++ b/log4j-spring-cloud-config-client/pom.xml
@@ -16,7 +16,9 @@
   ~ limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
   <modelVersion>4.0.0</modelVersion>
+
   <parent>
     <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j</artifactId>
@@ -26,25 +28,30 @@
 
   <artifactId>log4j-spring-cloud-config-client</artifactId>
   <packaging>jar</packaging>
+
   <name>Apache Log4j Spring Cloud Config Client Support</name>
   <description>Apache Log4j Spring Cloud Config Client Support</description>
+
   <properties>
-    <log4jParentDir>${basedir}/../..</log4jParentDir>
 
     <!--
       ~ OSGi and JPMS options
       -->
     
<bnd-module-name>org.apache.logging.log4j.spring.cloud.config.client</bnd-module-name>
     <bnd-extra-module-options>
-      <!-- Correct module names -->
-      spring.cloud.context;substitute="spring-cloud-context"
+      <!-- Filebased module names: MUST be static -->
+      
spring.cloud.context;substitute="spring-cloud-context";static=true;transitive=false
     </bnd-extra-module-options>
     <Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
+
+    <!-- dependency versions -->
     <spring-cloud.version>2021.0.8</spring-cloud.version>
-    <spring-boot.version>2.7.18</spring-boot.version>
+
   </properties>
+
   <dependencyManagement>
     <dependencies>
+
       <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-dependencies</artifactId>
@@ -52,6 +59,7 @@
         <type>pom</type>
         <scope>import</scope>
       </dependency>
+
       <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-dependencies</artifactId>
@@ -59,75 +67,77 @@
         <type>pom</type>
         <scope>import</scope>
       </dependency>
+
     </dependencies>
   </dependencyManagement>
+
   <dependencies>
+
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
     </dependency>
+
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
+
     <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-spring-boot</artifactId>
     </dependency>
+
     <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot</artifactId>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
     </dependency>
+
     <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-bus</artifactId>
     </dependency>
+
     <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-config-client</artifactId>
     </dependency>
+
     <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-bootstrap</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context-support</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api-test</artifactId>
-      <scope>test</scope>
-    </dependency>
+
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core-test</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-engine</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.junit.vintage</groupId>
       <artifactId>junit-vintage-engine</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
       <scope>test</scope>
     </dependency>
+
   </dependencies>
 
 </project>
diff --git 
a/log4j-spring-cloud-config-client/src/main/java/org/apache/logging/log4j/spring/cloud/config/client/WatchEventManager.java
 
b/log4j-spring-cloud-config-client/src/main/java/org/apache/logging/log4j/spring/cloud/config/client/WatchEventManager.java
index 3c8c0f7167..ef8ede1a0a 100644
--- 
a/log4j-spring-cloud-config-client/src/main/java/org/apache/logging/log4j/spring/cloud/config/client/WatchEventManager.java
+++ 
b/log4j-spring-cloud-config-client/src/main/java/org/apache/logging/log4j/spring/cloud/config/client/WatchEventManager.java
@@ -16,6 +16,7 @@
  */
 package org.apache.logging.log4j.spring.cloud.config.client;
 
+import aQute.bnd.annotation.Resolution;
 import aQute.bnd.annotation.spi.ServiceProvider;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
@@ -23,12 +24,12 @@ import java.util.concurrent.ConcurrentMap;
 import org.apache.logging.log4j.core.util.WatchEventService;
 import org.apache.logging.log4j.core.util.WatchManager;
 
-@ServiceProvider(value = WatchEventService.class)
+@ServiceProvider(value = WatchEventService.class, resolution = 
Resolution.OPTIONAL)
 public class WatchEventManager implements WatchEventService {
     private static final ConcurrentMap<UUID, WatchManager> watchManagers = new 
ConcurrentHashMap<>();
 
     public static void publishEvent() {
-        for (final WatchManager manager : watchManagers.values()) {
+        for (WatchManager manager : watchManagers.values()) {
             manager.checkFiles();
         }
     }
diff --git 
a/log4j-spring-cloud-config-client/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.WatchEventService
 
b/log4j-spring-cloud-config-client/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.WatchEventService
index 701bfd35d1..d7759a725e 100644
--- 
a/log4j-spring-cloud-config-client/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.WatchEventService
+++ 
b/log4j-spring-cloud-config-client/src/main/resources/META-INF/services/org.apache.logging.log4j.core.util.WatchEventService
@@ -1 +1,17 @@
+#
+# 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.
+#
 org.apache.logging.log4j.spring.cloud.config.client.WatchEventManager
\ No newline at end of file
diff --git 
a/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
 
b/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
index 65512cf72c..22108c9459 100644
--- 
a/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
+++ 
b/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
@@ -27,6 +27,7 @@ import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
 import org.apache.logging.log4j.core.util.Source;
 import org.apache.logging.log4j.core.util.Watcher;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
@@ -40,6 +41,8 @@ import org.springframework.test.context.junit4.SpringRunner;
 /**
  * Class Description goes here.
  */
+@Ignore(
+        "Fails with `java.lang.NoClassDefFoundError: 
org/apache/logging/log4j/internal/LogManagerStatus` since `log4j-spring-boot` 
of `2.x` is injected due to Spring Boot 2 BOM import. Spring Boot must be 
updated from version 2 to 3. (#2018)")
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {SpringConfiguration.class})
 public class Log4j2EventListenerTest {

Reply via email to