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 2005/08/23 11:38:33 UTC

svn commit: r239383 - /incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.java

Author: stefan
Date: Tue Aug 23 02:38:30 2005
New Revision: 239383

URL: http://svn.apache.org/viewcvs?rev=239383&view=rev
Log:
JCR-195: ArrayIndexOutOfBounds thrown on re-index of repository

Modified:
    incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.java

Modified: incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.java?rev=239383&r1=239382&r2=239383&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.java (original)
+++ incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.java Tue Aug 23 02:38:30 2005
@@ -291,12 +291,18 @@
             while (walker.iterateElements(VALUE_ELEMENT)) {
                 // read serialized value
                 String content = walker.getContent();
-                if (content.length() > 0) {
+                if (PropertyType.STRING == type) {
+                    // STRING value can be empty; ignore length
+                    values.add(InternalValue.valueOf(content, type));
+                } else if (content.length() > 0) {
+                    // non-empty non-STRING value
                     if (type == PropertyType.BINARY) {
                         // special handling required for binary value:
-                        // the value stores the path to the actual binary file in the blob store
+                        // the value stores the path to the actual binary file
+                        // in the blob store
                         try {
-                            values.add(InternalValue.create(new FileSystemResource(blobStore, content)));
+                            values.add(InternalValue.create(
+                                    new FileSystemResource(blobStore, content)));
                         } catch (IOException ioe) {
                             String msg = "error while reading serialized binary value";
                             log.debug(msg);
@@ -305,6 +311,10 @@
                     } else {
                         values.add(InternalValue.valueOf(content, type));
                     }
+                } else {
+                    // empty non-STRING value
+                    log.warn(state.getId() + ": ignoring empty value of type "
+                            + PropertyType.nameFromValue(type));
                 }
             }
             walker.leaveElement();