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());
+ }
}