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
}