You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2017/03/01 10:07:20 UTC

svn commit: r1784900 - /aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CdiContainerState.java

Author: csierra
Date: Wed Mar  1 10:07:20 2017
New Revision: 1784900

URL: http://svn.apache.org/viewvc?rev=1784900&view=rev
Log:
[ARIES-CDI] Simplify with synchronized

Modified:
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CdiContainerState.java

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CdiContainerState.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CdiContainerState.java?rev=1784900&r1=1784899&r2=1784900&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CdiContainerState.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CdiContainerState.java Wed Mar  1 10:07:20 2017
@@ -59,10 +59,8 @@ public class CdiContainerState {
 			CdiContainer.class, _cdiContainerService, properties);
 	}
 
-	public void close() {
+	public synchronized void close() {
 		try {
-			_lock.lock();
-
 			_cdiContainerRegistration.unregister();
 		}
 		catch (Exception e) {
@@ -70,9 +68,6 @@ public class CdiContainerState {
 				_log.trace("Service already unregistered {}", _cdiContainerRegistration);
 			}
 		}
-		finally {
-			_lock.unlock();
-		}
 	}
 
 	public BeanManager getBeanManager() {
@@ -108,46 +103,39 @@ public class CdiContainerState {
 	}
 
 	public CdiEvent.Type getLastState() {
-		return _lastState.get();
+		return _lastState;
 	}
 
-	public void fire(CdiEvent event) {
-		try {
-			_lock.lock();
+	public synchronized void fire(CdiEvent event) {
+		Type type = event.getType();
 
-			Type type = event.getType();
+		if ((_lastState == CdiEvent.Type.DESTROYING) &&
+			((type == CdiEvent.Type.WAITING_FOR_EXTENSIONS) ||
+			(type == CdiEvent.Type.WAITING_FOR_SERVICES))) {
 
-			if ((_lastState.get() == CdiEvent.Type.DESTROYING) &&
-				((type == CdiEvent.Type.WAITING_FOR_EXTENSIONS) ||
-				(type == CdiEvent.Type.WAITING_FOR_SERVICES))) {
+			return;
+		}
 
-				return;
-			}
+		if (_log.isDebugEnabled()) {
+			_log.debug("CDIe - Event {}", event, event.getCause());
+		}
 
-			if (_log.isDebugEnabled()) {
-				_log.debug("CDIe - Event {}", event, event.getCause());
-			}
+		updateState(event);
 
-			updateState(event);
+		if (_beanManager != null) {
+			_beanManager.fireEvent(event);
+		}
 
-			if (_beanManager != null) {
-				_beanManager.fireEvent(event);
+		for (CdiListener listener : _listeners.values()) {
+			try {
+				listener.cdiEvent(event);
 			}
-
-			for (CdiListener listener : _listeners.values()) {
-				try {
-					listener.cdiEvent(event);
-				}
-				catch (Throwable t) {
-					if (_log.isErrorEnabled()) {
-						_log.error("CDIe - CdiListener failed", t);
-					}
+			catch (Throwable t) {
+				if (_log.isErrorEnabled()) {
+					_log.error("CDIe - CdiListener failed", t);
 				}
 			}
 		}
-		finally {
-			_lock.unlock();
-		}
 	}
 
 	public void fire(CdiEvent.Type state) {
@@ -183,33 +171,26 @@ public class CdiContainerState {
 		_references = references;
 	}
 
-	private void updateState(CdiEvent event) {
-		try {
-			_lock.lock();
-
-			Type type = event.getType();
+	private synchronized void updateState(CdiEvent event) {
+		Type type = event.getType();
 
-			ServiceReference<CdiContainer> reference = _cdiContainerRegistration.getReference();
+		ServiceReference<CdiContainer> reference = _cdiContainerRegistration.getReference();
 
-			if (type == reference.getProperty(CdiExtenderConstants.CDI_EXTENDER_CONTAINER_STATE)) {
-				return;
-			}
+		if (type == reference.getProperty(CdiExtenderConstants.CDI_EXTENDER_CONTAINER_STATE)) {
+			return;
+		}
 
-			_lastState.set(type);
+		_lastState = type;
 
-			Hashtable<String, Object> properties = new Hashtable<>();
+		Hashtable<String, Object> properties = new Hashtable<>();
 
-			for (String key : reference.getPropertyKeys()) {
-				properties.put(key, reference.getProperty(key));
-			}
+		for (String key : reference.getPropertyKeys()) {
+			properties.put(key, reference.getProperty(key));
+		}
 
-			properties.put(CdiExtenderConstants.CDI_EXTENDER_CONTAINER_STATE, type);
+		properties.put(CdiExtenderConstants.CDI_EXTENDER_CONTAINER_STATE, type);
 
-			_cdiContainerRegistration.setProperties(properties);
-		}
-		finally {
-			_lock.unlock();
-		}
+		_cdiContainerRegistration.setProperties(properties);
 	}
 
 	private static final Logger _log = LoggerFactory.getLogger(CdiContainerState.class);
@@ -222,9 +203,8 @@ public class CdiContainerState {
 	private List<ConfigurationDependency> _configurations;
 	private final Bundle _extenderBundle;
 	private List<ExtensionDependency> _extensionDependencies;
-	private AtomicReference<CdiEvent.Type> _lastState = new AtomicReference<CdiEvent.Type>(CdiEvent.Type.CREATING);
+	private CdiEvent.Type _lastState = CdiEvent.Type.CREATING;
 	private final Map<ServiceReference<CdiListener>, CdiListener> _listeners;
-	private final ReentrantLock _lock = new ReentrantLock();
 	private List<ReferenceDependency> _references;
 
 }
\ No newline at end of file