renamed package to org.apache.felix.dm.impl; invoke start/stop methods on dependencies through the DependancyActivation interface; reworked API in order to avoid exposing implementation methods from end user interfaces

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@887402 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
index 6db3ab6..4bbedef 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.dependencymanager.impl;
+package org.apache.felix.dm.impl;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -33,18 +33,19 @@
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.felix.dependencymanager.Dependency;
-import org.apache.felix.dependencymanager.DependencyManager;
-import org.apache.felix.dependencymanager.DependencyService;
-import org.apache.felix.dependencymanager.Service;
-import org.apache.felix.dependencymanager.ServiceStateListener;
-import org.apache.felix.dependencymanager.dependencies.BundleDependency;
-import org.apache.felix.dependencymanager.dependencies.ConfigurationDependency;
-import org.apache.felix.dependencymanager.dependencies.ResourceDependency;
-import org.apache.felix.dependencymanager.dependencies.ServiceDependency;
-import org.apache.felix.dependencymanager.management.ServiceComponent;
-import org.apache.felix.dependencymanager.management.ServiceComponentDependency;
-import org.apache.felix.dependencymanager.resources.Resource;
+import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.dependencies.Dependency;
+import org.apache.felix.dm.impl.dependencies.BundleDependencyImpl;
+import org.apache.felix.dm.impl.dependencies.ConfigurationDependencyImpl;
+import org.apache.felix.dm.impl.dependencies.DependencyActivation;
+import org.apache.felix.dm.impl.dependencies.DependencyService;
+import org.apache.felix.dm.impl.dependencies.ResourceDependencyImpl;
+import org.apache.felix.dm.impl.dependencies.ServiceDependencyImpl;
+import org.apache.felix.dm.management.ServiceComponent;
+import org.apache.felix.dm.management.ServiceComponentDependency;
+import org.apache.felix.dm.resources.Resource;
+import org.apache.felix.dm.service.Service;
+import org.apache.felix.dm.service.ServiceStateListener;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
@@ -235,7 +236,7 @@
             m_dependencies.add(dependency);
         }
         if (oldState.isAllRequiredAvailable() || (oldState.isWaitingForRequired() && dependency.isRequired())) {
-        	dependency.start(this);
+        	((DependencyActivation) dependency).start(this);
         }
         synchronized (m_dependencies) {
             newState = new State((List) m_dependencies.clone(), !oldState.isInactive(), m_isInstantiated, m_isBound);
@@ -260,7 +261,7 @@
             m_dependencies.remove(dependency);
         }
         if (oldState.isAllRequiredAvailable() || (oldState.isWaitingForRequired() && dependency.isRequired())) {
-        	dependency.stop(this);
+        	((DependencyActivation) dependency).stop(this);
         }
         synchronized (m_dependencies) {
             newState = new State((List) m_dependencies.clone(), !oldState.isInactive(), m_isInstantiated, m_isBound);
@@ -613,7 +614,7 @@
         while (i.hasNext()) {
             Dependency dependency = (Dependency) i.next();
             if (!dependency.isRequired()) {
-                dependency.start(this);
+                ((DependencyActivation) dependency).start(this);
             }
         }
     }
@@ -623,7 +624,7 @@
         while (i.hasNext()) {
             Dependency dependency = (Dependency) i.next();
             if (!dependency.isRequired()) {
-                dependency.stop(this);
+                ((DependencyActivation) dependency).stop(this);
             }
         }
     }
@@ -633,7 +634,7 @@
         while (i.hasNext()) {
             Dependency dependency = (Dependency) i.next();
             if (dependency.isRequired()) {
-                dependency.start(this);
+                ((DependencyActivation) dependency).start(this);
             }
         }
     }
@@ -643,7 +644,7 @@
         while (i.hasNext()) {
             Dependency dependency = (Dependency) i.next();
             if (dependency.isRequired()) {
-                dependency.stop(this);
+                ((DependencyActivation) dependency).stop(this);
             }
         }
     }
@@ -781,8 +782,8 @@
 		addTo(properties, m_serviceProperties);
 		for (int i = 0; i < m_dependencies.size(); i++) {
 			Dependency d = (Dependency) m_dependencies.get(i);
-			if (d instanceof ConfigurationDependency) {
-				ConfigurationDependency cd = (ConfigurationDependency) d;
+			if (d instanceof ConfigurationDependencyImpl) {
+				ConfigurationDependencyImpl cd = (ConfigurationDependencyImpl) d;
 				if (cd.isPropagated()) {
 					Dictionary dict = cd.getConfiguration();
 					addTo(properties, dict);
@@ -817,16 +818,16 @@
     }
 
     private void updateInstance(Dependency dependency) {
-        if (dependency instanceof ServiceDependency) {
-            ServiceDependency sd = (ServiceDependency) dependency;
+        if (dependency instanceof ServiceDependencyImpl) {
+            ServiceDependencyImpl sd = (ServiceDependencyImpl) dependency;
             // update the dependency in the service instance (it will use
             // a null object if necessary)
             if (sd.isAutoConfig()) {
                 configureImplementation(sd.getInterface(), sd.getService(), sd.getAutoConfigName());
             }
         }
-        else if (dependency instanceof ConfigurationDependency) {
-        	ConfigurationDependency cd = (ConfigurationDependency) dependency;
+        else if (dependency instanceof ConfigurationDependencyImpl) {
+        	ConfigurationDependencyImpl cd = (ConfigurationDependencyImpl) dependency;
         	if (cd.isPropagated()) {
         		// change service properties accordingly, but only if the service was already registered
         	    if (m_registration != null) {
@@ -835,14 +836,14 @@
         	    }
         	}
         }
-        else if (dependency instanceof BundleDependency) {
-            BundleDependency bd = (BundleDependency) dependency;
+        else if (dependency instanceof BundleDependencyImpl) {
+            BundleDependencyImpl bd = (BundleDependencyImpl) dependency;
             if (bd.isAutoConfig()) {
                 configureImplementation(Bundle.class, bd.getBundle()); // TODO support AutoConfigName
             }
         }
-        else if (dependency instanceof ResourceDependency) {
-            ResourceDependency rd = (ResourceDependency) dependency;
+        else if (dependency instanceof ResourceDependencyImpl) {
+            ResourceDependencyImpl rd = (ResourceDependencyImpl) dependency;
             if (rd.isAutoConfig()) {
                 configureImplementation(Resource.class, rd.getResource()); // TODO support AutoConfigName
             }
@@ -922,8 +923,8 @@
         Iterator i = state.getDependencies().iterator();
         while (i.hasNext()) {
             Dependency dependency = (Dependency) i.next();
-            if (dependency instanceof ServiceDependency) {
-                ServiceDependency sd = (ServiceDependency) dependency;
+            if (dependency instanceof ServiceDependencyImpl) {
+                ServiceDependencyImpl sd = (ServiceDependencyImpl) dependency;
                 if (sd.isAutoConfig()) {
                     if (sd.isRequired()) {
                         configureImplementation(sd.getInterface(), sd.getService(), sd.getAutoConfigName());
@@ -939,8 +940,8 @@
                     sd.invokeAdded(this, sd.lookupServiceReference(), sd.lookupService());
                 }
             }
-            else if (dependency instanceof BundleDependency) {
-                BundleDependency bd = (BundleDependency) dependency;
+            else if (dependency instanceof BundleDependencyImpl) {
+                BundleDependencyImpl bd = (BundleDependencyImpl) dependency;
                 if (bd.isAutoConfig()) {
                     if (bd.isRequired()) {
                         configureImplementation(Bundle.class, bd.getBundle()); // TODO AutoConfigName support
@@ -957,8 +958,8 @@
                     bd.invokeAdded(this, bd.getBundle());
                 }
             }
-            else if (dependency instanceof ResourceDependency) {
-                ResourceDependency bd = (ResourceDependency) dependency;
+            else if (dependency instanceof ResourceDependencyImpl) {
+                ResourceDependencyImpl bd = (ResourceDependencyImpl) dependency;
                 if (bd.isAutoConfig()) {
                     if (bd.isRequired()) {
                         configureImplementation(Resource.class, bd.getResource()); // TODO AutoConfigName support
@@ -975,8 +976,8 @@
                     bd.invokeAdded(this, bd.getResource());
                 }
             }
-            else if (dependency instanceof ConfigurationDependency) {
-                ConfigurationDependency cd = (ConfigurationDependency) dependency;
+            else if (dependency instanceof ConfigurationDependencyImpl) {
+                ConfigurationDependencyImpl cd = (ConfigurationDependencyImpl) dependency;
                 // for configuration dependencies, we invoke updated
                 try {
                     cd.invokeUpdate(this, this.getService(), cd.getConfiguration());
@@ -995,8 +996,8 @@
         Iterator i = state.getDependencies().iterator();
         while (i.hasNext()) {
             Dependency dependency = (Dependency) i.next();
-            if (dependency instanceof ServiceDependency) {
-                ServiceDependency sd = (ServiceDependency) dependency;
+            if (dependency instanceof ServiceDependencyImpl) {
+                ServiceDependencyImpl sd = (ServiceDependencyImpl) dependency;
                 // for required dependencies, we invoke any callbacks here
                 if (sd.isRequired()) {
                     sd.invokeRemoved(this, sd.lookupServiceReference(), sd.lookupService());