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 2026/08/25 12:26:16 UTC
(jackrabbit-oak) 01/03: OAK-10339: Migrate to SLF4J 2.x
This is an automated email from the ASF dual-hosted git repository.
mbaedke pushed a commit to branch issue/oak-10339
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 9c21906754cfd1aec643038658a88d9e23177213
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 | 11 ++-
.../jackrabbit/oak/osgi/TikaExtractionOsgiIT.java | 85 ++++++++++------------
oak-parent/pom.xml | 6 +-
oak-run-elastic/pom.xml | 1 -
.../oak/composite/it/CompositeTestSupport.java | 3 +
6 files changed, 60 insertions(+), 52 deletions(-)
diff --git a/oak-it-osgi/pom.xml b/oak-it-osgi/pom.xml
index 3442403af2..ed1eaed2fa 100644
--- a/oak-it-osgi/pom.xml
+++ b/oak-it-osgi/pom.xml
@@ -314,6 +314,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 bdd6327ac7..f7956fc160 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;
@@ -81,13 +82,17 @@ public class OSGiIT {
mavenBundle().groupId("com.github.ben-manes.caffeine").artifactId("caffeine").version("3.1.8"),
+ 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"))){
@@ -108,11 +113,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 9233a6f3ba..b13cb317ba 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)
@@ -80,38 +97,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(
@@ -134,24 +143,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 ac47e40af5..237ac7736c 100644
--- a/oak-parent/pom.xml
+++ b/oak-parent/pom.xml
@@ -59,9 +59,9 @@
<segment.db>SegmentMK</segment.db>
<lucene.version>4.7.2</lucene.version>
<mongo.driver.version>5.3.1</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.13</logback.version>
+ <slf4j.api.version>2.0.18</slf4j.api.version>
+ <slf4j.version>2.0.18</slf4j.version> <!-- sync with logback version -->
+ <logback.version>1.6.3</logback.version>
<h2.version>2.1.214</h2.version>
<tika.version>1.28.5</tika.version>
<derby.version>10.16.1.1</derby.version>
diff --git a/oak-run-elastic/pom.xml b/oak-run-elastic/pom.xml
index aba7148146..2ea30795c0 100644
--- a/oak-run-elastic/pom.xml
+++ b/oak-run-elastic/pom.xml
@@ -47,7 +47,6 @@
142 MB: jackson update (OAK-12276)
-->
<max.jar.size>142000000</max.jar.size>
-
</properties>
<build>
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 a8aa9badc2..6727a89758 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
@@ -107,6 +107,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()
);