diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
index 14d14c1..44f344c 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
@@ -28,6 +28,7 @@
 import java.util.List;
 
 import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.dependencies.BundleDependency;
 import org.apache.felix.dm.dependencies.ConfigurationDependency;
 import org.apache.felix.dm.dependencies.Dependency;
 import org.apache.felix.dm.dependencies.ServiceDependency;
@@ -173,6 +174,11 @@
                         checkServiceParsed(service);
                         service.add(createConfigurationDependency(b, dm, parser));
                         break;
+                        
+                    case BundleDependency:
+                        checkServiceParsed(service);
+                        service.add(createBundleDependency(b, dm, parser));
+                        break;
                 }
             }
 
@@ -442,4 +448,44 @@
         cd.setCallback(callback);
         return cd;
     }
+    
+    /**
+     * Creates a BundleDependency that we parsed from a component descriptor entry.
+     * @param b
+     * @param dm
+     * @param parser
+     * @return
+     */
+    private Dependency createBundleDependency(Bundle b, DependencyManager dm,
+        DescriptorParser parser)
+    {
+        BundleDependency bd = dm.createBundleDependency();
+
+        // Set add/changed/removed
+        String added = parser.getString(DescriptorParam.added, null);
+        String changed = parser.getString(DescriptorParam.changed, null);
+        String removed = parser.getString(DescriptorParam.removed, null);
+        bd.setCallbacks(added, changed, removed);
+
+        // required
+        bd.setRequired("true".equals(parser.getString(DescriptorParam.required, "true")));
+        
+        // filter
+        String filter = parser.getString(DescriptorParam.filter, null);
+        if (filter != null) 
+        {
+            bd.setFilter(filter);
+        }
+        
+        // stateMask
+        int stateMask = parser.getInt(DescriptorParam.stateMask, -1);
+        if (stateMask != -1) 
+        {
+            bd.setStateMask(stateMask);
+        }
+
+        // propagate
+        bd.setPropagate("true".equals(parser.getString(DescriptorParam.stateMask, "true")));
+        return bd;
+    }
 }
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java
index 4d5de4c..9297c1e 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorEntry.java
@@ -29,5 +29,6 @@
     AdapterService,
     ServiceDependency,
     TemporalServiceDependency,
-    ConfigurationDependency
+    ConfigurationDependency,
+    BundleDependency
 }
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java
index 4476adc..781e961 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParam.java
@@ -102,7 +102,10 @@
     adapteeService,
     
     /* AdapterService attribute for the adaptee service filter (the parsed value is a String) */
-    adapteeFilter;
+    adapteeFilter,
+    
+    /* BundleDependency attribute for the state mask bundle (the parsed value is a string) */
+    stateMask;
     
     /**
      * Indicates if a given attribute is a Service attribute.
diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java
index 649750a..ba0f86d 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/DescriptorParser.java
@@ -202,6 +202,34 @@
 
     /**
      * Once a component descriptor entry line is parsed, you can retrieve entry attributes using this method.
+     *
+     * @param param
+     * @param def
+     * @return
+     */
+    public int getInt(DescriptorParam param, int def)
+    {
+        String value = getString(param, null);
+        if (value != null)
+        {
+            try
+            {
+                return Integer.parseInt(value);
+            }
+            catch (NumberFormatException e)
+            {
+                throw new IllegalArgumentException("parameter " + param + " is not an int value: "
+                    + value);
+            }
+        }
+        else
+        {
+            return def;
+        }
+    }
+
+    /**
+     * Once a component descriptor entry line is parsed, you can retrieve entry attributes using this method.
      * @param param
      * @return
      */
