Author: sseifert
Date: Thu Jun 11 15:38:32 2015
New Revision: 1684924

URL: http://svn.apache.org/r1684924
Log:
SLING-4773 ensure sling namespace is always registered when using JCR_MOCK 
resource resolver adapter

Modified:
    sling/trunk/testing/mocks/sling-mock/pom.xml
    
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
    
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/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
    
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java

Modified: sling/trunk/testing/mocks/sling-mock/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/pom.xml?rev=1684924&r1=1684923&r2=1684924&view=diff
==============================================================================
--- sling/trunk/testing/mocks/sling-mock/pom.xml (original)
+++ sling/trunk/testing/mocks/sling-mock/pom.xml Thu Jun 11 15:38:32 2015
@@ -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>

Modified: 
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java?rev=1684924&r1=1684923&r2=1684924&view=diff
==============================================================================
--- 
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
 (original)
+++ 
sling/trunk/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverAdapter.java
 Thu Jun 11 15:38:32 2015
@@ -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 imp
     @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);
     }
 

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=1684924&r1=1684923&r2=1684924&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 Jun 11 15:38:32 2015
@@ -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 ContextResourceResolverFacto
     }
 
     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) {

Modified: 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java?rev=1684924&r1=1684923&r2=1684924&view=diff
==============================================================================
--- 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
 (original)
+++ 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrNamespaceTest.java
 Thu Jun 11 15:38:32 2015
@@ -74,8 +74,8 @@ public abstract class AbstractJcrNamespa
         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

Modified: 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java?rev=1684924&r1=1684923&r2=1684924&view=diff
==============================================================================
--- 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
 (original)
+++ 
sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java
 Thu Jun 11 15:38:32 2015
@@ -155,7 +155,7 @@ public abstract class AbstractJcrResourc
     }
 
     @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 AbstractJcrResourc
         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());
+    }
 
 }


Reply via email to