This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
The following commit(s) were added to refs/heads/master by this push:
new 05f5bf4 SLING-12779 Allow content loading of jcr:mixinTypes for all
resource resolver types
05f5bf4 is described below
commit 05f5bf49ec8fdf00d3415244cd3b3e570b4c546f
Author: Konrad Windszus <[email protected]>
AuthorDate: Thu May 8 20:25:12 2025 +0200
SLING-12779 Allow content loading of jcr:mixinTypes for all resource
resolver types
---
.../testing/mock/sling/loader/ContentLoader.java | 4 +---
.../AbstractContentLoaderFileVaultXmlTest.java | 21 +++++++++++++++++++++
.../sling/loader/AbstractContentLoaderJsonTest.java | 20 ++++++++++++++++++++
.../test/resources/json-import-samples/content.json | 1 +
.../content/samples/en/.content.xml | 1 +
5 files changed, 44 insertions(+), 3 deletions(-)
diff --git
a/core/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
b/core/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
index 86ed548..97583f9 100644
---
a/core/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
+++
b/core/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java
@@ -80,9 +80,7 @@ public final class ContentLoader {
.collect(Collectors.toSet());
// set of resource or property names that are ignored when other resource
resolver types than JCR_OAK are used
- private static final Set<String> MOCK_IGNORED_NAMES = Stream.concat(
- SHARED_IGNORED_NAMES.stream(),
Stream.of(JcrConstants.JCR_MIXINTYPES))
- .collect(Collectors.toSet());
+ private static final Set<String> MOCK_IGNORED_NAMES = SHARED_IGNORED_NAMES;
// set of resource or property names that are ignored when JCR_OAK
resource resolver type (= a real repo impl) is
// used
diff --git
a/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderFileVaultXmlTest.java
b/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderFileVaultXmlTest.java
index 0f31a95..bd95f28 100644
---
a/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderFileVaultXmlTest.java
+++
b/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderFileVaultXmlTest.java
@@ -21,8 +21,10 @@ package org.apache.sling.testing.mock.sling.loader;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
import java.util.List;
+import java.util.stream.Stream;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
@@ -36,6 +38,7 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -99,6 +102,12 @@ public abstract class AbstractContentLoaderFileVaultXmlTest
{
assertPrimaryNodeType(resource, "app:PageContent");
}
+ @Test
+ public void testPageContentMixinTypes() throws RepositoryException {
+ Resource resource = context.resourceResolver().getResource(path +
"/sample/en/jcr:content");
+ assertMixinTypes(resource, "app:TestMixin");
+ }
+
@Test
public void testPageContentProperties() {
Resource resource = context.resourceResolver().getResource(path +
"/sample/en/jcr:content");
@@ -116,4 +125,16 @@ public abstract class
AbstractContentLoaderFileVaultXmlTest {
assertEquals(nodeType, props.get(JcrConstants.JCR_PRIMARYTYPE));
}
}
+
+ private void assertMixinTypes(final Resource resource, String...
mixinTypes) throws RepositoryException {
+ Node node = resource.adaptTo(Node.class);
+ if (node != null) {
+ assertArrayEquals(
+ mixinTypes,
+
Stream.of(node.getMixinNodeTypes()).map(NodeType::getName).toArray(String[]::new));
+ } else {
+ ValueMap props = ResourceUtil.getValueMap(resource);
+ assertArrayEquals(mixinTypes,
props.get(JcrConstants.JCR_MIXINTYPES, String[].class));
+ }
+ }
}
diff --git
a/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonTest.java
b/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonTest.java
index 30c2153..bf6df29 100644
---
a/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonTest.java
+++
b/core/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonTest.java
@@ -21,10 +21,12 @@ package org.apache.sling.testing.mock.sling.loader;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;
+import java.util.stream.Stream;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
@@ -88,6 +90,12 @@ public abstract class AbstractContentLoaderJsonTest {
assertPrimaryNodeType(resource, "app:Page");
}
+ @Test
+ public void testPageContentMixinTypes() throws RepositoryException {
+ Resource resource = context.resourceResolver().getResource(path +
"/sample/en/jcr:content");
+ assertMixinTypes(resource, "app:TestMixin");
+ }
+
@Test
public void testPageContentResourceType() {
Resource resource = context.resourceResolver().getResource(path +
"/sample/en/toolbar/profiles/jcr:content");
@@ -144,6 +152,18 @@ public abstract class AbstractContentLoaderJsonTest {
}
}
+ private void assertMixinTypes(final Resource resource, String...
mixinTypes) throws RepositoryException {
+ Node node = resource.adaptTo(Node.class);
+ if (node != null) {
+ assertArrayEquals(
+ mixinTypes,
+
Stream.of(node.getMixinNodeTypes()).map(NodeType::getName).toArray(String[]::new));
+ } else {
+ ValueMap props = ResourceUtil.getValueMap(resource);
+ assertArrayEquals(mixinTypes,
props.get(JcrConstants.JCR_MIXINTYPES, String[].class));
+ }
+ }
+
@Test
public void testCalendarEcmaFormat() {
Resource resource = context.resourceResolver().getResource(path +
"/sample/en/jcr:content");
diff --git a/core/src/test/resources/json-import-samples/content.json
b/core/src/test/resources/json-import-samples/content.json
index c1fa7de..2784b31 100644
--- a/core/src/test/resources/json-import-samples/content.json
+++ b/core/src/test/resources/json-import-samples/content.json
@@ -4,6 +4,7 @@
"jcr:created": "Thu Aug 07 2014 16:32:59 GMT+0200",
"jcr:content": {
"jcr:primaryType": "app:PageContent",
+ "jcr:mixinTypes": ["app:TestMixin"],
"jcr:createdBy": "admin",
"jcr:title": "English",
"app:template": "/apps/sample/templates/homepage",
diff --git
a/core/src/test/resources/xml-jcr-import-samples/content/samples/en/.content.xml
b/core/src/test/resources/xml-jcr-import-samples/content/samples/en/.content.xml
index 09748dc..13d4844 100644
---
a/core/src/test/resources/xml-jcr-import-samples/content/samples/en/.content.xml
+++
b/core/src/test/resources/xml-jcr-import-samples/content/samples/en/.content.xml
@@ -24,6 +24,7 @@
app:deviceGroups="[/etc/mobile/groups/responsive]"
app:template="samples/sample-app/templates/content/homepage"
jcr:primaryType="app:PageContent"
+ jcr:mixinTypes="app:TestMixin"
jcr:title="en"
sling:resourceType="samples/sample-app/components/content/page/homepage"
includeAside="{Boolean}true"