Author: clement
Date: Thu Sep 11 08:19:12 2008
New Revision: 694291

URL: http://svn.apache.org/viewvc?rev=694291&view=rev
Log:
Enable dynamic reconfiguration of service dependencies (for primitive types).
Provide a method to invalidate the service object cache of a dependency.
Modify the wrong header of the temporal dependency handler NOTICE file.

Modified:
    
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
    felix/trunk/ipojo/handler/temporal/NOTICE

Modified: 
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java?rev=694291&r1=694290&r2=694291&view=diff
==============================================================================
--- 
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
 (original)
+++ 
felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/dependency/Dependency.java
 Thu Sep 11 08:19:12 2008
@@ -395,12 +395,32 @@
 
     /**
      * The dependency has been reconfigured.
-     * @param departs : service no more matching.
+     * Call unbind method and then bind methods. If the dependency cache is 
not reset, 
+     * the thread continues to get older services.
+     * @param departs : no more matching services.
      * @param arrivals : new services
      * @see 
org.apache.felix.ipojo.util.DependencyModel#onDependencyReconfiguration(org.osgi.framework.ServiceReference[],
 org.osgi.framework.ServiceReference[])
      */
     public void onDependencyReconfiguration(ServiceReference[] departs, 
ServiceReference[] arrivals) {
-        throw new UnsupportedOperationException("Dependency set change is not 
yet supported");
+        for (int i = 0; departs != null && i < departs.length; i++) {
+            callUnbindMethod(departs[i]);
+        }
+        
+        for (int i = 0; arrivals != null && i < arrivals.length; i++) {
+            callBindMethod(arrivals[i]);
+        }
+    }
+    
+    /**
+     * Reset the thread local cache if used.
+     */
+    public void resetLocalCache() {
+        if (m_usage != null) {
+            Usage usage = (Usage) m_usage.get();
+            if (usage.m_stack > 0) {
+                createServiceObject(usage);
+            }
+        }
     }
 
     /**

Modified: felix/trunk/ipojo/handler/temporal/NOTICE
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/NOTICE?rev=694291&r1=694290&r2=694291&view=diff
==============================================================================
--- felix/trunk/ipojo/handler/temporal/NOTICE (original)
+++ felix/trunk/ipojo/handler/temporal/NOTICE Thu Sep 11 08:19:12 2008
@@ -1,4 +1,4 @@
-Apache Felix iPOJO White-board Pattern Handler
+Apache Felix iPOJO Temporal Dependency Handler
 Copyright 2008 The Apache Software Foundation
 
 I. Included Software


Reply via email to