You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ro...@apache.org on 2018/09/20 19:34:36 UTC
svn commit: r1841503 [1/2] - in /aries/trunk/cdi:
cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/
cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/
cdi-extender/src/test/java/org/apache/aries/cdi/co...
Author: rotty3000
Date: Thu Sep 20 19:34:35 2018
New Revision: 1841503
URL: http://svn.apache.org/viewvc?rev=1841503&view=rev
Log:
[cdi] more testing and fixes
Added:
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/AbstractTestBase.java
aries/trunk/cdi/cdi-itests/bnd/tb152_2.bnd
aries/trunk/cdi/cdi-itests/bnd/tb152_2b.bnd
aries/trunk/cdi/cdi-itests/bnd/tb152_3.bnd
aries/trunk/cdi/cdi-itests/bnd/tb152_3_1.bnd
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/One.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/Two.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/One.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/Two.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/One.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/Two.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/One.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Three.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Two.java
Removed:
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/EventsTest.java
Modified:
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CDIBundle.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ConfigurationListener.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/Phase.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/RuntimeExtension.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerActivator.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerComponent.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedComponentInstanceDTO.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryComponent.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceModel.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleComponent.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_greedy_Test2.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_reluctant_Test.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_greedy_Test.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_reluctant_Test.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/MapsTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_PropertiesTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceReferenceTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_TupleTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java
aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml
aries/trunk/cdi/cdi-itests/bnd.bnd
aries/trunk/cdi/cdi-itests/cdi-executable.bndrun
aries/trunk/cdi/cdi-itests/itest.bndrun
aries/trunk/cdi/cdi-itests/pom.xml
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CDIBundle.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CDIBundle.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CDIBundle.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/CDIBundle.java Thu Sep 20 19:34:35 2018
@@ -16,6 +16,7 @@ package org.apache.aries.cdi.container.i
import org.apache.aries.cdi.container.internal.CCR;
import org.apache.aries.cdi.container.internal.container.Op.Mode;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.apache.felix.utils.extender.Extension;
import org.osgi.service.log.Logger;
@@ -29,23 +30,25 @@ public class CDIBundle extends Phase imp
@Override
public boolean close() {
- containerState.closing();
+ try (Syncro open = syncro.open()) {
+ containerState.closing();
- return next.map(
- next -> {
- submit(next.closeOp(), next::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in cdibundle CLOSE on {}", bundle(), f));
+ return next.map(
+ next -> {
+ submit(next.closeOp(), next::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in cdibundle CLOSE on {}", bundle(), f));
+
+ error(f);
+ }
+ );
- error(f);
- }
- );
-
- _ccr.remove(bundle());
+ _ccr.remove(bundle());
- return true;
- }
- ).orElse(true);
+ return true;
+ }
+ ).orElse(true);
+ }
}
@Override
@@ -60,21 +63,23 @@ public class CDIBundle extends Phase imp
@Override
public boolean open() {
- return next.map(
- next -> {
- _ccr.add(containerState.bundle(), containerState);
-
- submit(next.openOp(), next::open).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in cdibundle OPEN on {}", bundle(), f));
-
- error(f);
- }
- );
-
- return true;
- }
- ).orElse(true);
+ try (Syncro open = syncro.open()) {
+ return next.map(
+ next -> {
+ _ccr.add(containerState.bundle(), containerState);
+
+ submit(next.openOp(), next::open).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in cdibundle OPEN on {}", bundle(), f));
+
+ error(f);
+ }
+ );
+
+ return true;
+ }
+ ).orElse(true);
+ }
}
@Override
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ConfigurationListener.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ConfigurationListener.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ConfigurationListener.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ConfigurationListener.java Thu Sep 20 19:34:35 2018
@@ -27,6 +27,7 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.model.ExtendedConfigurationDTO;
import org.apache.aries.cdi.container.internal.util.Maps;
import org.apache.aries.cdi.container.internal.util.Predicates;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.apache.aries.cdi.container.internal.util.Throw;
import org.jboss.weld.exceptions.IllegalArgumentException;
import org.osgi.framework.ServiceRegistration;
@@ -71,24 +72,26 @@ public class ConfigurationListener exten
@Override
public boolean close() {
- if (_listenerService != null) {
- _listenerService.unregister();
- _listenerService = null;
- }
+ try (Syncro open = syncro.open()) {
+ if (_listenerService != null) {
+ _listenerService.unregister();
+ _listenerService = null;
+ }
- return next.map(
- next -> {
- submit(next.closeOp(), next::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Failure in configuration listener close on {}", next, f));
+ return next.map(
+ next -> {
+ submit(next.closeOp(), next::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Failure in configuration listener close on {}", next, f));
- error(f);
- }
- );
+ error(f);
+ }
+ );
- return true;
- }
- ).orElse(true);
+ return true;
+ }
+ ).orElse(true);
+ }
}
@Override
@@ -127,62 +130,67 @@ public class ConfigurationListener exten
@Override
public boolean open() {
- Dictionary<String, Object> properties = new Hashtable<>();
- properties.put("name", toString());
- _listenerService = containerState.bundleContext().registerService(
- org.osgi.service.cm.ConfigurationListener.class, this, properties);
-
- return next.map(next -> (Component)next).map(
- component -> {
- submit(component.openOp(), component::open).then(
- s -> {
- component.configurationTemplates().stream().filter(
- ct -> Objects.nonNull(ct.pid)
- ).forEach(
- template -> {
- if (template.maximumCardinality == MaximumCardinality.ONE) {
- containerState.findConfig(template.pid).ifPresent(
- c -> processEvent(
- component,
- template,
- new ConfigurationEvent(
- containerState.caTracker().getServiceReference(),
- ConfigurationEvent.CM_UPDATED,
- null,
- c.getPid())
- )
- );
- }
- else {
- containerState.findConfigs(template.pid, true).ifPresent(
- arr -> Arrays.stream(arr).forEach(
+ try (Syncro open = syncro.open()) {
+ if (containerState.bundleContext() == null) {
+ // this bundle was already removed
+ return false;
+ }
+
+ Dictionary<String, Object> properties = new Hashtable<>();
+ properties.put("name", toString());
+ _listenerService = containerState.bundleContext().registerService(
+ org.osgi.service.cm.ConfigurationListener.class, this, properties);
+
+ return next.map(next -> (Component)next).map(
+ component -> {
+ submit(component.openOp(), component::open).then(
+ s -> {
+ component.configurationTemplates().stream().filter(
+ ct -> Objects.nonNull(ct.pid)
+ ).forEach(
+ template -> {
+ if (template.maximumCardinality == MaximumCardinality.ONE) {
+ containerState.findConfig(template.pid).ifPresent(
c -> processEvent(
component,
template,
new ConfigurationEvent(
containerState.caTracker().getServiceReference(),
ConfigurationEvent.CM_UPDATED,
- c.getFactoryPid(),
- c.getPid())
+ null,
+ c.getPid()))
+ );
+ }
+ else {
+ containerState.findConfigs(template.pid, true).ifPresent(
+ arr -> Arrays.stream(arr).forEach(
+ c -> processEvent(
+ component,
+ template,
+ new ConfigurationEvent(
+ containerState.caTracker().getServiceReference(),
+ ConfigurationEvent.CM_UPDATED,
+ c.getFactoryPid(),
+ c.getPid()))
)
- )
- );
+ );
+ }
}
- }
- );
+ );
- return s;
- },
- f -> {
- _log.error(l -> l.error("CCR Failure during configuration start on {}", next, f.getFailure()));
+ return s;
+ },
+ f -> {
+ _log.error(l -> l.error("CCR Failure during configuration start on {}", next, f.getFailure()));
- error(f.getFailure());
- }
- );
+ error(f.getFailure());
+ }
+ );
- return true;
- }
- ).orElse(true);
+ return true;
+ }
+ ).orElse(true);
+ }
}
@Override
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java Thu Sep 20 19:34:35 2018
@@ -74,6 +74,11 @@ public class ContainerBootstrap extends
@Override
public boolean open() {
try (Syncro syncro = _lock.open()) {
+ if (containerState.bundleContext() == null) {
+ // this bundle was already removed
+ return false;
+ }
+
if (_bootstrap != null) {
return true;
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java Thu Sep 20 19:34:35 2018
@@ -24,6 +24,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
@@ -242,7 +243,9 @@ public class ContainerState {
}
public BundleContext bundleContext() {
- return _bundle.getBundleContext();
+ BundleContext bundleContext = _bundle.getBundleContext();
+ Objects.requireNonNull(bundleContext);
+ return bundleContext;
}
public ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> caTracker() {
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ExtensionPhase.java Thu Sep 20 19:34:35 2018
@@ -29,6 +29,7 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.model.ExtendedExtensionTemplateDTO;
import org.apache.aries.cdi.container.internal.util.Conversions;
import org.apache.aries.cdi.container.internal.util.SRs;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.apache.aries.cdi.container.internal.util.Throw;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Filter;
@@ -49,29 +50,31 @@ public class ExtensionPhase extends Phas
@Override
public boolean close() {
- if (!extensionTemplates().isEmpty()) {
- if (_extensionTracker != null) {
- _extensionTracker.close();
+ try (Syncro open = syncro.open()) {
+ if (!extensionTemplates().isEmpty()) {
+ if (_extensionTracker != null) {
+ _extensionTracker.close();
- _extensionTracker = null;
- }
-
- return true;
- }
- else {
- return next.map(
- next -> {
- submit(next.closeOp(), next::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in extension CLOSE on {}", bundle(), f));
-
- error(f);
- }
- );
-
- return true;
+ _extensionTracker = null;
}
- ).orElse(true);
+
+ return true;
+ }
+ else {
+ return next.map(
+ next -> {
+ submit(next.closeOp(), next::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in extension CLOSE on {}", bundle(), f));
+
+ error(f);
+ }
+ );
+
+ return true;
+ }
+ ).orElse(true);
+ }
}
}
@@ -82,28 +85,35 @@ public class ExtensionPhase extends Phas
@Override
public boolean open() {
- if (!extensionTemplates().isEmpty()) {
- _extensionTracker = new ServiceTracker<>(
- containerState.bundleContext(), createExtensionFilter(), new ExtensionPhaseCustomizer());
+ try (Syncro open = syncro.open()) {
+ if (containerState.bundleContext() == null) {
+ // this bundle was already removed
+ return false;
+ }
- _extensionTracker.open();
+ if (!extensionTemplates().isEmpty()) {
+ _extensionTracker = new ServiceTracker<>(
+ containerState.bundleContext(), createExtensionFilter(), new ExtensionPhaseCustomizer());
- return true;
- }
- else {
- return next.map(
- next -> {
- submit(next.openOp(), next::open).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in extension OPEN on {}", bundle(), f));
+ _extensionTracker.open();
- error(f);
- }
- );
+ return true;
+ }
+ else {
+ return next.map(
+ next -> {
+ submit(next.openOp(), next::open).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in extension OPEN on {}", bundle(), f));
+
+ error(f);
+ }
+ );
- return true;
- }
- ).orElse(true);
+ return true;
+ }
+ ).orElse(true);
+ }
}
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/Phase.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/Phase.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/Phase.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/Phase.java Thu Sep 20 19:34:35 2018
@@ -17,11 +17,14 @@ package org.apache.aries.cdi.container.i
import java.util.Optional;
import java.util.concurrent.Callable;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.osgi.framework.Bundle;
import org.osgi.util.promise.Promise;
public abstract class Phase {
+ protected final Syncro syncro = new Syncro(true);
+
public Phase(ContainerState containerState, Phase next) {
this.containerState = containerState;
this.next = Optional.ofNullable(next);
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java Thu Sep 20 19:34:35 2018
@@ -128,10 +128,10 @@ public class ReferenceSync implements Se
boolean dynamic = (_templateDTO.policy == ReferencePolicy.DYNAMIC);
boolean reluctant = (_templateDTO.policyOption == ReferencePolicyOption.RELUCTANT);
CollectionType collectionType = _templateDTO.collectionType;
- boolean requiresUpdate = false;
+ boolean requiresUpdate = true;
- if (resolved && reluctant && active && !dynamic) {
- requiresUpdate = true;
+ if (resolved && active && dynamic) {
+ requiresUpdate = false;
}
_referenceDTO.matches.removeIf(d -> d.id == SRs.id(reference));
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/RuntimeExtension.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/RuntimeExtension.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/RuntimeExtension.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/RuntimeExtension.java Thu Sep 20 19:34:35 2018
@@ -122,13 +122,6 @@ public class RuntimeExtension implements
_containerState.beanManager(bm);
- Dictionary<String, Object> properties = new Hashtable<>();
- properties.put(CDIConstants.CDI_CONTAINER_ID, _containerState.id());
-
- registerService(
- new String[] {BeanManager.class.getName()}, bm,
- properties);
-
ComponentDTO componentDTO = _containerState.containerDTO().components.get(0);
_containerState.submit(
@@ -136,6 +129,16 @@ public class RuntimeExtension implements
() -> registerServices(componentDTO, bm)
).then(
s -> initComponents()
+ ).then(s -> {
+ Dictionary<String, Object> properties = new Hashtable<>();
+ properties.put(CDIConstants.CDI_CONTAINER_ID, _containerState.id());
+
+ registerService(
+ new String[] {BeanManager.class.getName()}, bm,
+ properties);
+
+ return s;
+ }
);
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerActivator.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerActivator.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerActivator.java Thu Sep 20 19:34:35 2018
@@ -19,6 +19,7 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.container.Op;
import org.apache.aries.cdi.container.internal.container.Op.Mode;
import org.apache.aries.cdi.container.internal.container.Op.Type;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.osgi.service.log.Logger;
public class ContainerActivator extends InstanceActivator {
@@ -36,6 +37,8 @@ public class ContainerActivator extends
}
+ private final Syncro syncro = new Syncro(true);
+
private ContainerActivator(Builder builder) {
super(builder);
_log = containerState.containerLogs().getLogger(getClass());
@@ -43,21 +46,23 @@ public class ContainerActivator extends
@Override
public boolean close() {
- boolean result = next.map(
- next -> {
- submit(next.closeOp(), next::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Failure in container activator close on {}", next, f));
- }
- );
+ try (Syncro open = syncro.open()) {
+ boolean result = next.map(
+ next -> {
+ submit(next.closeOp(), next::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Failure in container activator close on {}", next, f));
+ }
+ );
- return true;
- }
- ).orElse(true);
+ return true;
+ }
+ ).orElse(true);
- instance.active = false;
+ instance.active = false;
- return result;
+ return result;
+ }
}
@Override
@@ -67,29 +72,31 @@ public class ContainerActivator extends
@Override
public boolean open() {
- if (!instance.referencesResolved()) {
- return false;
- }
+ try (Syncro open = syncro.open()) {
+ if (!instance.referencesResolved()) {
+ return false;
+ }
- boolean result = next.map(
- next -> {
- submit(next.openOp(), next::open).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Failure in container activator open on {}", next, f));
+ boolean result = next.map(
+ next -> {
+ submit(next.openOp(), next::open).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Failure in container activator open on {}", next, f));
+
+ containerState.error(f);
+ }
+ );
- containerState.error(f);
+ return true;
}
- );
+ ).orElse(true);
- return true;
+ if (result) {
+ instance.active = true;
}
- ).orElse(true);
- if (result) {
- instance.active = true;
+ return result;
}
-
- return result;
}
@Override
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerComponent.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerComponent.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerComponent.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ContainerComponent.java Thu Sep 20 19:34:35 2018
@@ -22,6 +22,7 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.container.Op;
import org.apache.aries.cdi.container.internal.container.Op.Mode;
import org.apache.aries.cdi.container.internal.container.Op.Type;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.apache.aries.cdi.container.internal.util.Throw;
import org.osgi.service.cdi.runtime.dto.ComponentDTO;
import org.osgi.service.cdi.runtime.dto.ComponentInstanceDTO;
@@ -57,33 +58,35 @@ public class ContainerComponent extends
@Override
public boolean close() {
- if (_snapshot == null) {
- return true;
- }
+ try (Syncro open = syncro.open()) {
+ if (_snapshot == null) {
+ return true;
+ }
- _snapshot.instances.removeIf(
- instance -> {
- ExtendedComponentInstanceDTO einstance = (ExtendedComponentInstanceDTO)instance;
+ _snapshot.instances.removeIf(
+ instance -> {
+ ExtendedComponentInstanceDTO einstance = (ExtendedComponentInstanceDTO)instance;
+
+ Promise<Boolean> result = submit(einstance.closeOp(), einstance::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in container component close for {} on {}", einstance.ident(), bundle(), f));
+ }
+ );
- Promise<Boolean> result = submit(einstance.closeOp(), einstance::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in container component close for {} on {}", einstance.ident(), bundle(), f));
+ try {
+ return result.getValue();
+ }
+ catch (InvocationTargetException | InterruptedException e) {
+ return Throw.exception(e);
}
- );
-
- try {
- return result.getValue();
- }
- catch (InvocationTargetException | InterruptedException e) {
- return Throw.exception(e);
}
- }
- );
+ );
- containerState.containerDTO().components.remove(_snapshot);
- _snapshot = null;
+ containerState.containerDTO().components.remove(_snapshot);
+ _snapshot = null;
- return true;
+ return true;
+ }
}
@Override
@@ -103,29 +106,31 @@ public class ContainerComponent extends
@Override
public boolean open() {
- _snapshot = new ComponentDTO();
- _snapshot.instances = new CopyOnWriteArrayList<>();
- _snapshot.template = _template;
+ try (Syncro open = syncro.open()) {
+ _snapshot = new ComponentDTO();
+ _snapshot.instances = new CopyOnWriteArrayList<>();
+ _snapshot.template = _template;
- containerState.containerDTO().components.add(_snapshot);
+ containerState.containerDTO().components.add(_snapshot);
- ExtendedComponentInstanceDTO instanceDTO = new ExtendedComponentInstanceDTO(
- containerState, _activatorBuilder);
+ ExtendedComponentInstanceDTO instanceDTO = new ExtendedComponentInstanceDTO(
+ containerState, _activatorBuilder);
- instanceDTO.activations = new CopyOnWriteArrayList<>();
- instanceDTO.configurations = new CopyOnWriteArrayList<>();
- instanceDTO.references = new CopyOnWriteArrayList<>();
- instanceDTO.template = _template;
+ instanceDTO.activations = new CopyOnWriteArrayList<>();
+ instanceDTO.configurations = new CopyOnWriteArrayList<>();
+ instanceDTO.references = new CopyOnWriteArrayList<>();
+ instanceDTO.template = _template;
- _snapshot.instances.add(instanceDTO);
+ _snapshot.instances.add(instanceDTO);
- submit(instanceDTO.openOp(), instanceDTO::open).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in container component open for {} on {}", _template.name, containerState.bundle()));
- }
- );
+ submit(instanceDTO.openOp(), instanceDTO::open).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in container component open for {} on {}", _template.name, containerState.bundle()));
+ }
+ );
- return true;
+ return true;
+ }
}
@Override
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedComponentInstanceDTO.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedComponentInstanceDTO.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedComponentInstanceDTO.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedComponentInstanceDTO.java Thu Sep 20 19:34:35 2018
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicLong;
@@ -31,6 +32,7 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.container.Op.Type;
import org.apache.aries.cdi.container.internal.container.ReferenceSync;
import org.apache.aries.cdi.container.internal.util.Conversions;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.osgi.framework.Constants;
import org.osgi.service.cdi.ConfigurationPolicy;
import org.osgi.service.cdi.runtime.dto.ComponentDTO;
@@ -54,6 +56,7 @@ public class ExtendedComponentInstanceDT
private final ContainerState _containerState;
private final Logger _log;
private final AtomicReference<InstanceActivator> _noRequiredDependenciesActivator = new AtomicReference<>();
+ private final Syncro sync = new Syncro(true);
public ExtendedComponentInstanceDTO(
ContainerState containerState,
@@ -66,40 +69,42 @@ public class ExtendedComponentInstanceDT
}
public boolean close() {
- _containerState.submit(Op.of(Mode.CLOSE, Type.REFERENCES, ident()),
- () -> {
- references.removeIf(
- r -> {
- ExtendedReferenceDTO referenceDTO = (ExtendedReferenceDTO)r;
- referenceDTO.serviceTracker.close();
- return true;
- }
- );
-
- if (_noRequiredDependenciesActivator.get() != null) {
- _containerState.submit(
- _noRequiredDependenciesActivator.get().closeOp(),
- () -> _noRequiredDependenciesActivator.get().close()
- ).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in CLOSE on {}", ident(), f));
-
- _containerState.error(f);
+ try (Syncro open = sync.open()) {
+ _containerState.submit(Op.of(Mode.CLOSE, Type.REFERENCES, ident()),
+ () -> {
+ references.removeIf(
+ r -> {
+ ExtendedReferenceDTO referenceDTO = (ExtendedReferenceDTO)r;
+ referenceDTO.serviceTracker.close();
+ return true;
}
);
- }
- return true;
- }
- ).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in component instance stop on {}", this, f));
- }
- );
+ if (_noRequiredDependenciesActivator.get() != null) {
+ _containerState.submit(
+ _noRequiredDependenciesActivator.get().closeOp(),
+ () -> _noRequiredDependenciesActivator.get().close()
+ ).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in CLOSE on {}", ident(), f));
+
+ _containerState.error(f);
+ }
+ );
+ }
- properties = null;
+ return true;
+ }
+ ).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in component instance stop on {}", this, f));
+ }
+ );
- return true;
+ properties = null;
+
+ return true;
+ }
}
public Op closeOp() {
@@ -150,93 +155,95 @@ public class ExtendedComponentInstanceDT
}
public boolean open() {
- if (!configurationsResolved() || (properties != null)) {
- return false;
- }
-
- ConfigurationDTO containerConfiguration = containerConfiguration();
-
- if (containerConfiguration != null) {
- Boolean enabled = Conversions.convert(
- containerConfiguration.properties.get(
- template.name.concat(".enabled"))
- ).defaultValue(Boolean.TRUE).to(Boolean.class);
-
- if (!enabled) {
- _containerState.containerDTO().components.stream().filter(
- c -> c.template == template
- ).forEach(c -> c.enabled = false);
-
+ try (Syncro open = sync.open()) {
+ if (!configurationsResolved() || (properties != null)) {
return false;
}
- else {
- _containerState.containerDTO().components.stream().filter(
- c -> c.template == template
- ).forEach(c -> c.enabled = true);
- }
- }
- properties = componentProperties(null);
+ ConfigurationDTO containerConfiguration = containerConfiguration();
- template.references.stream().map(ExtendedReferenceTemplateDTO.class::cast).forEach(
- t -> {
- ExtendedReferenceDTO referenceDTO = new ExtendedReferenceDTO();
+ if (containerConfiguration != null) {
+ Boolean enabled = Conversions.convert(
+ containerConfiguration.properties.get(
+ template.name.concat(".enabled"))
+ ).defaultValue(Boolean.TRUE).to(Boolean.class);
+
+ if (!enabled) {
+ _containerState.containerDTO().components.stream().filter(
+ c -> c.template == template
+ ).forEach(c -> c.enabled = false);
- if (t.collectionType == CollectionType.BINDER_SERVICE) {
- referenceDTO.binder = new BindServiceImpl<>(_containerState);
- }
- else if (t.collectionType == CollectionType.BINDER_REFERENCE) {
- referenceDTO.binder = new BindServiceReferenceImpl<>(_containerState);
+ return false;
}
- else if (t.collectionType == CollectionType.BINDER_BEAN_SERVICE_OBJECTS) {
- referenceDTO.binder = new BindBeanServiceObjectsImpl<>(_containerState);
+ else {
+ _containerState.containerDTO().components.stream().filter(
+ c -> c.template == template
+ ).forEach(c -> c.enabled = true);
}
+ }
- referenceDTO.matches = new CopyOnWriteArrayList<>();
- referenceDTO.minimumCardinality = minimumCardinality(t.name, t.minimumCardinality);
- referenceDTO.targetFilter = targetFilter(t.serviceType, t.name, t.targetFilter);
- referenceDTO.template = t;
- referenceDTO.serviceTracker = new ServiceTracker<>(
- _containerState.bundleContext(),
- asFilter(referenceDTO.targetFilter),
- new ReferenceSync(_containerState, referenceDTO, this, _builder));
+ properties = componentProperties(null);
- references.add(referenceDTO);
- }
- );
+ template.references.stream().map(ExtendedReferenceTemplateDTO.class::cast).forEach(
+ t -> {
+ ExtendedReferenceDTO referenceDTO = new ExtendedReferenceDTO();
- _containerState.submit(
- Op.of(Mode.OPEN, Type.REFERENCES, ident()),
- () -> {
- references.stream().map(ExtendedReferenceDTO.class::cast).forEach(
- r -> r.serviceTracker.open()
- );
+ if (t.collectionType == CollectionType.BINDER_SERVICE) {
+ referenceDTO.binder = new BindServiceImpl<>(_containerState);
+ }
+ else if (t.collectionType == CollectionType.BINDER_REFERENCE) {
+ referenceDTO.binder = new BindServiceReferenceImpl<>(_containerState);
+ }
+ else if (t.collectionType == CollectionType.BINDER_BEAN_SERVICE_OBJECTS) {
+ referenceDTO.binder = new BindBeanServiceObjectsImpl<>(_containerState);
+ }
- return referencesResolved();
- }
- ).then(
- s -> {
- if (s.getValue()) {
- // none of the reference dependencies are required
- _noRequiredDependenciesActivator.set(_builder.setInstance(this).build());
-
- return _containerState.submit(
- _noRequiredDependenciesActivator.get().openOp(),
- () -> _noRequiredDependenciesActivator.get().open()
- ).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in OPEN on {}", ident(), f));
+ referenceDTO.matches = new CopyOnWriteArrayList<>();
+ referenceDTO.minimumCardinality = minimumCardinality(t.name, t.minimumCardinality);
+ referenceDTO.targetFilter = targetFilter(t.serviceType, t.name, t.targetFilter);
+ referenceDTO.template = t;
+ referenceDTO.serviceTracker = new ServiceTracker<>(
+ _containerState.bundleContext(),
+ asFilter(referenceDTO.targetFilter),
+ new ReferenceSync(_containerState, referenceDTO, this, _builder));
- _containerState.error(f);
- }
+ references.add(referenceDTO);
+ }
+ );
+
+ _containerState.submit(
+ Op.of(Mode.OPEN, Type.REFERENCES, ident()),
+ () -> {
+ references.stream().map(ExtendedReferenceDTO.class::cast).forEach(
+ r -> r.serviceTracker.open()
);
+
+ return referencesResolved();
}
+ ).then(
+ s -> {
+ if (s.getValue()) {
+ // none of the reference dependencies are required
+ _noRequiredDependenciesActivator.set(_builder.setInstance(this).build());
+
+ return _containerState.submit(
+ _noRequiredDependenciesActivator.get().openOp(),
+ () -> _noRequiredDependenciesActivator.get().open()
+ ).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in OPEN on {}", ident(), f));
+
+ _containerState.error(f);
+ }
+ );
+ }
- return s;
- }
- );
+ return s;
+ }
+ );
- return true;
+ return true;
+ }
}
private ConfigurationDTO containerConfiguration() {
@@ -309,6 +316,8 @@ public class ExtendedComponentInstanceDT
}
private int minimumCardinality(String componentName, int minimumCardinality) {
+ Objects.requireNonNull(properties);
+ Objects.requireNonNull(componentName);
return Optional.ofNullable(
properties.get(componentName.concat(".cardinality.minimum"))
).map(
@@ -319,6 +328,10 @@ public class ExtendedComponentInstanceDT
}
private String targetFilter(String serviceType, String componentName, String targetFilter) {
+ Objects.requireNonNull(properties);
+ Objects.requireNonNull(serviceType);
+ Objects.requireNonNull(componentName);
+ Objects.requireNonNull(targetFilter);
String base = "(objectClass=".concat(serviceType).concat(")");
String extraFilter = Optional.ofNullable(
properties.get(componentName.concat(".target"))
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java Thu Sep 20 19:34:35 2018
@@ -103,6 +103,11 @@ public class FactoryActivator extends In
@SuppressWarnings({ "unchecked", "rawtypes" })
public boolean open() {
try (Syncro synchro = _lock.open()) {
+ if (containerState.bundleContext() == null) {
+ // this bundle was already removed
+ return false;
+ }
+
if (!instance.referencesResolved() || instance.active) {
return false;
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryComponent.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryComponent.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryComponent.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryComponent.java Thu Sep 20 19:34:35 2018
@@ -22,6 +22,7 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.container.Op;
import org.apache.aries.cdi.container.internal.container.Op.Mode;
import org.apache.aries.cdi.container.internal.container.Op.Type;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.apache.aries.cdi.container.internal.util.Throw;
import org.osgi.service.cdi.runtime.dto.ComponentDTO;
import org.osgi.service.cdi.runtime.dto.ComponentInstanceDTO;
@@ -54,34 +55,36 @@ public class FactoryComponent extends Co
@Override
public boolean close() {
- if (_snapshot == null) {
- return true;
- }
+ try (Syncro open = syncro.open()) {
+ if (_snapshot == null) {
+ return true;
+ }
- _snapshot.instances.removeIf(
- instance -> {
- ExtendedComponentInstanceDTO einstance = (ExtendedComponentInstanceDTO)instance;
-
- Promise<Boolean> result = submit(einstance.closeOp(), einstance::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in factory component close for {} on {}", einstance.ident(), bundle(), f));
- }
- );
+ _snapshot.instances.removeIf(
+ instance -> {
+ ExtendedComponentInstanceDTO einstance = (ExtendedComponentInstanceDTO)instance;
+
+ Promise<Boolean> result = submit(einstance.closeOp(), einstance::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in factory component close for {} on {}", einstance.ident(), bundle(), f));
+ }
+ );
- try {
- return result.getValue();
- }
- catch (InvocationTargetException | InterruptedException e) {
- return Throw.exception(e);
+ try {
+ return result.getValue();
+ }
+ catch (InvocationTargetException | InterruptedException e) {
+ return Throw.exception(e);
+ }
}
- }
- );
+ );
- containerState.containerDTO().components.remove(_snapshot);
+ containerState.containerDTO().components.remove(_snapshot);
- _snapshot = null;
+ _snapshot = null;
- return true;
+ return true;
+ }
}
@Override
@@ -106,13 +109,15 @@ public class FactoryComponent extends Co
@Override
public boolean open() {
- _snapshot = new ComponentDTO();
- _snapshot.instances = new CopyOnWriteArrayList<>();
- _snapshot.template = _template;
+ try (Syncro open = syncro.open()) {
+ _snapshot = new ComponentDTO();
+ _snapshot.instances = new CopyOnWriteArrayList<>();
+ _snapshot.template = _template;
- containerState.containerDTO().components.add(_snapshot);
+ containerState.containerDTO().components.add(_snapshot);
- return true;
+ return true;
+ }
}
@Override
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceModel.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceModel.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceModel.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceModel.java Thu Sep 20 19:34:35 2018
@@ -41,11 +41,14 @@ import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Qualifier;
+import org.apache.aries.cdi.container.internal.util.Conversions;
+import org.apache.aries.cdi.container.internal.util.Maps;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.service.cdi.MaximumCardinality;
import org.osgi.service.cdi.ReferencePolicy;
import org.osgi.service.cdi.ReferencePolicyOption;
+import org.osgi.service.cdi.annotations.BeanPropertyType;
import org.osgi.service.cdi.annotations.PrototypeRequired;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Reluctant;
@@ -53,6 +56,7 @@ import org.osgi.service.cdi.reference.Be
import org.osgi.service.cdi.reference.BindBeanServiceObjects;
import org.osgi.service.cdi.reference.BindService;
import org.osgi.service.cdi.reference.BindServiceReference;
+import org.osgi.util.converter.TypeReference;
public class ReferenceModel {
@@ -115,6 +119,8 @@ public class ReferenceModel {
BUNDLE, PROTOTYPE, SINGLETON
}
+ private static final TypeReference<Map<String, String>> _mapType = new TypeReference<Map<String, String>>(){};
+
private ReferenceModel(
Type injectionPointType,
Class<?> declaringClass,
@@ -260,12 +266,23 @@ public class ReferenceModel {
filterValid = true;
}
+ List<Annotation> beanPropertyTypes = _annotated.getAnnotations().stream().filter(
+ ann -> ann.annotationType().getAnnotation(BeanPropertyType.class) != null
+ ).collect(Collectors.toList());
+
StringBuilder sb = new StringBuilder();
- if (_prototype && filterValid) {
+ if (_prototype && filterValid || !beanPropertyTypes.isEmpty()) {
sb.append("(&");
}
+ beanPropertyTypes.forEach(
+ ann -> {
+ Map<String, String> map = Conversions.convert(ann).to(_mapType);
+ Maps.appendFilter(sb, map);
+ }
+ );
+
if (_prototype) {
sb.append("(");
sb.append(Constants.SERVICE_SCOPE);
@@ -278,7 +295,7 @@ public class ReferenceModel {
sb.append(targetFilter);
}
- if (_prototype && filterValid) {
+ if (_prototype && filterValid || !beanPropertyTypes.isEmpty()) {
sb.append(")");
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java Thu Sep 20 19:34:35 2018
@@ -102,6 +102,11 @@ public class SingleActivator extends Ins
@SuppressWarnings({ "unchecked", "rawtypes" })
public boolean open() {
try (Syncro synchro = _lock.open()) {
+ if (containerState.bundleContext() == null) {
+ // this bundle was already removed
+ return false;
+ }
+
if (!instance.referencesResolved() || instance.active) {
return false;
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleComponent.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleComponent.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleComponent.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleComponent.java Thu Sep 20 19:34:35 2018
@@ -21,6 +21,7 @@ import java.util.concurrent.CopyOnWriteA
import org.apache.aries.cdi.container.internal.container.ContainerState;
import org.apache.aries.cdi.container.internal.container.Op;
import org.apache.aries.cdi.container.internal.container.Op.Mode;
+import org.apache.aries.cdi.container.internal.util.Syncro;
import org.apache.aries.cdi.container.internal.util.Throw;
import org.osgi.service.cdi.runtime.dto.ComponentDTO;
import org.osgi.service.cdi.runtime.dto.ComponentInstanceDTO;
@@ -54,34 +55,36 @@ public class SingleComponent extends Com
@Override
public boolean close() {
- if (_snapshot == null) {
- return true;
- }
+ try (Syncro open = syncro.open()) {
+ if (_snapshot == null) {
+ return true;
+ }
- _snapshot.instances.removeIf(
- instance -> {
- ExtendedComponentInstanceDTO einstance = (ExtendedComponentInstanceDTO)instance;
-
- Promise<Boolean> result = submit(einstance.closeOp(), einstance::close).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in single component close for {} on {}", einstance.ident(), bundle(), f));
- }
- );
+ _snapshot.instances.removeIf(
+ instance -> {
+ ExtendedComponentInstanceDTO einstance = (ExtendedComponentInstanceDTO)instance;
+
+ Promise<Boolean> result = submit(einstance.closeOp(), einstance::close).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in single component close for {} on {}", einstance.ident(), bundle(), f));
+ }
+ );
- try {
- return result.getValue();
- }
- catch (InvocationTargetException | InterruptedException e) {
- return Throw.exception(e);
+ try {
+ return result.getValue();
+ }
+ catch (InvocationTargetException | InterruptedException e) {
+ return Throw.exception(e);
+ }
}
- }
- );
+ );
- containerState.containerDTO().components.remove(_snapshot);
+ containerState.containerDTO().components.remove(_snapshot);
- _snapshot = null;
+ _snapshot = null;
- return true;
+ return true;
+ }
}
@Override
@@ -106,28 +109,30 @@ public class SingleComponent extends Com
@Override
public boolean open() {
- _snapshot = new ComponentDTO();
- _snapshot.instances = new CopyOnWriteArrayList<>();
- _snapshot.template = _template;
-
- containerState.containerDTO().components.add(_snapshot);
-
- ExtendedComponentInstanceDTO instanceDTO = new ExtendedComponentInstanceDTO(
- containerState, _activatorBuilder);
- instanceDTO.activations = new CopyOnWriteArrayList<>();
- instanceDTO.configurations = new CopyOnWriteArrayList<>();
- instanceDTO.references = new CopyOnWriteArrayList<>();
- instanceDTO.template = _template;
-
- _snapshot.instances.add(instanceDTO);
-
- submit(instanceDTO.openOp(), instanceDTO::open).onFailure(
- f -> {
- _log.error(l -> l.error("CCR Error in single component open for {} on {}", instanceDTO.ident(), containerState.bundle()));
- }
- );
+ try (Syncro open = syncro.open()) {
+ _snapshot = new ComponentDTO();
+ _snapshot.instances = new CopyOnWriteArrayList<>();
+ _snapshot.template = _template;
+
+ containerState.containerDTO().components.add(_snapshot);
+
+ ExtendedComponentInstanceDTO instanceDTO = new ExtendedComponentInstanceDTO(
+ containerState, _activatorBuilder);
+ instanceDTO.activations = new CopyOnWriteArrayList<>();
+ instanceDTO.configurations = new CopyOnWriteArrayList<>();
+ instanceDTO.references = new CopyOnWriteArrayList<>();
+ instanceDTO.template = _template;
+
+ _snapshot.instances.add(instanceDTO);
+
+ submit(instanceDTO.openOp(), instanceDTO::open).onFailure(
+ f -> {
+ _log.error(l -> l.error("CCR Error in single component open for {} on {}", instanceDTO.ident(), containerState.bundle(), f));
+ }
+ );
- return true;
+ return true;
+ }
}
@Override
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_greedy_Test2.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_greedy_Test2.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_greedy_Test2.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_greedy_Test2.java Thu Sep 20 19:34:35 2018
@@ -21,6 +21,7 @@ import java.util.Collection;
import org.apache.aries.cdi.container.internal.model.BeansModel;
import org.apache.aries.cdi.container.internal.model.OSGiBean;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents;
import org.apache.aries.cdi.container.test.beans.Bar;
import org.apache.aries.cdi.container.test.beans.Foo;
@@ -38,7 +39,7 @@ import org.osgi.service.cdi.ReferencePol
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO;
-public class Discovery_Ctor_dynamic_greedy_Test2 {
+public class Discovery_Ctor_dynamic_greedy_Test2 extends AbstractTestBase {
@Test
public void test_CtorCollectionFoo() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_reluctant_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_reluctant_Test.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_reluctant_Test.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_dynamic_reluctant_Test.java Thu Sep 20 19:34:35 2018
@@ -21,6 +21,7 @@ import java.util.Collection;
import org.apache.aries.cdi.container.internal.model.BeansModel;
import org.apache.aries.cdi.container.internal.model.OSGiBean;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents;
import org.apache.aries.cdi.container.test.beans.Bar;
import org.apache.aries.cdi.container.test.beans.Foo;
@@ -38,7 +39,7 @@ import org.osgi.service.cdi.ReferencePol
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO;
-public class Discovery_Ctor_dynamic_reluctant_Test {
+public class Discovery_Ctor_dynamic_reluctant_Test extends AbstractTestBase {
@Test
public void test_CtorCollectionFoo() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_greedy_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_greedy_Test.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_greedy_Test.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_greedy_Test.java Thu Sep 20 19:34:35 2018
@@ -21,6 +21,7 @@ import java.util.Collection;
import org.apache.aries.cdi.container.internal.model.BeansModel;
import org.apache.aries.cdi.container.internal.model.OSGiBean;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents;
import org.apache.aries.cdi.container.test.beans.Bar;
import org.apache.aries.cdi.container.test.beans.Foo;
@@ -38,7 +39,7 @@ import org.osgi.service.cdi.ReferencePol
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO;
-public class Discovery_Ctor_static_greedy_Test {
+public class Discovery_Ctor_static_greedy_Test extends AbstractTestBase {
@Test
public void test_CtorListFoo() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_reluctant_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_reluctant_Test.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_reluctant_Test.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/container/Discovery_Ctor_static_reluctant_Test.java Thu Sep 20 19:34:35 2018
@@ -21,6 +21,7 @@ import java.util.Collection;
import org.apache.aries.cdi.container.internal.model.BeansModel;
import org.apache.aries.cdi.container.internal.model.OSGiBean;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents;
import org.apache.aries.cdi.container.test.beans.Bar;
import org.apache.aries.cdi.container.test.beans.Foo;
@@ -38,7 +39,7 @@ import org.osgi.service.cdi.ReferencePol
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO;
-public class Discovery_Ctor_static_reluctant_Test {
+public class Discovery_Ctor_static_reluctant_Test extends AbstractTestBase {
@Test
public void test_CtorListFoo() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/MapsTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/MapsTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/MapsTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/MapsTest.java Thu Sep 20 19:34:35 2018
@@ -22,12 +22,13 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.aries.cdi.container.internal.util.Maps;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.junit.Assert;
import org.junit.Test;
import org.osgi.service.cdi.annotations.BeanPropertyType;
import org.osgi.service.cdi.annotations.Service;
-public class MapsTest {
+public class MapsTest extends AbstractTestBase {
@Retention(RetentionPolicy.RUNTIME)
@BeanPropertyType
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java Thu Sep 20 19:34:35 2018
@@ -24,6 +24,7 @@ import javax.enterprise.inject.Instance;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockInjectionPoint;
import org.apache.aries.cdi.container.test.beans.Foo;
import org.junit.Test;
@@ -31,7 +32,7 @@ import org.osgi.service.cdi.annotations.
import org.osgi.service.cdi.reference.BeanServiceObjects;
import org.osgi.util.converter.TypeReference;
-public class ReferenceModel_BeanServiceObjectsTest {
+public class ReferenceModel_BeanServiceObjectsTest extends AbstractTestBase {
@Test(expected = IllegalArgumentException.class)
public void withoutServiceDefined_raw() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_PropertiesTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_PropertiesTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_PropertiesTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_PropertiesTest.java Thu Sep 20 19:34:35 2018
@@ -14,9 +14,7 @@
package org.apache.aries.cdi.container.internal.model;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -27,14 +25,13 @@ import java.util.Optional;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
-import org.apache.aries.cdi.container.internal.model.CollectionType;
-import org.apache.aries.cdi.container.internal.model.ReferenceModel;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockInjectionPoint;
import org.junit.Test;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.util.converter.TypeReference;
-public class ReferenceModel_PropertiesTest {
+public class ReferenceModel_PropertiesTest extends AbstractTestBase {
@Test(expected = IllegalArgumentException.class)
public void withoutServiceDefined() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceReferenceTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceReferenceTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceReferenceTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceReferenceTest.java Thu Sep 20 19:34:35 2018
@@ -14,9 +14,7 @@
package org.apache.aries.cdi.container.internal.model;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -25,8 +23,7 @@ import java.util.List;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
-import org.apache.aries.cdi.container.internal.model.CollectionType;
-import org.apache.aries.cdi.container.internal.model.ReferenceModel;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockInjectionPoint;
import org.apache.aries.cdi.container.test.beans.Foo;
import org.junit.Test;
@@ -34,7 +31,7 @@ import org.osgi.framework.ServiceReferen
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.util.converter.TypeReference;
-public class ReferenceModel_ServiceReferenceTest {
+public class ReferenceModel_ServiceReferenceTest extends AbstractTestBase {
@Test(expected = IllegalArgumentException.class)
public void withoutServiceDefined_raw() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ServiceTest.java Thu Sep 20 19:34:35 2018
@@ -14,9 +14,7 @@
package org.apache.aries.cdi.container.internal.model;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -27,15 +25,14 @@ import java.util.concurrent.Callable;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
-import org.apache.aries.cdi.container.internal.model.CollectionType;
-import org.apache.aries.cdi.container.internal.model.ReferenceModel;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockInjectionPoint;
import org.apache.aries.cdi.container.test.beans.Foo;
import org.junit.Test;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.util.converter.TypeReference;
-public class ReferenceModel_ServiceTest {
+public class ReferenceModel_ServiceTest extends AbstractTestBase {
@Test
public void withoutServiceDefined_raw() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_TupleTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_TupleTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_TupleTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_TupleTest.java Thu Sep 20 19:34:35 2018
@@ -14,9 +14,7 @@
package org.apache.aries.cdi.container.internal.model;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -27,15 +25,14 @@ import javax.enterprise.inject.Instance;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
-import org.apache.aries.cdi.container.internal.model.CollectionType;
-import org.apache.aries.cdi.container.internal.model.ReferenceModel;
+import org.apache.aries.cdi.container.test.AbstractTestBase;
import org.apache.aries.cdi.container.test.MockInjectionPoint;
import org.apache.aries.cdi.container.test.beans.Foo;
import org.junit.Test;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.util.converter.TypeReference;
-public class ReferenceModel_TupleTest {
+public class ReferenceModel_TupleTest extends AbstractTestBase {
@Test(expected = IllegalArgumentException.class)
public void withoutServiceType_raw() throws Exception {
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java Thu Sep 20 19:34:35 2018
@@ -383,7 +383,11 @@ public class ContainerReferencesTest ext
assertEquals(SRs.id(sr3.getReference()), SRs.id(extendedReferenceDTO.serviceTracker.getServiceReference()));
assertEquals(foo, extendedReferenceDTO.serviceTracker.getService());
- assertTrue(p1.timeout(200).getValue());
+ p1.timeout(200).then(s -> {
+ assertTrue(s.getValue());
+ return s;
+ },
+ f -> fail(f.getFailure().getMessage()));
}
@Test
Added: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/AbstractTestBase.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/AbstractTestBase.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/AbstractTestBase.java (added)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/AbstractTestBase.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,22 @@
+package org.apache.aries.cdi.container.test;
+
+import org.junit.Rule;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+public class AbstractTestBase {
+
+ @Rule
+ public TestWatcher watchman= new TestWatcher() {
+ @Override
+ protected void failed(Throwable e, Description description) {
+ System.out.printf("--------- TEST: %s#%s [%s]%n", description.getTestClass(), description.getMethodName(), "FAILED");
+ }
+
+ @Override
+ protected void succeeded(Description description) {
+ System.out.printf("--------- TEST: %s#%s [%s]%n", description.getTestClass(), description.getMethodName(), "PASSED");
+ }
+ };
+
+}
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java Thu Sep 20 19:34:35 2018
@@ -37,7 +37,7 @@ import org.osgi.namespace.extender.Exten
import org.osgi.service.cdi.CDIConstants;
import org.osgi.util.promise.PromiseFactory;
-public class BaseCDIBundleTest {
+public class BaseCDIBundleTest extends AbstractTestBase {
protected Bundle bundle;
protected CCR ccr;
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=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml (original)
+++ aries/trunk/cdi/cdi-extender/src/test/resources/logback.xml Thu Sep 20 19:34:35 2018
@@ -25,7 +25,7 @@
</encoder>
</appender>
- <logger name="org.apache.aries.cdi.container" level="DEBUG"/>
+ <logger name="org.apache.aries.cdi.container" level="ERROR"/>
<root level="ERROR">
<appender-ref ref="STDOUT" />
Modified: aries/trunk/cdi/cdi-itests/bnd.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd.bnd?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd.bnd Thu Sep 20 19:34:35 2018
@@ -46,8 +46,11 @@ p = org.apache.aries.cdi.test
tb8.jar,\
tb9.jar,\
tb10.jar,\
- tb11.jar
-
+ tb11.jar,\
+ tb152_2.jar,\
+ tb152_2b.jar,\
+ tb152_3.jar,\
+ tb152_3_1.jar
# Don't forget that we had to coax the `maven-jar-plugin` NOT to include the `sub-bundle` packages in
# the root bundle:
#
Added: aries/trunk/cdi/cdi-itests/bnd/tb152_2.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb152_2.bnd?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb152_2.bnd (added)
+++ aries/trunk/cdi/cdi-itests/bnd/tb152_2.bnd Thu Sep 20 19:34:35 2018
@@ -0,0 +1,2 @@
+Export-Package: ${p}.tb152_2.*;-split-package:=first
+-cdiannotations: *
\ No newline at end of file
Added: aries/trunk/cdi/cdi-itests/bnd/tb152_2b.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb152_2b.bnd?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb152_2b.bnd (added)
+++ aries/trunk/cdi/cdi-itests/bnd/tb152_2b.bnd Thu Sep 20 19:34:35 2018
@@ -0,0 +1,2 @@
+Export-Package: ${p}.tb152_2b.*;-split-package:=first
+-cdiannotations: *
\ No newline at end of file
Added: aries/trunk/cdi/cdi-itests/bnd/tb152_3.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb152_3.bnd?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb152_3.bnd (added)
+++ aries/trunk/cdi/cdi-itests/bnd/tb152_3.bnd Thu Sep 20 19:34:35 2018
@@ -0,0 +1,2 @@
+Export-Package: ${p}.tb152_3.*;-split-package:=first
+-cdiannotations: *
\ No newline at end of file
Added: aries/trunk/cdi/cdi-itests/bnd/tb152_3_1.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb152_3_1.bnd?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb152_3_1.bnd (added)
+++ aries/trunk/cdi/cdi-itests/bnd/tb152_3_1.bnd Thu Sep 20 19:34:35 2018
@@ -0,0 +1,2 @@
+Export-Package: ${p}.tb152_3_1.*;-split-package:=first
+-cdiannotations: *
\ No newline at end of file
Modified: aries/trunk/cdi/cdi-itests/cdi-executable.bndrun
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/cdi-executable.bndrun?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/cdi-executable.bndrun (original)
+++ aries/trunk/cdi/cdi-itests/cdi-executable.bndrun Thu Sep 20 19:34:35 2018
@@ -46,7 +46,7 @@
org.apache.felix.gogo.command;version='[1.0.2,1.0.3)',\
org.apache.felix.gogo.jline;version='[1.0.2,1.0.3)',\
org.apache.felix.gogo.runtime;version='[1.0.2,1.0.3)',\
- org.apache.felix.http.jetty;version='[3.4.2,3.4.3)',\
+ org.apache.felix.http.jetty;version='[4.0.4,4.0.5)',\
org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
org.apache.geronimo.specs.geronimo-annotation_1.3_spec;version='[1.1.0,1.1.1)',\
org.apache.geronimo.specs.geronimo-atinject_1.0_spec;version='[1.1.0,1.1.1)',\
@@ -57,7 +57,6 @@
org.jboss.weld.osgi-bundle;version='[3.0.5,3.0.6)',\
org.jline;version='[3.0.0,3.0.1)',\
org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
- org.osgi.service.event;version='[1.3.1,1.3.2)',\
org.osgi.util.function;version='[1.1.0,1.1.1)',\
org.osgi.util.promise;version='[1.1.0,1.1.1)'
Modified: aries/trunk/cdi/cdi-itests/itest.bndrun
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/itest.bndrun?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/itest.bndrun (original)
+++ aries/trunk/cdi/cdi-itests/itest.bndrun Thu Sep 20 19:34:35 2018
@@ -37,6 +37,7 @@
sun.misc
-runbundles: \
+ biz.aQute.junit;version='[4.1.0,4.1.1)',\
javax.ejb-api;version='[3.2.0,3.2.1)',\
javax.transaction-api;version='[1.2.0,1.2.1)',\
jboss-classfilewriter;version='[1.2.3,1.2.4)',\
@@ -53,7 +54,7 @@
org.apache.felix.gogo.command;version='[1.0.2,1.0.3)',\
org.apache.felix.gogo.runtime;version='[1.0.2,1.0.3)',\
org.apache.felix.gogo.shell;version='[1.0.0,1.0.1)',\
- org.apache.felix.http.jetty;version='[3.4.2,3.4.3)',\
+ org.apache.felix.http.jetty;version='[4.0.4,4.0.5)',\
org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
org.apache.felix.scr;version='[2.1.0,2.1.1)',\
org.apache.geronimo.specs.geronimo-annotation_1.3_spec;version='[1.1.0,1.1.1)',\
@@ -66,11 +67,8 @@
org.jboss.logging.jboss-logging;version='[3.3.2,3.3.3)',\
org.jboss.weld.osgi-bundle;version='[3.0.5,3.0.6)',\
org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
- org.osgi.service.event;version='[1.3.1,1.3.2)',\
org.osgi.util.function;version='[1.1.0,1.1.1)',\
- org.osgi.util.promise;version='[1.1.0,1.1.1)',\
- osgi.enroute.hamcrest.wrapper;version='[1.3.0,1.3.1)',\
- osgi.enroute.junit.wrapper;version='[4.12.0,4.12.1)'
+ org.osgi.util.promise;version='[1.1.0,1.1.1)'
-resolve.effective: resolve, active
-runee: JavaSE-1.8
Modified: aries/trunk/cdi/cdi-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/pom.xml?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/pom.xml (original)
+++ aries/trunk/cdi/cdi-itests/pom.xml Thu Sep 20 19:34:35 2018
@@ -191,7 +191,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.http.jetty</artifactId>
- <version>3.4.2</version>
+ <version>4.0.4</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
@@ -239,14 +239,9 @@
<scope>runtime</scope>
</dependency>
<dependency>
- <groupId>org.osgi</groupId>
- <artifactId>osgi.enroute.junit.wrapper</artifactId>
- <version>4.12.0</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>osgi.enroute.hamcrest.wrapper</artifactId>
- <version>1.3.0</version>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>biz.aQute.junit</artifactId>
+ <version>${bnd.version}</version>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java Thu Sep 20 19:34:35 2018
@@ -26,6 +26,7 @@ import org.osgi.framework.ServiceReferen
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
import org.osgi.service.cdi.annotations.SingleComponent;
+import org.osgi.service.log.Logger;
@SingleComponent
@Service({FieldInjectedBundleScopedImpl.class, FieldInjectedReference.class})
@@ -69,14 +70,17 @@ public class FieldInjectedBundleScopedIm
return service;
}
+ @Inject
+ Logger logger;
+
@PostConstruct
private void postConstructed() {
- System.out.println("PostConstructed " + this);
+ logger.info("PostConstructed {}", this);
}
@PreDestroy
private void preDestroyed() {
- System.out.println("PreDestroyed " + this);
+ logger.info("PreDestroyed {}", this);
}
}
\ No newline at end of file
Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java Thu Sep 20 19:34:35 2018
@@ -26,6 +26,7 @@ import org.osgi.framework.ServiceReferen
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
import org.osgi.service.cdi.annotations.SingleComponent;
+import org.osgi.service.log.Logger;
@SingleComponent
@Service({FieldInjectedPrototypeScopedImpl.class, FieldInjectedReference.class})
@@ -69,14 +70,17 @@ public class FieldInjectedPrototypeScope
return service;
}
+ @Inject
+ Logger logger;
+
@PostConstruct
private void postConstructed() {
- System.out.println("PostConstructed " + this);
+ logger.info("PostConstructed {}", this);
}
@PreDestroy
private void preDestroyed() {
- System.out.println("PreDestroyed " + this);
+ logger.info("PreDestroyed {}", this);
}
}
\ No newline at end of file
Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java Thu Sep 20 19:34:35 2018
@@ -26,6 +26,7 @@ import org.apache.aries.cdi.test.interfa
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
import org.osgi.service.cdi.annotations.SingleComponent;
+import org.osgi.service.log.Logger;
@SingleComponent
@Service({BeanService.class, Instance_ServiceProperties.class})
@@ -48,14 +49,17 @@ public class Instance_ServiceProperties
@Reference(Integer.class)
List<Map<String, Object>> _instance;
+ @Inject
+ Logger logger;
+
@PostConstruct
private void postConstructed() {
- System.out.println("PostConstructed " + this);
+ logger.info("PostConstructed {}", this);
}
@PreDestroy
private void preDestroyed() {
- System.out.println("PreDestroyed " + this);
+ logger.info("PreDestroyed {}", this);
}
}
Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java Thu Sep 20 19:34:35 2018
@@ -29,6 +29,7 @@ import org.apache.aries.cdi.test.interfa
import org.osgi.service.cdi.annotations.BeanPropertyType;
import org.osgi.service.cdi.annotations.Service;
import org.osgi.service.cdi.annotations.SingleComponent;
+import org.osgi.service.log.Logger;
@SingleComponent
@Service({ServiceWithProperties.class, BeanService.class})
@@ -81,14 +82,17 @@ public class ServiceWithProperties imple
@Inject
private PojoImpl _pojo;
+ @Inject
+ Logger logger;
+
@PostConstruct
private void postConstructed() {
- System.out.println("PostConstructed " + this);
+ logger.info("PostConstructed {}", this);
}
@PreDestroy
private void preDestroyed() {
- System.out.println("PreDestroyed " + this);
+ logger.info("PreDestroyed {}", this);
}
}
Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java Thu Sep 20 19:34:35 2018
@@ -36,7 +36,8 @@ import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
-import org.junit.rules.TestName;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
import org.osgi.annotation.bundle.Requirement;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -71,7 +72,18 @@ import org.osgi.util.tracker.ServiceTrac
)
public class AbstractTestCase {
- @Rule public TestName testName = new TestName();
+ @Rule
+ public TestWatcher watchman= new TestWatcher() {
+ @Override
+ protected void failed(Throwable e, Description description) {
+ System.out.printf("--------- TEST: %s#%s [%s]%n", description.getTestClass(), description.getMethodName(), "FAILED");
+ }
+
+ @Override
+ protected void succeeded(Description description) {
+ System.out.printf("--------- TEST: %s#%s [%s]%n", description.getTestClass(), description.getMethodName(), "PASSED");
+ }
+ };
@BeforeClass
public static void beforeClass() throws Exception {
@@ -88,14 +100,8 @@ public class AbstractTestCase {
servicesBundle.uninstall();
}
- void testHeader() {
- System.out.println("--------- TEST: " + getClass().getSimpleName() + "#" +testName.getMethodName());
- }
-
@Before
public void setUp() throws Exception {
- testHeader();
-
cdiRuntime = runtimeTracker.waitForService(timeout);
cdiBundle = installBundle("basic-beans.jar");
cdiBundle.start();