You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2012/08/01 21:23:36 UTC

svn commit: r1368206 - in /aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint: ./ container/ services/

Author: gnodet
Date: Wed Aug  1 19:23:35 2012
New Revision: 1368206

URL: http://svn.apache.org/viewvc?rev=1368206&view=rev
Log:
[ARIES-896] Deadlock with blueprint services
Conflicts:

	blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ExtendedBlueprintContainer.java
	blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java

Modified:
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ExtendedBlueprintContainer.java
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ExtendedBlueprintContainer.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ExtendedBlueprintContainer.java?rev=1368206&r1=1368205&r2=1368206&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ExtendedBlueprintContainer.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ExtendedBlueprintContainer.java Wed Aug  1 19:23:35 2012
@@ -16,7 +16,6 @@
  */
 package org.apache.aries.blueprint;
 
-
 /**
  * @deprecated - use org.apache.aries.blueprint.services.ExtendedBlueprintContainer
  *               Will be removed in a future version of Aries Blueprint
@@ -24,5 +23,4 @@ package org.apache.aries.blueprint;
 @Deprecated
 public interface ExtendedBlueprintContainer extends org.apache.aries.blueprint.services.ExtendedBlueprintContainer {
 
-            
 }

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java?rev=1368206&r1=1368205&r2=1368206&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/AbstractServiceReferenceRecipe.java Wed Aug  1 19:23:35 2012
@@ -300,20 +300,24 @@ public abstract class AbstractServiceRef
         }
     }
 
-    public void serviceChanged(ServiceEvent event) {
-        int eventType = event.getType();
-        ServiceReference ref = event.getServiceReference();
-        switch (eventType) {
-            case ServiceEvent.REGISTERED:
-                serviceAdded(ref);
-                break;
-            case ServiceEvent.MODIFIED:
-                serviceModified(ref);
-                break;
-            case ServiceEvent.UNREGISTERING:
-                serviceRemoved(ref);
-                break;
-        }
+    public void serviceChanged(final ServiceEvent event) {
+        blueprintContainer.getExecutors().submit(new Runnable() {
+            public void run() {
+                int eventType = event.getType();
+                ServiceReference ref = event.getServiceReference();
+                switch (eventType) {
+                    case ServiceEvent.REGISTERED:
+                        serviceAdded(ref);
+                        break;
+                    case ServiceEvent.MODIFIED:
+                        serviceModified(ref);
+                        break;
+                    case ServiceEvent.UNREGISTERING:
+                        serviceRemoved(ref);
+                        break;
+                }
+            }
+        });
     }
 
     private void serviceAdded(ServiceReference ref) {

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1368206&r1=1368205&r2=1368206&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java Wed Aug  1 19:23:35 2012
@@ -38,6 +38,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -47,7 +48,6 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.aries.blueprint.BlueprintConstants;
 import org.apache.aries.blueprint.ComponentDefinitionRegistryProcessor;
 import org.apache.aries.blueprint.ExtendedBeanMetadata;
-import org.apache.aries.blueprint.services.ExtendedBlueprintContainer;
 import org.apache.aries.blueprint.NamespaceHandler;
 import org.apache.aries.blueprint.Processor;
 import org.apache.aries.blueprint.di.ExecutionContext;
@@ -55,14 +55,15 @@ import org.apache.aries.blueprint.di.Rec
 import org.apache.aries.blueprint.di.Repository;
 import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
 import org.apache.aries.blueprint.parser.ComponentDefinitionRegistryImpl;
-import org.apache.aries.blueprint.parser.Parser;
 import org.apache.aries.blueprint.parser.NamespaceHandlerSet;
+import org.apache.aries.blueprint.parser.Parser;
 import org.apache.aries.blueprint.proxy.ProxyUtils;
 import org.apache.aries.blueprint.reflect.MetadataUtil;
 import org.apache.aries.blueprint.reflect.PassThroughMetadataImpl;
+import org.apache.aries.blueprint.services.ExtendedBlueprintContainer;
 import org.apache.aries.blueprint.utils.HeaderParser;
-import org.apache.aries.blueprint.utils.JavaUtils;
 import org.apache.aries.blueprint.utils.HeaderParser.PathElement;
+import org.apache.aries.blueprint.utils.JavaUtils;
 import org.apache.aries.proxy.ProxyManager;
 import org.apache.aries.util.AriesFrameworkUtil;
 import org.osgi.framework.Bundle;
@@ -171,6 +172,10 @@ public class BlueprintContainerImpl 
         this.proxyManager = proxyManager;
     }
 
+    public ExecutorService getExecutors() {
+        return executors;
+    }
+
     public Bundle getExtenderBundle() {
         return extenderBundle;
     }

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java?rev=1368206&r1=1368205&r2=1368206&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java Wed Aug  1 19:23:35 2012
@@ -19,6 +19,7 @@ package org.apache.aries.blueprint.servi
 import java.security.AccessControlContext;
 import java.util.Dictionary;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.aries.blueprint.ComponentDefinitionRegistry;
 import org.apache.aries.blueprint.Processor;
@@ -80,5 +81,7 @@ public interface ExtendedBlueprintContai
      */
     void injectBeanInstance(BeanMetadata bmd, Object o) 
         throws IllegalArgumentException, ComponentDefinitionException;
-        
+
+    ExecutorService getExecutors();
+
 }