You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2025/05/08 18:25:21 UTC
(sling-org-apache-sling-testing-sling-mock) branch bugfix/allow-import-of-jcr-mixintypes created (now 6941051)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a change to branch bugfix/allow-import-of-jcr-mixintypes
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
at 6941051 SLING-12779 Allow content loading of jcr:mixinTypes for all resource resolver types
This branch includes the following new commits:
new 6941051 SLING-12779 Allow content loading of jcr:mixinTypes for all resource resolver types
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(sling-org-apache-sling-testing-sling-mock) 01/01: SLING-12779 Allow content loading of jcr:mixinTypes for all resource resolver types
Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch bugfix/allow-import-of-jcr-mixintypes
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 69410514c7d637b9ac24768f473912ee7a9bb5bb
Author: Konrad Windszus <kw...@apache.org>
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 | 25 ++++++++++++++++++++++
.../loader/AbstractContentLoaderJsonTest.java | 24 +++++++++++++++++++++
.../resources/json-import-samples/content.json | 1 +
.../content/samples/en/.content.xml | 1 +
5 files changed, 52 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..ba4a62a 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,11 @@ 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.Collectors;
+import java.util.stream.Stream;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
@@ -36,6 +39,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 +103,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 +126,19 @@ 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)
+ .collect(Collectors.toSet())
+ .toArray(new String[0]));
+ } 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..c53bd14 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,13 @@ 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.Collectors;
+import java.util.stream.Stream;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
@@ -88,6 +91,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 +153,21 @@ 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)
+ .collect(Collectors.toSet())
+ .toArray(new String[0]));
+ } 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"