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.4.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit e0cc675e008838db69f71ce1223c1c39e1927684 Author: Stefan Seifert <[email protected]> AuthorDate: Thu Jun 11 15:38:32 2015 +0000 SLING-4773 ensure sling namespace is always registered when using JCR_MOCK resource resolver adapter git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1684924 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 2 +- .../testing/mock/sling/MockJcrResourceResolverAdapter.java | 14 ++++++++++++++ .../mock/sling/context/ContextResourceResolverFactory.java | 10 +--------- .../mock/sling/resource/AbstractJcrNamespaceTest.java | 4 ++-- .../sling/resource/AbstractJcrResourceResolverTest.java | 13 ++++++++++++- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index c768e96..33fa653 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.testing.jcr-mock</artifactId> - <version>1.1.6</version> + <version>1.1.7-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> diff --git a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java index 87705b6..4ec0f72 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java @@ -18,7 +18,10 @@ */ package org.apache.sling.testing.mock.sling; +import javax.jcr.NamespaceRegistry; import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.jcr.api.SlingRepository; @@ -38,6 +41,17 @@ class MockJcrResourceResolverAdapter implements ResourceResolverTypeAdapter { @Override public SlingRepository newSlingRepository() { Repository repository = MockJcr.newRepository(); + + try { + Session session = repository.login(); + NamespaceRegistry namespaceRegistry = session.getWorkspace().getNamespaceRegistry(); + namespaceRegistry.registerNamespace("sling", "http://sling.apache.org/jcr/sling/1.0"); + session.logout(); + } + catch (RepositoryException ex) { + throw new RuntimeException("Unable to register namespaces in JCR Mock repository.", ex); + } + return new MockSlingRepository(repository); } diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java index b8ba839..0b12486 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java @@ -18,12 +18,9 @@ */ package org.apache.sling.testing.mock.sling.context; -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; @@ -74,12 +71,7 @@ final class ContextResourceResolverFactory { } private static void initializeJcrMock(ResourceResolverFactory factory) throws RepositoryException, LoginException { - // register default namespaces - 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"); - resolver.close(); + // nothing to do } private static void initializeJcrJackrabbit(ResourceResolverFactory factory) { 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 f7acd25..297073d 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 @@ -74,8 +74,8 @@ public abstract class AbstractJcrNamespaceTest { ValueMap props = ResourceUtil.getValueMap(resource); assertEquals("fooType", props.get("sling:resourceType")); - // without proper sling namespace definition it is expected that the JCR resource implementation cannot detect the resource type properly - assertEquals("nt:unstructured", resource.getResourceType()); + // since SLING-4773 sling namespace is readly registered in the MockJcrResourceResolverAdapter, so this will still work here + assertEquals("fooType", resource.getResourceType()); } @Test diff --git a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java index f17f6d6..c5867f6 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java @@ -155,7 +155,7 @@ public abstract class AbstractJcrResourceResolverTest { } @Test - public void testCreateNodeType() throws RepositoryException, PersistenceException { + public void testCreateNodeWithPrimaryType() throws RepositoryException, PersistenceException { Resource parent = resourceResolver.getResource(getTestRootNode().getPath()); Resource child = resourceResolver.create(parent, "nodeTypeResource", ImmutableMap.<String, Object> builder() @@ -164,5 +164,16 @@ public abstract class AbstractJcrResourceResolverTest { assertEquals(JcrConstants.NT_UNSTRUCTURED, child.getResourceType()); assertEquals(JcrConstants.NT_UNSTRUCTURED, child.adaptTo(Node.class).getPrimaryNodeType().getName()); } + + @Test + public void testCreateNodeWithResourceType() throws RepositoryException, PersistenceException { + Resource parent = resourceResolver.getResource(getTestRootNode().getPath()); + + Resource child = ResourceUtil.getOrCreateResource(resourceResolver, parent.getPath() + "/intermediate/child", + "sling/resource/type", JcrConstants.NT_UNSTRUCTURED, true); + assertNotNull(child); + assertEquals(JcrConstants.NT_UNSTRUCTURED, parent.getResourceType()); + assertEquals("sling/resource/type", child.getResourceType()); + } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
