diff --git a/metatype/changelog.txt b/metatype/changelog.txt
index 2537eb6..6388583 100644
--- a/metatype/changelog.txt
+++ b/metatype/changelog.txt
@@ -6,6 +6,7 @@
     * [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
diff --git a/metatype/src/main/java/org/apache/felix/metatype/AD.java b/metatype/src/main/java/org/apache/felix/metatype/AD.java
index f2456f2..6d08ece 100644
--- a/metatype/src/main/java/org/apache/felix/metatype/AD.java
+++ b/metatype/src/main/java/org/apache/felix/metatype/AD.java
@@ -145,7 +145,7 @@
      *        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 void setDefaultValue(String defaultValue)
     {
-        this.defaultValue = splitList(defaultValue);
+        this.setDefaultValue( splitList(defaultValue) );
     }
 
     /**
@@ -243,11 +243,44 @@
     }
 
     /**
-     * @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;
     }
 
     /**
diff --git a/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java b/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
index 33c3271..5f9c7a9 100644
--- a/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
+++ b/metatype/src/main/java/org/apache/felix/metatype/MetaDataReader.java
@@ -419,6 +419,11 @@
 
         ad.setOptions( options );
 
+        // reset value to force an options check (FELIX-3884)
+        if ( ad.getDefaultValue() != null )
+        {
+            ad.setDefaultValue( ad.getDefaultValue() );
+        }
         return ad;
     }
 
