You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2010/05/14 16:37:30 UTC

svn commit: r944294 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml: PropInfo.java SysViewImportHandler.java

Author: stefan
Date: Fri May 14 14:37:29 2010
New Revision: 944294

URL: http://svn.apache.org/viewvc?rev=944294&view=rev
Log:
JCR-2627 System-view export/import of multi-value property does not respect JCR 2.0

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SysViewImportHandler.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java?rev=944294&r1=944293&r2=944294&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java Fri May 14 14:37:29 2010
@@ -58,7 +58,7 @@ public class PropInfo {
     /**
      * Hint indicating whether the property is multi- or single-value
      */
-    public enum MultipleStatus { UNKNOWN, SINGLE, MULTIPLE };
+    public enum MultipleStatus { UNKNOWN, SINGLE, MULTIPLE }
     private MultipleStatus multipleStatus;
 
     /**
@@ -121,8 +121,14 @@ public class PropInfo {
         } else if (multipleStatus == MultipleStatus.SINGLE) {
             return ent.getApplicablePropertyDef(name, type, false);
         } else {
-            // could be single- or multi-valued
-            return ent.getApplicablePropertyDef(name, type);
+            // multipleStatus == MultipleStatus.UNKNOWN
+            if (values.length == 1) {
+                // one value => could be single- or multi-valued
+                return ent.getApplicablePropertyDef(name, type);
+            } else {
+                // zero or more than one values => must be multi-valued
+                return ent.getApplicablePropertyDef(name, type, true);
+            }
         }
     }
 
@@ -134,10 +140,6 @@ public class PropInfo {
         return type;
     }
 
-    public MultipleStatus getMultipleStatus() {
-        return multipleStatus;
-    }
-
     public TextValue[] getTextValues() {
         return values;        
     }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SysViewImportHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SysViewImportHandler.java?rev=944294&r1=944293&r2=944294&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SysViewImportHandler.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SysViewImportHandler.java Fri May 14 14:37:29 2010
@@ -294,6 +294,10 @@ class SysViewImportHandler extends Targe
                     throw new SAXException("error while retrieving value", ioe);
                 }
             } else {
+                if (currentPropMultipleStatus == MultipleStatus.UNKNOWN
+                        && currentPropValues.size() != 1) {
+                    currentPropMultipleStatus = MultipleStatus.MULTIPLE;
+                }
                 PropInfo prop = new PropInfo(
                         currentPropName,
                         currentPropType,