You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2014/10/16 18:11:33 UTC
svn commit: r1632375 - in /sling/trunk/testing/mocks/sling-mock/src:
main/java/org/apache/sling/testing/mock/sling/context/
test/java/org/apache/sling/testing/mock/sling/context/
Author: sseifert
Date: Thu Oct 16 16:11:32 2014
New Revision: 1632375
URL: http://svn.apache.org/r1632375
Log:
SLING-4042 do not forget to register ResourceResolverFactory in OSGi context as well
Modified:
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java?rev=1632375&r1=1632374&r2=1632375&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java Thu Oct 16 16:11:32 2014
@@ -22,7 +22,9 @@ import javax.jcr.NamespaceRegistry;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.testing.mock.sling.MockSling;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
@@ -35,42 +37,43 @@ final class ContextResourceResolverFacto
// static methods only
}
- public static ResourceResolver initializeResourceResolver(final ResourceResolverType resourceResolverType) {
+ public static ResourceResolverFactory get(final ResourceResolverType resourceResolverType) {
try {
- ResourceResolver resourceResolver = MockSling.newResourceResolver(resourceResolverType);
+ ResourceResolverFactory factory = MockSling.newResourceResolverFactory(resourceResolverType);
switch (resourceResolverType) {
case JCR_MOCK:
- initializeJcrMock(resourceResolver);
+ initializeJcrMock(factory);
break;
case JCR_JACKRABBIT:
- initializeJcrJackrabbit(resourceResolver);
+ initializeJcrJackrabbit(factory);
break;
case RESOURCERESOLVER_MOCK:
- initializeResourceResolverMock(resourceResolver);
+ initializeResourceResolverMock(factory);
break;
default:
throw new IllegalArgumentException("Invalid resource resolver type: " + resourceResolverType);
}
- return resourceResolver;
+ return factory;
} catch (Throwable ex) {
- throw new RuntimeException("Unable to initialize " + resourceResolverType + " resource resolver.", ex);
+ throw new RuntimeException("Unable to initialize " + resourceResolverType + " resource resolver factory.", ex);
}
}
- private static void initializeJcrMock(final ResourceResolver resourceResolver) throws RepositoryException {
+ private static void initializeJcrMock(ResourceResolverFactory factory) throws RepositoryException, LoginException {
// register default namespaces
- NamespaceRegistry namespaceRegistry = resourceResolver.adaptTo(Session.class).getWorkspace()
- .getNamespaceRegistry();
+ ResourceResolver resolver = factory.getResourceResolver(null);
+ Session session = resolver.adaptTo(Session.class);
+ NamespaceRegistry namespaceRegistry = session.getWorkspace().getNamespaceRegistry();
namespaceRegistry.registerNamespace("sling", "http://sling.apache.org/jcr/sling/1.0");
}
- private static void initializeJcrJackrabbit(final ResourceResolver resourceResolver) {
- // TODO: register sling node types
+ private static void initializeJcrJackrabbit(ResourceResolverFactory factory) {
+ // register sling node types?
}
- private static void initializeResourceResolverMock(final ResourceResolver resourceResolver) {
+ private static void initializeResourceResolverMock(ResourceResolverFactory factory) {
// nothing to do
}
Modified: sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java?rev=1632375&r1=1632374&r2=1632375&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java Thu Oct 16 16:11:32 2014
@@ -27,8 +27,10 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.sling.api.adapter.AdapterFactory;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.scripting.SlingBindings;
import org.apache.sling.api.scripting.SlingScriptHelper;
import org.apache.sling.commons.mime.MimeTypeService;
@@ -73,6 +75,7 @@ public class SlingContextImpl {
// default to publish instance run mode
static final Set<String> DEFAULT_RUN_MODES = ImmutableSet.<String> builder().add("publish").build();
+ protected ResourceResolverFactory resourceResolverFactory;
protected MockModelAdapterFactory modelAdapterFactory;
protected ResourceResolverType resourceResolverType;
protected ComponentContext componentContext;
@@ -95,14 +98,25 @@ public class SlingContextImpl {
*/
protected void setUp() {
MockSling.setAdapterManagerBundleContext(bundleContext());
+ this.resourceResolverFactory = newResourceResolverFactory();
registerDefaultServices();
}
+
+ /**
+ * Initialize mocked resource resolver factory.
+ */
+ protected ResourceResolverFactory newResourceResolverFactory() {
+ return ContextResourceResolverFactory.get(this.resourceResolverType);
+ }
/**
* Default services that should be available for every unit test
*/
protected void registerDefaultServices() {
+ // resource resolver factory
+ registerService(ResourceResolverFactory.class, this.resourceResolverFactory);
+
// adapter factories
modelAdapterFactory = new MockModelAdapterFactory(componentContext());
registerService(AdapterFactory.class, modelAdapterFactory);
@@ -187,15 +201,15 @@ public class SlingContextImpl {
*/
public final ResourceResolver resourceResolver() {
if (this.resourceResolver == null) {
- this.resourceResolver = createMockResourceResolver();
+ try {
+ this.resourceResolver = this.resourceResolverFactory.getResourceResolver(null);
+ } catch (LoginException ex) {
+ throw new RuntimeException("Creating resource resolver failed.", ex);
+ }
}
return this.resourceResolver;
}
- protected ResourceResolver createMockResourceResolver() {
- return ContextResourceResolverFactory.initializeResourceResolver(resourceResolverType());
- }
-
/**
* @return Sling request
*/
Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java?rev=1632375&r1=1632374&r2=1632375&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java (original)
+++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java Thu Oct 16 16:11:32 2014
@@ -34,6 +34,7 @@ import javax.inject.Inject;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.scripting.SlingBindings;
import org.apache.sling.commons.mime.MimeTypeService;
import org.apache.sling.models.annotations.Model;
@@ -192,6 +193,12 @@ public class SlingContextImplTest {
assertTrue(newRunModes.contains("mode1"));
assertTrue(newRunModes.contains("mode2"));
}
+
+ @Test
+ public void testResourceResolverFactory() {
+ ResourceResolverFactory factory = context.getService(ResourceResolverFactory.class);
+ assertNotNull(factory);
+ }
@Model(adaptables = SlingHttpServletRequest.class)
public interface RequestAttributeModel {