You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2016/01/28 01:41:55 UTC

svn commit: r1727227 - /jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/DocViewProperty.java

Author: tripod
Date: Thu Jan 28 00:41:55 2016
New Revision: 1727227

URL: http://svn.apache.org/viewvc?rev=1727227&view=rev
Log:
JCRVLT-108 Import of binaries fail because they cannot be converted to strings

Modified:
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/DocViewProperty.java

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/DocViewProperty.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/DocViewProperty.java?rev=1727227&r1=1727226&r2=1727227&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/DocViewProperty.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/DocViewProperty.java Thu Jan 28 00:41:55 2016
@@ -375,6 +375,7 @@ public class DocViewProperty {
             }
         }
         if (isMulti) {
+            // todo: handle multivalue binaries and reference binaries
             Value[] vs = prop == null ? null : prop.getValues();
             if (vs != null && vs.length == values.length) {
                 // quick check all values
@@ -397,10 +398,19 @@ public class DocViewProperty {
             return true;
         } else {
             Value v = prop == null ? null : prop.getValue();
-            if (type == PropertyType.BINARY && isRef) {
-                ReferenceBinary ref = new SimpleReferenceBinary(values[0]);
-                Binary binary = node.getSession().getValueFactory().createValue(ref).getBinary();
-                node.setProperty(name, binary);
+            if (type == PropertyType.BINARY) {
+                if (isRef) {
+                    ReferenceBinary ref = new SimpleReferenceBinary(values[0]);
+                    Binary binary = node.getSession().getValueFactory().createValue(ref).getBinary();
+                    if (v != null) {
+                        Binary bin = v.getBinary();
+                        if (bin.equals(binary)) {
+                            return false;
+                        }
+                    }
+                    node.setProperty(name, binary);
+                }
+                // the binary property is always modified (TODO: check if still correct with JCRVLT-110)
                 return true;
             }
             if (v == null || !v.getString().equals(values[0])) {
@@ -419,4 +429,5 @@ public class DocViewProperty {
         }
         return false;
     }
+
 }
\ No newline at end of file