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.1.2 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit b816e47b18fd0242b82c5499fadc4b2a57bcadcd Author: Stefan Seifert <[email protected]> AuthorDate: Wed Jan 14 21:59:15 2015 +0000 SLING-4267 support importing nt:resource nodes in jackrabbit with empty binary data git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1651848 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/sling/testing/mock/sling/loader/ContentLoader.java | 11 +++++++++-- .../mock/sling/loader/AbstractContentLoaderJsonDamTest.java | 10 +++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java b/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java index 3b6374e..7fc1111 100644 --- a/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java +++ b/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java @@ -33,6 +33,7 @@ import java.util.Set; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jackrabbit.JcrConstants; +import org.apache.sling.api.resource.ModifiableValueMap; import org.apache.sling.api.resource.PersistenceException; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; @@ -201,13 +202,13 @@ public final class ContentLoader { throws IOException, JSONException { // collect all properties first + boolean hasJcrData = false; Map<String, Object> props = new HashMap<String, Object>(); JSONArray names = jsonObject.names(); for (int i = 0; names != null && i < names.length(); i++) { final String name = names.getString(i); if (StringUtils.equals(name, JCR_DATA_PLACEHOLDER)) { - // we cannot import binary data here - but to avoid complaints by JCR we create it with empty binary data - this.setProperty(props, JcrConstants.JCR_DATA, new ByteArrayInputStream(new byte[0])); + hasJcrData = true; } else if (!IGNORED_NAMES.contains(name)) { Object obj = jsonObject.get(name); @@ -230,6 +231,12 @@ public final class ContentLoader { // create resource Resource resource = resourceResolver.create(parentResource, childName, props); + + if (hasJcrData) { + ModifiableValueMap valueMap = resource.adaptTo(ModifiableValueMap.class); + // we cannot import binary data here - but to avoid complaints by JCR we create it with empty binary data + valueMap.put(JcrConstants.JCR_DATA, new ByteArrayInputStream(new byte[0])); + } // add child resources for (int i = 0; names != null && i < names.length(); i++) { diff --git a/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonDamTest.java b/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonDamTest.java index 7222cd3..54fdb67 100644 --- a/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonDamTest.java +++ b/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonDamTest.java @@ -20,13 +20,17 @@ package org.apache.sling.testing.mock.sling.loader; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.IOException; +import java.io.InputStream; import javax.jcr.NamespaceRegistry; import javax.jcr.RepositoryException; import javax.jcr.Session; +import org.apache.commons.io.IOUtils; +import org.apache.jackrabbit.JcrConstants; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceUtil; @@ -83,14 +87,14 @@ public abstract class AbstractContentLoaderJsonDamTest { assertArrayEquals(new String[] { "stockphotography:business/business_people", "properties:style/color", "properties:orientation/landscape" }, props.get("app:tags", String[].class)); - /* - TODO: this is not working yet in the different resource resolver types - goal: validate binary is present, but empty. + // validate that a binary data node is present, but empty Resource binaryMetadata = this.resourceResolver .getResource("/content/dam/sample/portraits/scott_reynolds.jpg/jcr:content/renditions/original/jcr:content"); ValueMap binaryProps = ResourceUtil.getValueMap(binaryMetadata); InputStream is = binaryProps.get(JcrConstants.JCR_DATA, InputStream.class); assertNotNull(is); - */ + byte[] binaryData = IOUtils.toByteArray(is); + assertEquals(0, binaryData.length); } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
