You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2025/06/21 18:51:37 UTC
(jackrabbit-filevault) branch master updated: JCRVLT-764 Require Java 11
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/master by this push:
new 4d32267b JCRVLT-764 Require Java 11
4d32267b is described below
commit 4d32267b958badc7ad728c98dcbd86a565f5256d
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Tue Jan 7 17:30:03 2025 +0100
JCRVLT-764 Require Java 11
JCRVLT-790 Update embedded Oak/JR2 dependencies to 1.72.0/2.22.0
Update jacoco-m-p to 0.8.13
Update Mockito to 5.15.2
Adjust test case
Increase version to 4.0.0-SNAPSHOT
---
parent/pom.xml | 10 +++---
.../min-target-osgi-environment/min-target.bndrun | 2 +-
vault-core-it/vault-core-integration-tests/pom.xml | 2 +-
.../packaging/impl/JcrPackageManagerImplIT.java | 2 +-
.../vault/packaging/integration/ACEsAtRootIT.java | 26 ++++++++++------
vault-core/pom.xml | 2 +-
.../jackrabbit/vault/fs/config/ConfigHelper.java | 36 +++++++++-------------
.../jackrabbit/vault/fs/config/Registry.java | 4 +--
.../packaging/impl/InstallHookProcessorImpl.java | 2 +-
.../impl/ExecutionPlanBuilderImplTest.java | 3 +-
vault-rcp/pom.xml | 13 ++++++++
11 files changed, 58 insertions(+), 44 deletions(-)
diff --git a/parent/pom.xml b/parent/pom.xml
index 2ffacd7f..f5e2b6b7 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -48,7 +48,7 @@ Apache Jackrabbit FileVault is a project of the Apache Software Foundation.
<properties>
<!-- CI-friendly version, https://maven.apache.org/maven-ci-friendly.html -->
- <revision>3.8.5-SNAPSHOT</revision>
+ <revision>4.0.0-SNAPSHOT</revision>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- for dependencies used for calculating OSGi import-package version ranges the minimally supported version should be used to be backwards compatible in OSGi containers -->
<jackrabbit.min.version>2.20.8</jackrabbit.min.version>
@@ -57,14 +57,14 @@ Apache Jackrabbit FileVault is a project of the Apache Software Foundation.
<!-- for dependencies used for calculating OSGi import-package version ranges the minimally supported version should be used to be backwards compatible in OSGi containers -->
<oak.min.version>1.22.4</oak.min.version>
<!-- for embedded dependencies the newest version should be used -->
- <oak.max.version>1.52.0</oak.max.version>
+ <oak.max.version>1.72.0</oak.max.version>
<slf4j.version>1.7.25</slf4j.version>
<commons-io.version>2.7</commons-io.version>
<test.oak>true</test.oak> <!-- passed to integration test as property "oak", set to true to test with Oak, false means test with Jackrabbit 2 -->
<bnd.version>6.4.0</bnd.version>
<minimalMavenBuildVersion>3.6.1</minimalMavenBuildVersion><!-- due to https://issues.apache.org/jira/browse/MNG-6059 -->
<minimalJavaBuildVersion>11</minimalJavaBuildVersion>
- <maven.compiler.release>8</maven.compiler.release>
+ <maven.compiler.release>11</maven.compiler.release>
<sling.url>http://localhost:4502</sling.url>
<jacoco.command /><!-- is overwritten by https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html -->
<project.build.outputTimestamp>2025-03-25T09:33:00Z</project.build.outputTimestamp>
@@ -261,7 +261,7 @@ Bundle-Category: jackrabbit
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
- <version>0.8.10</version>
+ <version>0.8.13</version>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
@@ -344,7 +344,7 @@ Bundle-Category: jackrabbit
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
- <version>1.5.0</version>
+ <version>1.7.1</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
diff --git a/target-osgi-environment/min-target-osgi-environment/min-target.bndrun b/target-osgi-environment/min-target-osgi-environment/min-target.bndrun
index fd4b33d9..5a03fc29 100644
--- a/target-osgi-environment/min-target-osgi-environment/min-target.bndrun
+++ b/target-osgi-environment/min-target-osgi-environment/min-target.bndrun
@@ -16,7 +16,7 @@
-standalone: ${fileuri;${.}/target/index.xml}
-runfw: org.apache.felix.framework
--runee: JavaSE-1.8
+-runee: JavaSE-11
-resolve.effective: active
# workaround for https://issues.apache.org/jira/browse/SLING-7608 and https://issues.apache.org/jira/browse/SLING-7604
diff --git a/vault-core-it/vault-core-integration-tests/pom.xml b/vault-core-it/vault-core-integration-tests/pom.xml
index c517726c..e04da5a8 100644
--- a/vault-core-it/vault-core-integration-tests/pom.xml
+++ b/vault-core-it/vault-core-integration-tests/pom.xml
@@ -144,7 +144,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>3.9.0</version>
+ <version>5.15.2</version>
<scope>compile</scope>
</dependency>
<dependency>
diff --git a/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImplIT.java b/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImplIT.java
index 0e9fda97..e17ca398 100644
--- a/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImplIT.java
+++ b/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageManagerImplIT.java
@@ -49,7 +49,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.mockito.Matchers.anyString;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
diff --git a/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/integration/ACEsAtRootIT.java b/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/integration/ACEsAtRootIT.java
index af4607ef..44315b6a 100644
--- a/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/integration/ACEsAtRootIT.java
+++ b/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/packaging/integration/ACEsAtRootIT.java
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.vault.packaging.integration;
+import static org.junit.Assert.assertEquals;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -28,17 +30,17 @@ import java.util.zip.Deflater;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
+import javax.jcr.security.AccessControlEntry;
+import org.apache.commons.lang3.StringUtils;
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
-import org.apache.jackrabbit.vault.fs.api.ImportMode;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
-import org.apache.jackrabbit.vault.fs.filter.DefaultPathFilter;
import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
@@ -48,11 +50,8 @@ import org.apache.jackrabbit.vault.packaging.ExportOptions;
import org.apache.jackrabbit.vault.packaging.PackageException;
import org.apache.jackrabbit.vault.packaging.PackageProperties;
import org.apache.jackrabbit.vault.packaging.VaultPackage;
-import org.junit.Ignore;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-
public class ACEsAtRootIT extends IntegrationTestBase {
@Test
@@ -82,8 +81,8 @@ public class ACEsAtRootIT extends IntegrationTestBase {
AccessControlUtils.addAccessControlEntry(admin, "/", principal1, new String[]{"jcr:read"}, true);
// Check the number of ACEs at the root
-
- assertEquals(2, AccessControlUtils.getAccessControlList(admin, "/").getAccessControlEntries().length);
+ AccessControlEntry[] originalAces = AccessControlUtils.getAccessControlList(admin, "/").getAccessControlEntries();
+ assertEquals(2, originalAces.length);
assertEquals(1, AccessControlUtils.getAccessControlList(admin, null).getAccessControlEntries().length);
// Export with the user session
@@ -130,7 +129,6 @@ public class ACEsAtRootIT extends IntegrationTestBase {
// Import with admin session
- clean(userPath);
ImportOptions importOptions = new ImportOptions();
// importOptions.setImportMode(ImportMode.UPDATE);
@@ -154,12 +152,22 @@ public class ACEsAtRootIT extends IntegrationTestBase {
// Check the number of ACEs at the root, the count should not have changed.
assertNodeExists(userPath);
- assertEquals(2, AccessControlUtils.getAccessControlList(admin, "/").getAccessControlEntries().length);
+ AccessControlEntry[] actualAces = AccessControlUtils.getAccessControlList(admin, "/").getAccessControlEntries();
+ assertEquals("Expected two ACEs: " + toString(originalAces) + " at / but found: " + toString(actualAces), 2, actualAces.length);
assertEquals(1, AccessControlUtils.getAccessControlList(admin, null).getAccessControlEntries().length);
+ // removing the user's node also removes the bound ACEs at the root in later Oak versions
+ clean(userPath);
tmpFile.delete();
}
+ static String toString(AccessControlEntry[] aces) {
+ StringBuilder sb = new StringBuilder();
+ for (AccessControlEntry ace : aces) {
+ sb.append("ACE for principal ").append(ace.getPrincipal().getName()).append(" with privileges ").append(StringUtils.join(ace.getPrivileges(), ",")).append("\n");
+ }
+ return sb.toString();
+ }
}
diff --git a/vault-core/pom.xml b/vault-core/pom.xml
index 1a94b472..5b753649 100644
--- a/vault-core/pom.xml
+++ b/vault-core/pom.xml
@@ -309,7 +309,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>3.9.0</version>
+ <version>5.15.2</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/ConfigHelper.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/ConfigHelper.java
index b57719c1..69a284e6 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/ConfigHelper.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/ConfigHelper.java
@@ -37,17 +37,17 @@ public class ConfigHelper {
*/
private static final Logger log = LoggerFactory.getLogger(ConfigHelper.class);
- private Map defaultPackages = new HashMap();
+ private Map<String, String> defaultPackages = new HashMap<>();
- private Map defaultClasses = new HashMap();
+ private Map<String, String> defaultClasses = new HashMap<>();
- private Map<String, String> mappings = new HashMap<String, String>();
+ private Map<String, String> mappings = new HashMap<>();
- public Map getDefaultPackages() {
+ public Map<String, String> getDefaultPackages() {
return defaultPackages;
}
- public Map getDefaultClasses() {
+ public Map<String, String> getDefaultClasses() {
return defaultClasses;
}
@@ -56,11 +56,11 @@ public class ConfigHelper {
}
public String getDefaultPackage(String name) {
- return (String) defaultPackages.get(name);
+ return defaultPackages.get(name);
}
public String getDefaultClass(String name) {
- return (String) defaultClasses.get(name);
+ return defaultClasses.get(name);
}
public Object create(Element elem)
@@ -68,7 +68,7 @@ public class ConfigHelper {
String className = elem.getAttribute("class");
if (className == null || className.equals("")) {
- className = (String) defaultClasses.get(elem.getNodeName());
+ className = defaultClasses.get(elem.getNodeName());
}
if (className == null || className.equals("")) {
// create string object
@@ -82,7 +82,7 @@ public class ConfigHelper {
}
// try to get class without prepending package
- Class clazz = null;
+ Class<?> clazz = null;
try {
clazz = getClass().getClassLoader().loadClass(className);
} catch (ClassNotFoundException e) {
@@ -91,7 +91,7 @@ public class ConfigHelper {
if (clazz == null) {
// check for default package
if (className.indexOf('.') < 0) {
- String pack = (String) defaultPackages.get(elem.getNodeName());
+ String pack = defaultPackages.get(elem.getNodeName());
if (pack == null) {
throw new ConfigurationException("Default package for class attribute of " + elem.getNodeName() + " missing.");
}
@@ -112,15 +112,11 @@ public class ConfigHelper {
}
try {
if (field == null) {
- return clazz.newInstance();
+ return clazz.getDeclaredConstructor().newInstance();
} else {
return clazz.getField(field).get(null);
}
- } catch (InstantiationException e) {
- throw new ConfigurationException("Error while creating instance for " + elem.getNodeName(), e);
- } catch (NoSuchFieldException e) {
- throw new ConfigurationException("Error while creating instance for " + elem.getNodeName(), e);
- } catch (IllegalAccessException e) {
+ } catch (InstantiationException|IllegalAccessException|NoSuchFieldException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
throw new ConfigurationException("Error while creating instance for " + elem.getNodeName(), e);
}
}
@@ -129,11 +125,11 @@ public class ConfigHelper {
return prefix + name.substring(0, 1).toUpperCase(Locale.ROOT) + name.substring(1);
}
- public static Method getMethod(Object obj, String name, Class ... params) {
+ public static Method getMethod(Object obj, String name, Class<?> ... params) {
Method[] ms = obj.getClass().getMethods();
for (Method m : ms) {
if (m.getName().equals(name)) {
- Class[] pt = m.getParameterTypes();
+ Class<?>[] pt = m.getParameterTypes();
if (pt.length == params.length) {
for (int j = 0; j < params.length; j++) {
if (!params[j].isAssignableFrom(pt[j])) {
@@ -199,9 +195,7 @@ public class ConfigHelper {
} catch (NoSuchMethodException e) {
log.trace("{} has no field {} or type " + T, obj, name);
return null;
- } catch (IllegalAccessException e) {
- throw new ConfigurationException("Unable to get list " + name + " of " + obj);
- } catch (InvocationTargetException e) {
+ } catch (IllegalAccessException|InvocationTargetException e) {
throw new ConfigurationException("Unable to get list " + name + " of " + obj);
}
}
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/Registry.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/Registry.java
index ff1b52c5..0b84570e 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/Registry.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/Registry.java
@@ -76,7 +76,7 @@ public class Registry {
public Aggregator createAggregator(String type) {
if (aggregators.containsKey(type)) {
try {
- return aggregators.get(type).newInstance();
+ return aggregators.get(type).getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new IllegalArgumentException("Unable to create aggregator of type: " + type, e);
}
@@ -87,7 +87,7 @@ public class Registry {
public ArtifactHandler createHandler(String type) {
if (handlers.containsKey(type)) {
try {
- return handlers.get(type).newInstance();
+ return handlers.get(type).getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new IllegalArgumentException("Unable to create handler of type: " + type, e);
}
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
index bac0b65d..f48d4fc9 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
@@ -276,7 +276,7 @@ public class InstallHookProcessorImpl implements InstallHookProcessor {
}
// create instance
try {
- hook = (InstallHook) clazz.newInstance();
+ hook = (InstallHook) clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new PackageException("hook's main class " + mainClassName + " could not be instantiated.", e);
}
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/ExecutionPlanBuilderImplTest.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/ExecutionPlanBuilderImplTest.java
index ea63d144..cd4f72e3 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/ExecutionPlanBuilderImplTest.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/ExecutionPlanBuilderImplTest.java
@@ -38,9 +38,8 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-@RunWith(MockitoJUnitRunner.class)
+@RunWith(org.mockito.junit.MockitoJUnitRunner.class)
public class ExecutionPlanBuilderImplTest {
private ExecutionPlanBuilderImpl builder;
diff --git a/vault-rcp/pom.xml b/vault-rcp/pom.xml
index 067011ad..bbda8f64 100644
--- a/vault-rcp/pom.xml
+++ b/vault-rcp/pom.xml
@@ -114,6 +114,19 @@
</excludes>
</configuration>
</plugin>
+ <plugin>
+ <groupId>de.thetaphi</groupId>
+ <artifactId>forbiddenapis</artifactId>
+ <configuration>
+ <excludes>
+ <!-- excluded embedded 3rd party libraries -->
+ <exclude>org/apache/jackrabbit/jcr2spi/**/*.class</exclude>
+ <exclude>org/apache/jackrabbit/spi2dav/**/*.class</exclude>
+ <exclude>org/apache/felix/utils/json/**/*.class</exclude>
+ <exclude>org/apache/jackrabbit/client/**/*.class</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
</plugins>
</build>