This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-1.6.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 1b9e8dbc3de5145a80adac8bdf561b5fea41cc2b Author: Stefan Seifert <[email protected]> AuthorDate: Fri Oct 2 22:35:50 2015 +0000 SLING-5088 deprecate all methods that may lead to thread leaks git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1706500 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/sling/testing/mock/sling/MockSling.java | 60 +++++++++++++++++++++- .../sling/ResourceResolverFactoryInitializer.java | 2 - .../sling/servlet/MockSlingHttpServletRequest.java | 12 ++++- .../mock/sling/MockSlingScriptHelperTest.java | 4 +- .../context/AbstractSlingContextImplTest.java | 11 ++-- .../sling/context/ModelAdapterFactoryUtilTest.java | 19 +++---- .../sling/resource/AbstractJcrNamespaceTest.java | 7 ++- .../servlet/MockSlingHttpServletRequestTest.java | 2 +- 8 files changed, 87 insertions(+), 30 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java b/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java index db85756..a6e1440 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java @@ -56,13 +56,25 @@ public final class MockSling { * Creates new sling resource resolver factory instance. * @param type Type of underlying repository. * @return Resource resolver factory instance + * @deprecated Please use {@link #newResourceResolverFactory(ResourceResolverType, BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public static ResourceResolverFactory newResourceResolverFactory(final ResourceResolverType type) { return newResourceResolverFactory(type, MockOsgi.newBundleContext()); } /** * Creates new sling resource resolver factory instance. + * @param bundleContext Bundle context + * @return Resource resolver factory instance + */ + public static ResourceResolverFactory newResourceResolverFactory(final BundleContext bundleContext) { + return newResourceResolverFactory(DEFAULT_RESOURCERESOLVER_TYPE, bundleContext); + } + + /** + * Creates new sling resource resolver factory instance. * @param type Type of underlying repository. * @param bundleContext Bundle context * @return Resource resolver factory instance @@ -107,7 +119,10 @@ public final class MockSling { * Creates new sling resource resolver factory instance using * {@link #DEFAULT_RESOURCERESOLVER_TYPE}. * @return Resource resolver factory instance + * @deprecated Please use {@link #newResourceResolverFactory(BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public static ResourceResolverFactory newResourceResolverFactory() { return newResourceResolverFactory(DEFAULT_RESOURCERESOLVER_TYPE); } @@ -116,7 +131,10 @@ public final class MockSling { * Creates new sling resource resolver instance. * @param type Type of underlying repository. * @return Resource resolver instance + * @deprecated Please use {@link #newResourceResolver(ResourceResolverType, BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public static ResourceResolver newResourceResolver(final ResourceResolverType type) { ResourceResolverFactory factory = newResourceResolverFactory(type); try { @@ -130,12 +148,38 @@ public final class MockSling { * Creates new sling resource resolver instance using * {@link #DEFAULT_RESOURCERESOLVER_TYPE}. * @return Resource resolver instance + * @deprecated Please use {@link #newResourceResolver(BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public static ResourceResolver newResourceResolver() { return newResourceResolver(DEFAULT_RESOURCERESOLVER_TYPE); } /** + * Creates new sling resource resolver instance. + * @param type Type of underlying repository. + * @return Resource resolver instance + */ + public static ResourceResolver newResourceResolver(final ResourceResolverType type, BundleContext bundleContext) { + ResourceResolverFactory factory = newResourceResolverFactory(type, bundleContext); + try { + return factory.getAdministrativeResourceResolver(null); + } catch (LoginException ex) { + throw new RuntimeException("Mock resource resolver factory implementation seems to require login.", ex); + } + } + + /** + * Creates new sling resource resolver instance using + * {@link #DEFAULT_RESOURCERESOLVER_TYPE}. + * @return Resource resolver instance + */ + public static ResourceResolver newResourceResolver(BundleContext bundleContext) { + return newResourceResolver(DEFAULT_RESOURCERESOLVER_TYPE, bundleContext); + } + + /** * Creates a new sling script helper instance. * @param request Request * @param response Response @@ -151,11 +195,23 @@ public final class MockSling { * Creates a new sling script helper instance using * {@link #DEFAULT_RESOURCERESOLVER_TYPE} for the resource resolver. * @return Sling script helper instance + * @deprecated Please use {@link #newSlingScriptHelper(BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public static SlingScriptHelper newSlingScriptHelper() { - SlingHttpServletRequest request = new MockSlingHttpServletRequest(newResourceResolver()); - SlingHttpServletResponse response = new MockSlingHttpServletResponse(); BundleContext bundleContext = MockOsgi.newBundleContext(); + return newSlingScriptHelper(bundleContext); + } + + /** + * Creates a new sling script helper instance using + * {@link #DEFAULT_RESOURCERESOLVER_TYPE} for the resource resolver. + * @return Sling script helper instance + */ + public static SlingScriptHelper newSlingScriptHelper(BundleContext bundleContext) { + SlingHttpServletRequest request = new MockSlingHttpServletRequest(newResourceResolver(bundleContext)); + SlingHttpServletResponse response = new MockSlingHttpServletResponse(); return newSlingScriptHelper(request, response, bundleContext); } diff --git a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java index ae1f129..0572ec9 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverFactoryInitializer.java @@ -42,8 +42,6 @@ import org.osgi.framework.Constants; import org.osgi.framework.ServiceReference; import org.osgi.service.event.EventAdmin; -import sun.util.BuddhistCalendar; - /** * Initializes Sling Resource Resolver factories with JCR-resource mapping. */ diff --git a/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java b/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java index 4349cac..02130cd 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java @@ -108,9 +108,19 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling /** * Instantiate with default resource resolver + * @deprecated Please use {@link #MockSlingHttpServletRequest(BundleContext)} + * and shutdown the bundle context after usage. */ + @Deprecated public MockSlingHttpServletRequest() { - this(MockSling.newResourceResolver()); + this(MockOsgi.newBundleContext()); + } + + /** + * Instantiate with default resource resolver + */ + public MockSlingHttpServletRequest(BundleContext bundleContext) { + this(MockSling.newResourceResolver(bundleContext)); } /** diff --git a/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java b/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java index 9f5bebd..c4098b7 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java @@ -44,10 +44,10 @@ public class MockSlingScriptHelperTest { @Before public void setUp() throws Exception { - this.resourceResolver = MockSling.newResourceResolver(); + this.bundleContext = MockOsgi.newBundleContext(); + this.resourceResolver = MockSling.newResourceResolver(bundleContext); this.request = new MockSlingHttpServletRequest(this.resourceResolver); this.response = new MockSlingHttpServletResponse(); - this.bundleContext = MockOsgi.newBundleContext(); this.scriptHelper = MockSling.newSlingScriptHelper(this.request, this.response, this.bundleContext); } diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java index c129ee1..391cce6 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/context/AbstractSlingContextImplTest.java @@ -36,12 +36,10 @@ import org.apache.sling.api.scripting.SlingBindings; import org.apache.sling.commons.mime.MimeTypeService; import org.apache.sling.models.annotations.Model; import org.apache.sling.settings.SlingSettingsService; -import org.apache.sling.testing.mock.sling.MockSling; import org.apache.sling.testing.mock.sling.ResourceResolverType; import org.apache.sling.testing.mock.sling.junit.SlingContext; import org.apache.sling.testing.mock.sling.loader.ContentLoader; import org.apache.sling.testing.mock.sling.services.MockMimeTypeService; -import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -112,11 +110,9 @@ public abstract class AbstractSlingContextImplTest { public void testSlingModelsOsgiService() { context.registerService(new MockMimeTypeService()); - ResourceResolver resolver = MockSling.newResourceResolver(); - OsgiServiceModel model = resolver.adaptTo(OsgiServiceModel.class); + OsgiServiceModel model = context.resourceResolver().adaptTo(OsgiServiceModel.class); assertNotNull(model.getMimeTypeService()); assertEquals("text/html", model.getMimeTypeService().getMimeType("html")); - resolver.close(); } @Test @@ -127,9 +123,8 @@ public abstract class AbstractSlingContextImplTest { @Test public void testAdaptToInterface() { - MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(); - request.setAttribute("prop1", "myValue"); - ServiceInterface model = request.adaptTo(ServiceInterface.class); + context.request().setAttribute("prop1", "myValue"); + ServiceInterface model = context.request().adaptTo(ServiceInterface.class); assertNotNull(model); assertEquals("myValue", model.getPropValue()); } diff --git a/src/test/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtilTest.java b/src/test/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtilTest.java index 13df440..d935bbb 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtilTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/context/ModelAdapterFactoryUtilTest.java @@ -28,10 +28,8 @@ import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.commons.mime.MimeTypeService; import org.apache.sling.models.annotations.Model; -import org.apache.sling.testing.mock.sling.MockSling; import org.apache.sling.testing.mock.sling.junit.SlingContext; import org.apache.sling.testing.mock.sling.services.MockMimeTypeService; -import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -49,9 +47,8 @@ public class ModelAdapterFactoryUtilTest { @Test public void testRequestAttribute() { - MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(); - request.setAttribute("prop1", "myValue"); - RequestAttributeModel model = request.adaptTo(RequestAttributeModel.class); + context.request().setAttribute("prop1", "myValue"); + RequestAttributeModel model = context.request().adaptTo(RequestAttributeModel.class); assertNotNull(model); assertEquals("myValue", model.getProp1()); } @@ -60,26 +57,22 @@ public class ModelAdapterFactoryUtilTest { public void testOsgiService() { context.registerService(MimeTypeService.class, new MockMimeTypeService(), null); - ResourceResolver resolver = MockSling.newResourceResolver(); - OsgiServiceModel model = resolver.adaptTo(OsgiServiceModel.class); + OsgiServiceModel model = context.resourceResolver().adaptTo(OsgiServiceModel.class); assertNotNull(model); assertNotNull(model.getMimeTypeService()); assertEquals("text/html", model.getMimeTypeService().getMimeType("html")); - resolver.close(); } @Test public void testInvalidAdapt() { - MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(); - OsgiServiceModel model = request.adaptTo(OsgiServiceModel.class); + OsgiServiceModel model = context.request().adaptTo(OsgiServiceModel.class); assertNull(model); } @Test public void testAdaptToInterface() { - MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(); - request.setAttribute("prop1", "myValue"); - ServiceInterface model = request.adaptTo(ServiceInterface.class); + context.request().setAttribute("prop1", "myValue"); + ServiceInterface model = context.request().adaptTo(ServiceInterface.class); assertNotNull(model); assertEquals("myValue", model.getPropValue()); } diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java index 71b93b7..427e338 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java @@ -27,12 +27,14 @@ import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceUtil; import org.apache.sling.api.resource.ValueMap; +import org.apache.sling.testing.mock.osgi.MockOsgi; import org.apache.sling.testing.mock.sling.MockSling; import org.apache.sling.testing.mock.sling.ResourceResolverType; import org.apache.sling.testing.mock.sling.junit.SlingContext; import org.apache.sling.testing.mock.sling.loader.ContentLoader; import org.junit.Rule; import org.junit.Test; +import org.osgi.framework.BundleContext; /** * Validates correct registering and mapping of JCR namespaces, esp. the sling namespace. @@ -46,7 +48,8 @@ public abstract class AbstractJcrNamespaceTest { @Test public void testSling4362() throws RepositoryException { - ResourceResolver resolver = MockSling.newResourceResolver(getResourceResolverType()); + BundleContext bundleContext = MockOsgi.newBundleContext(); + ResourceResolver resolver = MockSling.newResourceResolver(getResourceResolverType(), bundleContext); ContentLoader contentLoader = new ContentLoader(resolver); contentLoader.json("/json-import-samples/SLING-4362.json", context.uniqueRoot().content() + "/foo"); @@ -56,6 +59,8 @@ public abstract class AbstractJcrNamespaceTest { ValueMap props = ResourceUtil.getValueMap(resource); assertEquals("fooType", props.get(SLING_RESOURCE_TYPE_PROPERTY)); assertEquals("fooType", resource.getResourceType()); + + MockOsgi.shutdown(bundleContext); } @Test diff --git a/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java b/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java index 3ab99ad..953f52d 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java @@ -87,7 +87,7 @@ public class MockSlingHttpServletRequestTest { @Test public void testDefaultResourceResolver() { - assertNotNull(new MockSlingHttpServletRequest().getResourceResolver()); + assertNotNull(new MockSlingHttpServletRequest(bundleContext).getResourceResolver()); } @Test -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
