You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ba...@apache.org on 2024/03/05 11:01:26 UTC

(jackrabbit-oak) branch issue/oak-10339 updated: OAK-10339: Migrate to SLF4J 2.x

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

baedke pushed a commit to branch issue/oak-10339
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/issue/oak-10339 by this push:
     new d990b7a4fe OAK-10339: Migrate to SLF4J 2.x
d990b7a4fe is described below

commit d990b7a4fe413d6a2a4fea4fa603f419dfbe97f3
Author: Manfred Baedke <ma...@gmail.com>
AuthorDate: Tue Mar 5 11:59:03 2024 +0100

    OAK-10339: Migrate to SLF4J 2.x
    
    Moving to slf4j-2.0.12 and logback-1.5.2.
---
 oak-it-osgi/pom.xml                                |  6 ++
 .../org/apache/jackrabbit/oak/osgi/OSGiIT.java     | 10 ++-
 .../jackrabbit/oak/osgi/TikaExtractionOsgiIT.java  | 85 ++++++++++------------
 oak-parent/pom.xml                                 | 10 +--
 oak-run-elastic/pom.xml                            |  2 +-
 oak-solr-core/pom.xml                              |  1 +
 .../oak/composite/it/CompositeTestSupport.java     |  3 +
 7 files changed, 63 insertions(+), 54 deletions(-)

diff --git a/oak-it-osgi/pom.xml b/oak-it-osgi/pom.xml
index 3e29b9543b..f869b62fee 100644
--- a/oak-it-osgi/pom.xml
+++ b/oak-it-osgi/pom.xml
@@ -307,6 +307,12 @@
       <artifactId>pax-url-wrap</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.testing.paxexam</artifactId>
+      <version>3.1.0</version>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>io.dropwizard.metrics</groupId>
       <artifactId>metrics-core</artifactId>
diff --git a/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java b/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
index 7d814496c0..337ddf30b0 100644
--- a/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
+++ b/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
@@ -36,6 +36,7 @@ import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.oak.plugins.document.spi.lease.LeaseFailureHandler;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.sling.testing.paxexam.SlingOptions;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Configuration;
@@ -71,13 +72,16 @@ public class OSGiIT {
                 mavenBundle( "org.apache.felix", "org.apache.felix.configadmin", "1.9.20" ),
                 mavenBundle( "org.apache.felix", "org.apache.felix.fileinstall", "3.2.6" ),
                 mavenBundle( "org.ops4j.pax.logging", "pax-logging-api", "1.7.2" ),
+                mavenBundle("jakarta.servlet", "jakarta.servlet-api", "5.0.0"),
+                // required for slf4j 2.0.x
+                SlingOptions.spyfly(),
                 frameworkProperty("repository.home").value("target"),
                 systemProperties(new SystemPropertyOption("felix.fileinstall.dir").value(getConfigDir())),
                 jarBundles(),
                 jpmsOptions());
     }
 
-    private Option jpmsOptions(){
+    static Option jpmsOptions(){
         DefaultCompositeOption composite = new DefaultCompositeOption();
         if (Version.parseVersion(System.getProperty("java.specification.version")).getMajor() > 1){
             if (java.nio.file.Files.exists(java.nio.file.FileSystems.getFileSystem(URI.create("jrt:/")).getPath("modules", "java.se.ee"))){
@@ -98,11 +102,11 @@ public class OSGiIT {
         return composite;
     }
 
-    private String getConfigDir(){
+    static String getConfigDir(){
         return new File(new File("src", "test"), "config").getAbsolutePath();
     }
 
-    private Option jarBundles() throws MalformedURLException {
+    static Option jarBundles() throws MalformedURLException {
         DefaultCompositeOption composite = new DefaultCompositeOption();
         for (File bundle : new File("target", "test-bundles").listFiles()) {
             if (bundle.getName().endsWith(".jar") && bundle.isFile()) {
diff --git a/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/TikaExtractionOsgiIT.java b/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/TikaExtractionOsgiIT.java
index bf4234d750..0b50c02185 100644
--- a/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/TikaExtractionOsgiIT.java
+++ b/oak-it-osgi/src/test/java/org/apache/jackrabbit/oak/osgi/TikaExtractionOsgiIT.java
@@ -16,41 +16,58 @@
  */
 package org.apache.jackrabbit.oak.osgi;
 
+import org.apache.sling.testing.paxexam.SlingOptions;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.AutoDetectParser;
 import org.apache.tika.parser.Parser;
 import org.apache.tika.sax.WriteOutContentHandler;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
+
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
 import org.ops4j.pax.exam.options.DefaultCompositeOption;
+import org.ops4j.pax.exam.options.SystemPropertyOption;
 import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
 import org.ops4j.pax.exam.spi.reactors.PerClass;
+
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.Version;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.xml.sax.ContentHandler;
 
-import javax.inject.Inject;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
-import java.net.URI;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.stream.Collectors;
 
+import javax.inject.Inject;
+
 import static java.util.Arrays.stream;
-import static org.junit.Assert.*;
-import static org.ops4j.pax.exam.CoreOptions.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.frameworkProperty;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.systemProperties;
+import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
+
+import static org.apache.jackrabbit.oak.osgi.OSGiIT.getConfigDir;
 
 @RunWith(PaxExam.class)
 @ExamReactorStrategy(PerClass.class)
@@ -74,38 +91,30 @@ public class TikaExtractionOsgiIT {
     public Option[] configuration() throws IOException {
         return CoreOptions.options(
                 junitBundles(),
-                mavenBundle( "org.ops4j.pax.logging", "pax-logging-api", "2.2.3" ),
-                frameworkProperty("repository.home").value("target"),
+                mavenBundle("org.apache.felix", "org.apache.felix.scr", "2.1.28"),
+                // transitive deps of Felix SCR 2.1.x
+                mavenBundle("org.osgi", "org.osgi.util.promise", "1.1.1"),
+                mavenBundle("org.osgi", "org.osgi.util.function", "1.1.0"),
+                mavenBundle("org.apache.felix", "org.apache.felix.jaas", "1.0.2"),
+                mavenBundle("org.osgi", "org.osgi.dto", "1.0.0"),
+                // require at least ConfigAdmin 1.6 supported by felix.configadmin 1.9.0+
+                mavenBundle( "org.apache.felix", "org.apache.felix.configadmin", "1.9.20" ),
+                mavenBundle( "org.apache.felix", "org.apache.felix.fileinstall", "3.2.6" ),
+                mavenBundle( "org.ops4j.pax.logging", "pax-logging-api", "1.7.2" ),
+                mavenBundle("org.apache.logging.log4j", "log4j-api", "2.23.0"),
+                mavenBundle("jakarta.servlet", "jakarta.servlet-api", "5.0.0"),
+                SlingOptions.spyfly(),
                 setupTikaAndPoi(),
-                jpmsOptions()
+                frameworkProperty("repository.home").value("target"),
+                systemProperties(new SystemPropertyOption("felix.fileinstall.dir").value(getConfigDir())),
+                OSGiIT.jpmsOptions()
                 // to debug a test, un-comment this and "run" the test which would block due to suspend="y"
                 // then run debugger on a remote app with specified port
 //                , vmOption( "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" )
         );
     }
 
-    private Option jpmsOptions(){
-        DefaultCompositeOption composite = new DefaultCompositeOption();
-        if (Version.parseVersion(System.getProperty("java.specification.version")).getMajor() > 1){
-            if (java.nio.file.Files.exists(java.nio.file.FileSystems.getFileSystem(URI.create("jrt:/")).getPath("modules", "java.se.ee"))){
-                composite.add(vmOption("--add-modules=java.se.ee"));
-            }
-            composite.add(vmOption("--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.lang=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.io=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.net=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.nio=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.util=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.util.jar=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.util.regex=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/java.util.zip=ALL-UNNAMED"));
-            composite.add(vmOption("--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"));
-        }
-        return composite;
-    }
-
-    private Option setupTikaAndPoi() throws IOException {
+    private static Option setupTikaAndPoi() throws IOException {
         Map<String, String> versions = setupVersions();
         return composite(
                 composite(
@@ -127,24 +136,10 @@ public class TikaExtractionOsgiIT {
                         , mavenBundle("org.apache.commons", "commons-math3", versions.get(MATH3_VERSION))
                         // poi dependency end
                 )
-                , jarBundles()
+                , OSGiIT.jarBundles()
         );
     }
 
-    private Option jarBundles() throws MalformedURLException {
-        String[] jarNames = new String[]{"commons-io.jar", "commons-codec.jar"};
-        File jarDir = new File("target", "test-bundles");
-
-        DefaultCompositeOption composite = new DefaultCompositeOption();
-
-        List<File> jarFiles = stream(jarNames).map(jarName -> new File(jarDir, jarName)).collect(Collectors.toList());
-        for (File jar : jarFiles) {
-            composite.add(bundle(jar.toURI().toURL().toString()));
-        }
-
-        return composite;
-    }
-
     private static Map<String, String> setupVersions() throws IOException {
         Properties props = new Properties();
         props.load(TikaExtractionOsgiIT.class.getClassLoader().getResourceAsStream(VERSION_PROP_RESOURCE_NAME));
diff --git a/oak-parent/pom.xml b/oak-parent/pom.xml
index a41885e496..561d070ca6 100644
--- a/oak-parent/pom.xml
+++ b/oak-parent/pom.xml
@@ -59,9 +59,9 @@
     <lucene.version>4.7.1</lucene.version>
     <solr.version>8.11.1</solr.version>
     <mongo.driver.version>3.12.11</mongo.driver.version>
-    <slf4j.api.version>1.7.36</slf4j.api.version>
-    <slf4j.version>1.7.36</slf4j.version> <!-- sync with logback version -->
-    <logback.version>1.2.10</logback.version>
+    <slf4j.api.version>2.0.12</slf4j.api.version>
+    <slf4j.version>2.0.12</slf4j.version> <!-- sync with logback version -->
+    <logback.version>1.5.2</logback.version>
     <h2.version>2.1.214</h2.version>
     <tika.version>1.28.5</tika.version>
     <derby.version>10.15.2.0</derby.version>
@@ -794,13 +794,13 @@
       <dependency>
         <groupId>org.ops4j.pax.url</groupId>
         <artifactId>pax-url-aether</artifactId>
-        <version>2.6.9</version>
+        <version>2.6.14</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.ops4j.pax.url</groupId>
         <artifactId>pax-url-wrap</artifactId>
-        <version>2.6.1</version>
+        <version>2.6.14</version>
         <scope>test</scope>
       </dependency>
       <dependency>
diff --git a/oak-run-elastic/pom.xml b/oak-run-elastic/pom.xml
index 391a02c024..7e8a0d9d91 100644
--- a/oak-run-elastic/pom.xml
+++ b/oak-run-elastic/pom.xml
@@ -40,7 +40,7 @@
         85 MB : remove Elasticsearch RHLC
         103.5 MB: Azure Identity client library for Java (OAK-10604)
         -->
-        <max.jar.size>103500000</max.jar.size>
+        <max.jar.size>103700000</max.jar.size>
                       
     </properties>
 
diff --git a/oak-solr-core/pom.xml b/oak-solr-core/pom.xml
index 12d101ce09..064011dafa 100644
--- a/oak-solr-core/pom.xml
+++ b/oak-solr-core/pom.xml
@@ -182,6 +182,7 @@
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
+            <version>1.2.12</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java b/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java
index 969c3f0c9d..a54bffc8b1 100644
--- a/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java
+++ b/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java
@@ -102,6 +102,9 @@ public abstract class CompositeTestSupport extends TestSupport {
     protected static Option logging(String level) {
         return composite(
             mavenBundle("org.ops4j.pax.logging", "pax-logging-api", "1.11.13"),
+            SlingOptions.spyfly(),
+            mavenBundle("org.slf4j", "slf4j-api", "2.0.12"),
+            mavenBundle("org.slf4j", "slf4j-simple", "2.0.12"),
             systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value(level),
             SlingOptions.logback()
         );