This is an automated email from the ASF dual-hosted git repository. olli pushed a commit to branch SLING-11728 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
commit ca1b24f422d47573b7e492d588ccf4658ba77b6d Author: Oliver Lietz <[email protected]> AuthorDate: Mon Dec 12 12:11:37 2022 +0100 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 --- pom.xml | 16 +++--- .../resolver/internal/SlingServletResolver.java | 6 +- .../resolver/it/ServletResolverTestSupport.java | 64 +++++++++++++-------- .../servlets/resolver/it/ServletResourceIT.java | 67 ++++------------------ 4 files changed, 62 insertions(+), 91 deletions(-) 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.ResourceResolver; 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 @@ public class SlingServletResolver // ---------- 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 @@ public class SlingServletResolver } /** - * @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.servlethelpers.MockSlingHttpServletResponse; 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 @@ public class ServletResolverTestSupport extends TestSupport { 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 @@ public class ServletResolverTestSupport extends TestSupport { 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.Servlet; 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.api.servlets.ServletResolverConstants; 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.ops4j.pax.tinybundles.core.TinyBundles; 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 @@ public class ServletResourceIT extends TestSupport { @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
