You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2015/02/09 00:16:27 UTC

svn commit: r1658274 - in /felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm: context/ impl/

Author: pderop
Date: Sun Feb  8 23:16:26 2015
New Revision: 1658274

URL: http://svn.apache.org/r1658274
Log:
Log an Error if one given dependency is added to more than one component.

Modified:
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java Sun Feb  8 23:16:26 2015
@@ -136,7 +136,6 @@ public abstract class AbstractDependency
      * @param prototype all the fields of the prototype will be copied to this dependency.
      */
     public AbstractDependency(AbstractDependency<T> prototype) {
-        m_component = prototype.m_component;
         m_instanceBound = prototype.m_instanceBound;
         m_required = prototype.m_required;
         m_add = prototype.m_add;
@@ -150,6 +149,11 @@ public abstract class AbstractDependency
         m_propagateCallbackInstance = prototype.m_propagateCallbackInstance;
         m_propagateCallbackMethod = prototype.m_propagateCallbackMethod;
     }
+    
+    @Override
+    public String toString() {
+        return new StringBuilder(getType()).append(" dependency [").append(getName()).append("]").toString();
+    }
 
     // ----------------------- Dependency interface -----------------------------
 
@@ -530,7 +534,7 @@ public abstract class AbstractDependency
      * Returns the component implementation context
      * @return the component implementation context
      */
-    protected ComponentContext getComponentContext() {
+    public ComponentContext getComponentContext() {
         return m_component;
     }
 

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java Sun Feb  8 23:16:26 2015
@@ -38,6 +38,11 @@ public interface DependencyContext exten
     public void setComponentContext(ComponentContext component);
     
     /**
+     * Returns the Component implementation context associated to this Dependency context.
+     */
+    public ComponentContext getComponentContext();
+    
+    /**
      * The Component implementation asks this dependency to invoke a component dependency callback.
      * 
      * @param type the type of the callback to invoke (add/change/remove/swap ...)

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java Sun Feb  8 23:16:26 2015
@@ -83,7 +83,7 @@ public class BundleDependencyImpl extend
         m_tracker = null;
         super.stop();
     }
-
+    
     @Override
     public String getName() {
         StringBuilder sb = new StringBuilder();

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Sun Feb  8 23:16:26 2015
@@ -172,6 +172,11 @@ public class ComponentImpl implements Co
 				List<DependencyContext> instanceBoundDeps = new ArrayList<>();
 				for (Dependency d : dependencies) {
 					DependencyContext dc = (DependencyContext) d;
+					if (dc.getComponentContext() != null) {
+                        m_logger.err("%s can't be added to %s (dependency already added to another component).", dc,
+                            ComponentImpl.this);
+                        continue;
+					}
 					m_dependencyEvents.put(dc,  new ConcurrentSkipListSet<Event>());
 					m_dependencies.add(dc);
 					dc.setComponentContext(ComponentImpl.this);

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java Sun Feb  8 23:16:26 2015
@@ -127,10 +127,6 @@ public class ConfigurationDependencyImpl
 		return this;
 	}
 		
-    public String toString() {
-    	return "ConfigurationDependency[" + m_pid + "]";
-    }
-    
     @Override
     public String getSimpleName() {
         return m_pid;

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java Sun Feb  8 23:16:26 2015
@@ -65,6 +65,11 @@ public class FilterComponent implements
     public FilterComponent(Component service) {
         m_component = (ComponentImpl) service;
     }
+    
+    @Override
+    public String toString() {
+        return m_component.toString();
+    }
 
     public Component add(Dependency ... dependencies) {
         m_component.add(dependencies);

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java Sun Feb  8 23:16:26 2015
@@ -234,7 +234,7 @@ public class ResourceDependencyImpl exte
             throw new IllegalStateException("cannot find resource");
         }
     }
-
+    
     @Override
     public String getName() {
         StringBuilder sb = new StringBuilder();

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java?rev=1658274&r1=1658273&r2=1658274&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java Sun Feb  8 23:16:26 2015
@@ -32,7 +32,6 @@ import org.apache.felix.dm.Component;
 import org.apache.felix.dm.ComponentDeclaration;
 import org.apache.felix.dm.ServiceDependency;
 import org.apache.felix.dm.context.AbstractDependency;
-import org.apache.felix.dm.context.ComponentContext;
 import org.apache.felix.dm.context.DependencyContext;
 import org.apache.felix.dm.context.Event;
 import org.apache.felix.dm.context.EventType;
@@ -307,11 +306,6 @@ public class ServiceDependencyImpl exten
     }
     
     @Override
-    public String toString() {
-        return "ServiceDependency[" + m_trackedServiceName + " " + m_trackedServiceFilterUnmodified + "]";
-    }
-
-    @Override
     public String getName() {
         StringBuilder sb = new StringBuilder();
         if (m_trackedServiceName != null) {
@@ -554,8 +548,4 @@ public class ServiceDependencyImpl exten
 			removedService(reference, service);
 		}
 	}	
-	
-    public ComponentContext getComponentContext() {
-        return m_component;
-    }
 }