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;