Author: cziegeler
Date: Wed Jan 26 09:09:05 2011
New Revision: 1063645

URL: http://svn.apache.org/viewvc?rev=1063645&view=rev
Log:
SLING-1956 : ConfigNodeConverter throws NPE on config with empty multi-valued 
property

Modified:
    
sling/trunk/installer/providers/jcr/src/main/java/org/apache/sling/installer/provider/jcr/impl/ConfigNodeConverter.java

Modified: 
sling/trunk/installer/providers/jcr/src/main/java/org/apache/sling/installer/provider/jcr/impl/ConfigNodeConverter.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/providers/jcr/src/main/java/org/apache/sling/installer/provider/jcr/impl/ConfigNodeConverter.java?rev=1063645&r1=1063644&r2=1063645&view=diff
==============================================================================
--- 
sling/trunk/installer/providers/jcr/src/main/java/org/apache/sling/installer/provider/jcr/impl/ConfigNodeConverter.java
 (original)
+++ 
sling/trunk/installer/providers/jcr/src/main/java/org/apache/sling/installer/provider/jcr/impl/ConfigNodeConverter.java
 Wed Jan 26 09:09:05 2011
@@ -89,41 +89,47 @@ class ConfigNodeConverter implements Jcr
             if(name.contains(":")) {
                 continue;
             }
-            if(p.getDefinition().isMultiple()) {
+            if (p.getDefinition().isMultiple()) {
                 Object [] data = null;
                 final Value [] values = p.getValues();
                 int i = 0;
-                for(Value v : values) {
+                for (Value v : values) {
                     Object o = convertValue(v);
-                    if(i == 0) {
+                    if (i == 0) {
                         data = (Object[])Array.newInstance(o.getClass(), 
values.length);
                     }
                     data[i++] = o;
                 }
+                // create empty array in case no value is specified
+                if ( data == null ) {
+                    data = new String[0];
+                }
                 d.put(name, data);
 
             } else {
                 final Object o = convertValue(p.getValue());
-                if(o != null) {
+                if (o != null) {
                     d.put(name, o);
                 }
             }
         }
     }
 
-    /** Convert v according to its type */
+    /**
+     * Convert v according to its type.
+     */
     protected Object convertValue(Value v) throws RepositoryException {
         switch(v.getType()) {
-        case PropertyType.STRING:
-            return v.getString();
-        case PropertyType.DATE:
-            return v.getDate();
-        case PropertyType.DOUBLE:
-            return v.getDouble();
-        case PropertyType.LONG:
-            return v.getLong();
-        case PropertyType.BOOLEAN:
-            return v.getBoolean();
+            case PropertyType.STRING:
+                return v.getString();
+            case PropertyType.DATE:
+                return v.getDate();
+            case PropertyType.DOUBLE:
+                return v.getDouble();
+            case PropertyType.LONG:
+                return v.getLong();
+            case PropertyType.BOOLEAN:
+                return v.getBoolean();
         }
         log.debug("Value of type {} ignored", v.getType());
         return null;


Reply via email to