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