Author: cziegeler
Date: Tue Sep  3 06:08:57 2013
New Revision: 1519567

URL: http://svn.apache.org/r1519567
Log:
FELIX-3884 : Default value and options 

Modified:
    felix/trunk/metatype/changelog.txt
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java
    
felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java

Modified: felix/trunk/metatype/changelog.txt
URL: 
http://svn.apache.org/viewvc/felix/trunk/metatype/changelog.txt?rev=1519567&r1=1519566&r2=1519567&view=diff
==============================================================================
--- felix/trunk/metatype/changelog.txt (original)
+++ felix/trunk/metatype/changelog.txt Tue Sep  3 06:08:57 2013
@@ -6,6 +6,7 @@ Changes from 1.0.6 to 1.0.8
     * [FELIX-3757] - If an AttributeDefinition did not specify a minimum, 
maximum or option values, it did not detect missing values;
     * [FELIX-3758] - AttributeDefinition.validate() did not take non-zero 
cardinality into consideration.
     * [FELIX-4214] - Cache in BundleResources works only for a single metatype 
properties file per bundle
+    * [FELIX-3884] - Default value and options 
 
 
 Changes from 1.0.4 to 1.0.6

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java?rev=1519567&r1=1519566&r2=1519567&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java 
(original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/AD.java Tue 
Sep  3 06:08:57 2013
@@ -145,7 +145,7 @@ public class AD extends OptionalAttribut
      *        can be <code>null</code>.
      *
      * @return <code>null</code> if no validation is performed, <tt>""</tt> if
-     *         the value is accepted as valid, or a non-empty string 
+     *         the value is accepted as valid, or a non-empty string
      *         indicating a validation problem was found.
      *
      * @see ADValidator#validate(AD, String)
@@ -223,7 +223,7 @@ public class AD extends OptionalAttribut
      */
     public void setDefaultValue(String defaultValue)
     {
-        this.defaultValue = splitList(defaultValue);
+        this.setDefaultValue( splitList(defaultValue) );
     }
 
     /**
@@ -243,11 +243,44 @@ public class AD extends OptionalAttribut
     }
 
     /**
-     * @param defaultValue the defaultValue to set
+     * @param values the defaultValue to set
      */
-    public void setDefaultValue(String[] defaultValue)
+    public void setDefaultValue(String[] values)
     {
-        this.defaultValue = (String[]) defaultValue.clone();
+        if ( values != null )
+        {
+            int count = 0;
+            for(int i=0; i<values.length; i++)
+            {
+                if ( "".equals(ADValidator.validate(this, values[i])) )
+                {
+                    count++;
+                }
+                else
+                {
+                    values[i] = null;
+                }
+            }
+            if ( count == 0 )
+            {
+                values = null;
+            }
+            else if ( count != values.length )
+            {
+                String[] filterValues = new String[count];
+                int index = 0;
+                for(int i=0; i<values.length; i++)
+                {
+                    if ( values[i] != null )
+                    {
+                        filterValues[index] = values[i];
+                        index++;
+                    }
+                }
+                values = filterValues;
+            }
+        }
+        this.defaultValue = values;
     }
 
     /**

Modified: 
felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java?rev=1519567&r1=1519566&r2=1519567&view=diff
==============================================================================
--- 
felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
 (original)
+++ 
felix/trunk/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
 Tue Sep  3 06:08:57 2013
@@ -419,6 +419,11 @@ public class MetaDataReader
 
         ad.setOptions( options );
 
+        // reset value to force an options check (FELIX-3884)
+        if ( ad.getDefaultValue() != null )
+        {
+            ad.setDefaultValue( ad.getDefaultValue() );
+        }
         return ad;
     }
 


Reply via email to