You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2011/11/08 17:00:45 UTC

svn commit: r1199312 - in /jackrabbit/trunk: jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/ jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/

Author: jukka
Date: Tue Nov  8 16:00:45 2011
New Revision: 1199312

URL: http://svn.apache.org/viewvc?rev=1199312&view=rev
Log:
JCR-3093: Inconsistency between Session.getProperty and Node.getProperty for binary values

Patch by Angela

Modified:
    jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/BinaryTest.java
    jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
    jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/BinaryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/BinaryTest.java?rev=1199312&r1=1199311&r2=1199312&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/BinaryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/BinaryTest.java Tue Nov  8 16:00:45 2011
@@ -73,6 +73,25 @@ public class BinaryTest extends Abstract
         }
     }
 
+    public void testStreamBinary2() throws Exception {
+        Node test = testRootNode.addNode("test");
+        Property p = test.setProperty("prop", generateValue());
+        // check before save
+        checkBinary(p);
+        superuser.save();
+        // check after save
+        checkBinary(p);
+
+        // check from other session
+        Session s = getHelper().getReadOnlySession();
+        try {
+            p = s.getProperty(testRoot + "/test/prop");
+            checkBinary(p);
+        } finally {
+            s.logout();
+        }
+    }
+
     public void testBinaryTwiceNewProperty() throws Exception {
         Node test = testRootNode.addNode("test");
         Property p = test.setProperty("prop", generateValue());

Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java?rev=1199312&r1=1199311&r2=1199312&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java Tue Nov  8 16:00:45 2011
@@ -73,6 +73,8 @@ class QValueFactoryImpl extends org.apac
      */
     private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
 
+    static final int NO_INDEX = -1;
+
     private final ValueLoader loader;
     private final ValueFactory vf;
 
@@ -153,7 +155,7 @@ class QValueFactoryImpl extends org.apac
          */
         private final String uri;
         private final long length;
-        private int index = -1;
+        private final int index;
         private boolean initialized = true;
 
         private BinaryQValue(long length, String uri, int index) {
@@ -543,7 +545,7 @@ class QValueFactoryImpl extends org.apac
 
         //---------------------------------------------------------< Target >---
         public void setStream(InputStream in) throws IOException {
-            if (index == -1) {
+            if (index == NO_INDEX) {
                 init(in, true);
             } else {
                 // TODO: improve. jcr-server sends XML for multivalued properties

Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java?rev=1199312&r1=1199311&r2=1199312&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java Tue Nov  8 16:00:45 2011
@@ -410,7 +410,7 @@ public class RepositoryServiceImpl exten
                 } else {
                     // single valued binary property
                     long length = Long.parseLong(props.get(JCR_LENGTH).getValue().toString());
-                    QValue qValue = getQValueFactory(sessionInfo).create(length, uri, 0) ;
+                    QValue qValue = getQValueFactory(sessionInfo).create(length, uri, QValueFactoryImpl.NO_INDEX) ;
                     return new PropertyInfoImpl(propertyId, p, propertyType, qValue);
                 }
             } else if (props.contains(JCR_GET_STRING)) {