SLING-11728 Remove bi-directional dependencies between Engine and Servlets Resolver
* switch from org.apache.sling.engine.servlets.ErrorHandler to org.apache.sling.api.servlets.ErrorHandler
* update to Sling Bundle Parent 49
* update dependencies
* adjust and improve integration tests
diff --git a/pom.xml b/pom.xml
index 736dd24..88d7b56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.sling</groupId>
<artifactId>sling-bundle-parent</artifactId>
- <version>46</version>
+ <version>49</version>
<relativePath />
</parent>
@@ -171,7 +171,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.scripting.spi</artifactId>
- <version>1.0.2</version>
+ <version>1.0.4</version>
<scope>provided</scope>
</dependency>
@@ -199,6 +199,7 @@
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
@@ -209,7 +210,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.26.0</version>
+ <version>2.27.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- for ServiceUserMapped (SLING-4312) -->
@@ -238,7 +239,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.engine</artifactId>
- <version>2.2.0</version>
+ <version>2.12.3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -324,10 +325,12 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
@@ -374,16 +377,15 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
- <version>6.0.3</version>
+ <version>7.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.servlet-helpers</artifactId>
- <version>1.3.0</version>
+ <version>1.4.2</version>
<scope>test</scope>
</dependency>
- <!-- compatible with API 2.24.0 -->
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.resourceresolver</artifactId>
diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java b/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
index 3b23e07..81a99c9 100644
--- a/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
+++ b/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
@@ -49,10 +49,10 @@
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.SyntheticResource;
+import org.apache.sling.api.servlets.ErrorHandler;
import org.apache.sling.api.servlets.OptingServlet;
import org.apache.sling.api.servlets.ServletResolver;
import org.apache.sling.api.servlets.ServletResolverConstants;
-import org.apache.sling.engine.servlets.ErrorHandler;
import org.apache.sling.serviceusermapping.ServiceUserMapped;
import org.apache.sling.servlets.resolver.internal.defaults.DefaultErrorHandlerServlet;
import org.apache.sling.servlets.resolver.internal.defaults.DefaultServlet;
@@ -266,7 +266,7 @@
// ---------- ErrorHandler interface --------------------------------------
/**
- * @see org.apache.sling.engine.servlets.ErrorHandler#handleError(int,
+ * @see org.apache.sling.api.servlets.ErrorHandler#handleError(int,
* String, SlingHttpServletRequest, SlingHttpServletResponse)
*/
@Override
@@ -325,7 +325,7 @@
}
/**
- * @see org.apache.sling.engine.servlets.ErrorHandler#handleError(java.lang.Throwable, SlingHttpServletRequest, SlingHttpServletResponse)
+ * @see org.apache.sling.api.servlets.ErrorHandler#handleError(java.lang.Throwable, SlingHttpServletRequest, SlingHttpServletResponse)
*/
@Override
public void handleError(final Throwable throwable, final SlingHttpServletRequest request, final SlingHttpServletResponse response)
diff --git a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
index 1c477ad..1789aa9 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
@@ -18,19 +18,6 @@
*/
package org.apache.sling.servlets.resolver.it;
-import static org.apache.sling.testing.paxexam.SlingOptions.slingServlets;
-import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.options;
-import static org.ops4j.pax.exam.CoreOptions.vmOption;
-import static org.ops4j.pax.exam.CoreOptions.when;
-import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
-
import java.lang.reflect.Method;
import javax.inject.Inject;
@@ -45,10 +32,28 @@
import org.apache.sling.testing.paxexam.TestSupport;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.options.ModifiableCompositeOption;
import org.ops4j.pax.exam.options.extra.VMOption;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
+import static org.apache.sling.testing.paxexam.SlingOptions.sling;
+import static org.apache.sling.testing.paxexam.SlingOptions.slingScripting;
+import static org.apache.sling.testing.paxexam.SlingOptions.slingXss;
+import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
+import static org.apache.sling.testing.paxexam.SlingVersionResolver.SLING_GROUP_ID;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.vmOption;
+import static org.ops4j.pax.exam.CoreOptions.when;
+import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
+import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
+
public class ServletResolverTestSupport extends TestSupport {
@Inject
@@ -91,24 +96,33 @@
jacocoCommand = vmOption(jacocoOpt);
}
-
final int httpPort = findFreePort();
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.api");
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.resourceresolver");
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.scripting.core");
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.commons.johnzon");
- versionResolver.setVersion("org.apache.sling", "org.apache.sling.engine", "2.7.2");
+ versionResolver.setVersionFromProject(SLING_GROUP_ID, "org.apache.sling.api");
+ versionResolver.setVersionFromProject(SLING_GROUP_ID, "org.apache.sling.resourceresolver");
+ versionResolver.setVersionFromProject(SLING_GROUP_ID, "org.apache.sling.scripting.core");
+ versionResolver.setVersionFromProject(SLING_GROUP_ID, "org.apache.sling.commons.johnzon");
+ versionResolver.setVersionFromProject(SLING_GROUP_ID, "org.apache.sling.engine");
+ versionResolver.setVersion(SLING_GROUP_ID, "org.apache.sling.auth.core", "1.6.0");
return options(
composite(
when(debugOption != null).useOptions(debugOption),
when(vmOption != null).useOptions(vmOption),
when(jacocoCommand != null).useOptions(jacocoCommand),
baseConfiguration(),
- slingServlets(),
- mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.converter").version("1.0.12"), // new Sling API dependency
- testBundle("bundle.filename"),
+ sling(),
+ slingScripting(),
+ slingXss(),
+ factoryConfiguration("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended")
+ .put("user.mapping", new String[]{"org.apache.sling.servlets.resolver:console=sling-readall", "org.apache.sling.servlets.resolver:scripts=sling-scripting"})
+ .asOption(),
+
+ mavenBundle().groupId("org.osgi").artifactId("org.osgi.util.converter").version("1.0.9"), // new Sling API dependency
+ testBundle(),
mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.scripting.spi").versionAsInProject(),
mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.servlet-helpers").versionAsInProject(),
+ //
+ mavenBundle().groupId("commons-codec").artifactId("commons-codec").version("1.15"),
+ //
junitBundles(),
newConfiguration("org.apache.felix.http")
.put("org.osgi.service.http.port", httpPort)
@@ -123,12 +137,14 @@
newConfiguration("org.apache.sling.jcr.base.internal.LoginAdminWhitelist")
.put("whitelist.bundles.regexp", "^PAXEXAM.*$")
.asOption()
- ).remove(
- mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.servlets.resolver").version(versionResolver) // remove bundle from slingQuickstartOakTar, added via testBundle in current version
)
);
}
+ protected Option testBundle() {
+ return testBundle("bundle.filename");
+ }
+
protected MockSlingHttpServletResponse executeRequest(final String path, final int expectedStatus) throws Exception {
return executeRequest("GET", path, expectedStatus);
}
diff --git a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java
index a80e09e..ee66b13 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResourceIT.java
@@ -31,7 +31,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
@@ -40,17 +39,13 @@
import org.apache.sling.scripting.spi.bundle.BundledRenderUnit;
import org.apache.sling.scripting.spi.bundle.TypeProvider;
import org.apache.sling.servlets.resolver.internal.bundle.BundledScriptServlet;
-import org.apache.sling.testing.paxexam.TestSupport;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.Before;
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.extra.VMOption;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.ops4j.pax.tinybundles.core.TinyBundle;
@@ -58,20 +53,13 @@
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
-import static org.apache.sling.testing.paxexam.SlingOptions.slingServlets;
-import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.options;
-import static org.ops4j.pax.exam.CoreOptions.when;
-import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
+import static org.ops4j.pax.exam.CoreOptions.streamBundle;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
-public class ServletResourceIT extends TestSupport {
+public class ServletResourceIT extends ServletResolverTestSupport {
private BundledRenderUnit bundledRenderUnit;
@@ -81,50 +69,15 @@
@Inject
private BundleContext bundleContext;
- @Configuration
- public Option[] ownConfiguration() throws FileNotFoundException {
- TinyBundle bundle = TinyBundles.bundle().read(new FileInputStream(System.getProperty("bundle.filename")));
- String header = bundle.getHeader("Export-Package");
- bundle.set("Export-Package", header + ",org.apache.sling.servlets.resolver.internal.bundle");
- final String vmOpt = System.getProperty("pax.vm.options");
- VMOption vmOption = null;
- if (StringUtils.isNotEmpty(vmOpt)) {
- vmOption = new VMOption(vmOpt);
+ protected Option testBundle() {
+ try {
+ TinyBundle bundle = TinyBundles.bundle().read(new FileInputStream(System.getProperty("bundle.filename")));
+ String header = bundle.getHeader("Export-Package");
+ bundle.set("Export-Package", header + ",org.apache.sling.servlets.resolver.internal.bundle");
+ return streamBundle(bundle.build()).start();
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException(e);
}
- final int httpPort = findFreePort();
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.api");
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.resourceresolver");
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.scripting.core");
- versionResolver.setVersionFromProject("org.apache.sling", "org.apache.sling.commons.johnzon");
- versionResolver.setVersion("org.apache.sling", "org.apache.sling.engine", "2.7.2");
-
- return options(
- composite(
- when(vmOption != null).useOptions(vmOption),
- baseConfiguration(),
- slingServlets(),
- mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.converter").version("1.0.12"), // new Sling API dependency
- mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.scripting.spi").versionAsInProject(),
- mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.servlet-helpers").versionAsInProject(),
- junitBundles(),
- newConfiguration("org.apache.felix.http")
- .put("org.osgi.service.http.port", httpPort)
- .asOption(),
- newConfiguration("org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl")
- .put("resource.resolver.required.providernames", "")
- .asOption(),
- buildBundleWithBnd(
- TestResourceProvider.class,
- TestServiceUserValidator.class
- ),
- newConfiguration("org.apache.sling.jcr.base.internal.LoginAdminWhitelist")
- .put("whitelist.bundles.regexp", "^PAXEXAM.*$")
- .asOption(),
- CoreOptions.streamBundle(bundle.build()).start()
- ).remove(
- mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.servlets.resolver").version(versionResolver) // remove bundle from slingQuickstartOakTar, added via testBundle in current version
- )
- );
}
@Before