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
