Author: rotty3000
Date: Fri Sep  8 19:23:05 2017
New Revision: 1807807

URL: http://svn.apache.org/viewvc?rev=1807807&view=rev
Log:
[CDI] minimize bouncing

Signed-off-by: Raymond AugĂ© <[email protected]>

Modified:
    
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Configuration.java
    
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Publish.java
    
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Reference.java
    aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml
    aries/trunk/cdi/cdi-itests/logback.xml

Modified: 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Configuration.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Configuration.java?rev=1807807&r1=1807806&r2=1807807&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Configuration.java
 (original)
+++ 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Configuration.java
 Fri Sep  8 19:23:05 2017
@@ -77,7 +77,10 @@ public class Phase_Configuration impleme
 
                        openConfigurations();
 
-                       callbacksInit();
+                       if (callbacksResolved()) {
+                               _nextPhase = new 
Phase_Reference(_containerState, _extensions);
+                               _nextPhase.open();
+                       }
                }
                finally {
                        _lock.unlock();
@@ -90,14 +93,6 @@ public class Phase_Configuration impleme
                ).findFirst().isPresent();
        }
 
-       void callbacksInit() {
-               
_containerState.configurationCallbacks().values().stream().flatMap(
-                       valueMap -> valueMap.values().stream()
-               ).forEach(
-                       cc -> cc.init()
-               );
-       }
-
        boolean callbacksResolved() {
                return 
!_containerState.configurationCallbacks().values().stream().flatMap(
                        valueMap -> valueMap.values().stream()
@@ -126,31 +121,18 @@ public class Phase_Configuration impleme
                                _lock.unlock();
                        }
                },
-               onUpdate = cc -> {
+               onUpdateOrRemove = cc -> {
                        _lock.lock();
                        try {
                                _nextPhase.close();
-                               _nextPhase = new 
Phase_Reference(_containerState, _extensions);
-                               _nextPhase.open();
-                       }
-                       finally {
-                               _lock.unlock();
-                       }
-               },
-               onRemove = cc -> {
-                       _lock.lock();
-                       try {
-                               if (_nextPhase != null) {
-                                       _nextPhase.close();
-                               }
-                               if (!callbacksResolved()) {
-                                       _nextPhase = null;
-                                       
_containerState.fire(CdiEvent.Type.WAITING_FOR_CONFIGURATIONS);
-                               }
-                               else {
+                               _nextPhase = null;
+                               if (callbacksResolved()) {
                                        _nextPhase = new 
Phase_Reference(_containerState, _extensions);
                                        _nextPhase.open();
                                }
+                               else {
+                                       
_containerState.fire(CdiEvent.Type.WAITING_FOR_CONFIGURATIONS);
+                               }
                        }
                        finally {
                                _lock.unlock();
@@ -158,7 +140,7 @@ public class Phase_Configuration impleme
                };
 
                _componentModels.stream().forEach(
-                       componentModel -> openConfigurations(componentModel, 
onAdd, onUpdate, onRemove)
+                       componentModel -> openConfigurations(componentModel, 
onAdd, onUpdateOrRemove, onUpdateOrRemove)
                );
        }
 

Modified: 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Publish.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Publish.java?rev=1807807&r1=1807806&r2=1807807&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Publish.java
 (original)
+++ 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Publish.java
 Fri Sep  8 19:23:05 2017
@@ -42,7 +42,9 @@ public class Phase_Publish implements Ph
                _containerState.serviceRegistrator().close();
                _containerState.beanManagerRegistrator().close();
                _containerState.serviceComponents().clear();
-               _cb.shutdown();
+               if (_cb != null) {
+                       _cb.shutdown();
+               }
        }
 
        @Override

Modified: 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Reference.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Reference.java?rev=1807807&r1=1807806&r2=1807807&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Reference.java
 (original)
+++ 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/phase/Phase_Reference.java
 Fri Sep  8 19:23:05 2017
@@ -79,11 +79,7 @@ public class Phase_Reference implements
 
                        _containerState.tracker().open();
 
-                       if (referencesResolved()) {
-                               if (_log.isDebugEnabled()) {
-                                       _log.debug("CDIe - There are no service 
dependencies. Moving on!");
-                               }
-
+                       if (callbacksResolved()) {
                                _nextPhase = new Phase_Publish(_containerState, 
_extensions);
 
                                _nextPhase.open();
@@ -96,7 +92,7 @@ public class Phase_Reference implements
 
        void openReferences() {
                Consumer<ReferenceCallback> onAdd = r -> {
-                       if ((_nextPhase == null) && referencesResolved()) {
+                       if ((_nextPhase == null) && callbacksResolved()) {
                                _nextPhase = new Phase_Publish(_containerState, 
_extensions);
                                _nextPhase.open();
                        }
@@ -105,7 +101,7 @@ public class Phase_Reference implements
                        // TODO we may need to handle static greedy references 
by hard reset of _nextPhase
                },
                onRemove = r -> {
-                       if ((_nextPhase != null) && !referencesResolved()) {
+                       if ((_nextPhase != null) && !callbacksResolved()) {
                                _nextPhase.close();
                                _nextPhase = null;
                                
_containerState.fire(CdiEvent.Type.WAITING_FOR_SERVICES);
@@ -174,7 +170,7 @@ public class Phase_Reference implements
                ).findFirst().isPresent();
        }
 
-       boolean referencesResolved() {
+       boolean callbacksResolved() {
                return 
!_containerState.referenceCallbacks().values().stream().flatMap(
                        valueMap -> valueMap.values().stream()
                ).filter(

Modified: aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml?rev=1807807&r1=1807806&r2=1807807&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml (original)
+++ aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml Fri Sep  8 
19:23:05 2017
@@ -9,9 +9,9 @@
                </encoder>
        </appender>
 
-       <logger name="org.apache.aries.cdi.container" level="DEBUG"/>
+       <logger name="org.apache.aries.cdi.container" level="ERROR"/>
 
-       <root level="info">
+       <root level="ERROR">
                <appender-ref ref="STDOUT" />
        </root>
 </configuration>
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/logback.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/logback.xml?rev=1807807&r1=1807806&r2=1807807&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/logback.xml (original)
+++ aries/trunk/cdi/cdi-itests/logback.xml Fri Sep  8 19:23:05 2017
@@ -9,9 +9,9 @@
                </encoder>
        </appender>
 
-       <logger name="org.apache.aries.cdi.container" level="DEBUG"/>
+       <logger name="org.apache.aries.cdi.container" level="ERROR"/>
 
-       <root level="info">
+       <root level="ERROR">
                <appender-ref ref="STDOUT" />
        </root>
 </configuration>
\ No newline at end of file


Reply via email to