Author: clement
Date: Tue Jul  8 05:01:01 2008
New Revision: 674783

URL: http://svn.apache.org/viewvc?rev=674783&view=rev
Log:
Fix the issue Felix-626.
Create an empty Hashtable when parsing an empty aggregate property element. 
This allows specifying empty dictionaries inside instance configurations. The 
instance configuration, then, receives an empty dictionary for this property.

Modified:
    
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/parser/ManifestMetadataParser.java

Modified: 
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/parser/ManifestMetadataParser.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/parser/ManifestMetadataParser.java?rev=674783&r1=674782&r2=674783&view=diff
==============================================================================
--- 
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/parser/ManifestMetadataParser.java
 (original)
+++ 
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/parser/ManifestMetadataParser.java
 Tue Jul  8 05:01:01 2008
@@ -104,7 +104,7 @@
      * Parse a property.
      * @param prop : the current element to parse
      * @param dict : the dictionary to populate
-     * @throws ParseException : occurs if the proeprty cannot be parsed 
correctly
+     * @throws ParseException : occurs if the property cannot be parsed 
correctly
      */
     private void parseProperty(Element prop, Dictionary dict) throws 
ParseException {
         // Check that the property has a name
@@ -118,13 +118,15 @@
             // Recursive case
             // Check if there is 'property' element
             Element[] subProps = prop.getElements("property");
-            if (subProps.length == 0) {
-                throw new ParseException("A complex property must have at 
least one 'property' sub-element");
-            }
-            Dictionary dict2 = new Properties();
-            for (int i = 0; i < subProps.length; i++) {
-                parseProperty(subProps[i], dict2);
-                dict.put(name, dict2);
+            if (subProps != null) {
+                Dictionary dict2 = new Properties();
+                for (int i = 0; i < subProps.length; i++) {
+                    parseProperty(subProps[i], dict2);
+                    dict.put(name, dict2);
+                }
+            } else {
+                // If the no sub-properties, inject an empty dictionary.
+                dict.put(name, new Properties());
             }
         } else {
             dict.put(prop.getAttribute("name"), prop.getAttribute("value"));


Reply via email to