You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/07/22 15:39:15 UTC

svn commit: r1149603 - in /jackrabbit/sandbox/spi2microkernel/src: main/java/org/apache/jackrabbit/spi2microkernel/util/Values.java test/java/org/apache/jackrabbit/spi2microkernel/RepositoryTest.java

Author: mduerig
Date: Fri Jul 22 13:39:14 2011
New Revision: 1149603

URL: http://svn.apache.org/viewvc?rev=1149603&view=rev
Log:
spi2microkernel (WIP)
- Base64 encode small binaries

Modified:
    jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Values.java
    jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/RepositoryTest.java

Modified: jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Values.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Values.java?rev=1149603&r1=1149602&r2=1149603&view=diff
==============================================================================
--- jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Values.java (original)
+++ jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/util/Values.java Fri Jul 22 13:39:14 2011
@@ -25,8 +25,12 @@ import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.QValue;
 import org.apache.jackrabbit.spi.QValueFactory;
 import org.apache.jackrabbit.spi.commons.value.QValueFactoryImpl;
+import org.apache.jackrabbit.util.Base64;
 
 import javax.jcr.RepositoryException;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -156,7 +160,14 @@ public final class Values {
             }
 
             public QValue create(String value) throws RepositoryException {
-                return FACTORY.create(value, BINARY);
+                try {
+                    ByteArrayOutputStream os = new ByteArrayOutputStream();
+                    Base64.decode(value, os);
+                    return FACTORY.create(os.toByteArray());
+                }
+                catch (IOException e) {
+                    throw new RepositoryException(e); 
+                }
             }
         };
         put(TYPES[BINARY], valueFactory);
@@ -302,7 +313,14 @@ public final class Values {
                     }
                 }
                 else {
-                    return typeEncode(type, JsonBuilder.escape(value.getString()));
+                    try {
+                        StringWriter sw = new StringWriter();
+                        Base64.encode(value.getStream(), sw);
+                        return typeEncode(type, JsonBuilder.escape(sw.toString()));
+                    }
+                    catch (IOException e) {
+                        throw new RepositoryException(e); 
+                    }
                 }
 
             case REFERENCE:

Modified: jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/RepositoryTest.java?rev=1149603&r1=1149602&r2=1149603&view=diff
==============================================================================
--- jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/RepositoryTest.java (original)
+++ jackrabbit/sandbox/spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/RepositoryTest.java Fri Jul 22 13:39:14 2011
@@ -582,6 +582,14 @@ public class RepositoryTest {
     }
 
     @Test
+    public void addSmallBinaryProperty() throws RepositoryException, IOException {
+        Node parentNode = getNode(testPath);
+        InputStream is = new NumberStream(1234);
+        Binary bin = getSession().getValueFactory().createBinary(is);
+        addProperty(parentNode, "bigBinary", getSession().getValueFactory().createValue(bin));
+    }
+
+    @Test
     public void addBigBinaryProperty() throws RepositoryException, IOException {
         Node parentNode = getNode(testPath);
         InputStream is = new NumberStream(123456);