You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/01/13 02:00:59 UTC

svn commit: r898590 - in /tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core: DefaultFactoryExtensionPoint.java DefaultUtilityExtensionPoint.java

Author: rfeng
Date: Wed Jan 13 01:00:58 2010
New Revision: 898590

URL: http://svn.apache.org/viewvc?rev=898590&view=rev
Log:
Remove the synchronized blocks to avoid deadlock between DefaultFactoryExtensionPoint and DefaultUtilityExtensionPoint. Some of the utilities such as XMLInputFactory are loaded from DefaultFactoryExtensionPoint ATM.

Modified:
    tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
    tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java

Modified: tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java?rev=898590&r1=898589&r2=898590&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java Wed Jan 13 01:00:58 2010
@@ -25,8 +25,8 @@
 import java.lang.reflect.Modifier;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
 
@@ -39,7 +39,7 @@
  */
 public class DefaultFactoryExtensionPoint implements FactoryExtensionPoint {
     private ExtensionPointRegistry registry;
-    private Map<Class<?>, Object> factories = new HashMap<Class<?>, Object>();
+    private Map<Class<?>, Object> factories = new ConcurrentHashMap<Class<?>, Object>();
     
     /**
      * Constructs a new DefaultModelFactoryExtensionPoint.
@@ -53,7 +53,7 @@
      * 
      * @param factory The factory to add
      */
-    public synchronized void addFactory(Object factory) {
+    public void addFactory(Object factory) {
         Class<?>[] interfaces = factory.getClass().getInterfaces();
         if (interfaces.length == 0) {
             Class<?> sc = factory.getClass().getSuperclass();
@@ -72,7 +72,7 @@
      *  
      * @param factory The factory to remove
      */
-    public synchronized void removeFactory(Object factory) {
+    public void removeFactory(Object factory) {
         Class<?>[] interfaces = factory.getClass().getInterfaces();
         if (interfaces.length == 0) {
             Class<?> sc = factory.getClass().getSuperclass();
@@ -103,7 +103,7 @@
      * @param factoryInterface The lookup key (factory interface)
      * @return The factory
      */    
-    public synchronized <T> T getFactory(Class<T> factoryInterface) {
+    public <T> T getFactory(Class<T> factoryInterface) {
         Object factory = factories.get(factoryInterface);
         if (factory == null) {
 

Modified: tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java?rev=898590&r1=898589&r2=898590&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java Wed Jan 13 01:00:58 2010
@@ -55,11 +55,11 @@
      *
      * @throws IllegalArgumentException if utility is null
      */
-    public synchronized void addUtility(Object utility) {
+    public void addUtility(Object utility) {
         addUtility(null, utility);
     }
     
-    public synchronized void addUtility(Object key, Object utility) {
+    public void addUtility(Object key, Object utility) {
         if (utility == null) {
             throw new IllegalArgumentException("Cannot register null as a Service");
         }
@@ -90,7 +90,7 @@
      *
      * @throws IllegalArgumentException if utilityType is null
      */
-    public synchronized <T> T getUtility(Class<T> utilityType) {
+    public <T> T getUtility(Class<T> utilityType) {
         return getUtility(utilityType, null);
     }
 
@@ -101,7 +101,7 @@
      *
      * @throws IllegalArgumentException if utility is null
      */
-    public synchronized void removeUtility(Object utility) {
+    public void removeUtility(Object utility) {
         if (utility == null) {
             throw new IllegalArgumentException("Cannot remove null as a Service");
         }
@@ -143,7 +143,7 @@
         }
     }
 
-    public synchronized <T> T getUtility(Class<T> utilityType, Object key) {
+    public <T> T getUtility(Class<T> utilityType, Object key) {
         if (utilityType == null) {
             throw new IllegalArgumentException("Cannot lookup Service of type null");
         }
@@ -197,7 +197,7 @@
         return !utilityType.isInterface() && Modifier.isPublic(modifiers) && !Modifier.isAbstract(modifiers);
     }
 
-    public synchronized void start() {
+    public void start() {
         // NOOP
     }