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]>.

Reply via email to