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]>.

Reply via email to