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/04/18 15:13:47 UTC
svn commit: r1829454 [1/2] - in /aries/trunk/cdi:
cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/bean/
cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/
cdi-extender/src/main/java/org/apache/aries/cdi/con...
Author: rotty3000
Date: Wed Apr 18 15:13:46 2018
New Revision: 1829454
URL: http://svn.apache.org/viewvc?rev=1829454&view=rev
Log:
updated to latest CDI API
Signed-off-by: Raymond Auge <ro...@apache.org>
Added:
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/BeanServiceObjectsImpl.java
- copied, changed from r1829162, aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceServiceObjectsImpl.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindObjectImpl.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceObjectsImpl.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceReferenceImpl.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/Binder.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java
- copied, changed from r1829162, aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ReferenceServiceObjectsTest.java
Removed:
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceServiceObjectsImpl.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ReferenceEventImpl.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ReferenceServiceObjectsTest.java
Modified:
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/bean/ReferenceBean.java
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/DiscoveryExtension.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/CollectionType.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/ExtendedReferenceDTO.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/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/provider/package-info.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarAnnotated.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarProducer.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/FooAnnotated.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/FooWithReferenceAndConfig.java
aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/ObserverFoo.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/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/bean/ReferenceBean.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/bean/ReferenceBean.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/bean/ReferenceBean.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/bean/ReferenceBean.java Wed Apr 18 15:13:46 2018
@@ -38,7 +38,6 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.model.CollectionType;
import org.apache.aries.cdi.container.internal.model.ExtendedReferenceDTO;
import org.apache.aries.cdi.container.internal.model.ExtendedReferenceTemplateDTO;
-import org.apache.aries.cdi.container.internal.model.ReferenceEventImpl;
import org.apache.aries.cdi.container.internal.util.Logs;
import org.apache.aries.cdi.container.internal.util.Sets;
import org.osgi.framework.ServiceReference;
@@ -47,7 +46,6 @@ import org.osgi.service.cdi.MaximumCardi
import org.osgi.service.cdi.ReferencePolicy;
import org.osgi.service.cdi.annotations.ComponentScoped;
import org.osgi.service.cdi.annotations.Reference;
-import org.osgi.service.cdi.reference.ReferenceEvent;
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
import org.osgi.service.log.Logger;
@@ -68,8 +66,6 @@ public class ReferenceBean implements Be
@Override
public Object create(CreationalContext<Object> c) {
- if (_template.collectionType == CollectionType.OBSERVER) return null;
-
Objects.requireNonNull(_bm);
Objects.requireNonNull(_snapshot);
@@ -77,7 +73,13 @@ public class ReferenceBean implements Be
final SortedMap<ServiceReference<Object>, Object> tracked = _snapshot.serviceTracker.getTracked();
- if (_template.policy == ReferencePolicy.DYNAMIC) {
+ if (_template.collectionType == CollectionType.BINDER_OBJECT ||
+ _template.collectionType == CollectionType.BINDER_REFERENCE ||
+ _template.collectionType == CollectionType.BINDER_SERVICE_OBJECTS) {
+
+ return _snapshot.binder;
+ }
+ else if (_template.policy == ReferencePolicy.DYNAMIC) {
if (_template.maximumCardinality == MaximumCardinality.MANY) {
return new Provider<List<Object>>() {
@Override
@@ -167,34 +169,6 @@ public class ReferenceBean implements Be
public void destroy(Object instance, CreationalContext<Object> creationalContext) {
}
- public boolean fireEvents() {
- if (_template.collectionType != CollectionType.OBSERVER) return true;
-
- _snapshot.serviceTracker.getTracked().values().stream().map(
- ReferenceEvent.class::cast
- ).forEach(this::fireEvent);
-
- return true;
- }
-
- public boolean fireEvent(ReferenceEvent<?> event) {
- try {
-// TODO this is the spec way to do it, but parameterized types are not supported,
-// so we need to cheat.
-// _bm.getEvent().select(
-// Reference.Literal.of(_template.serviceClass, _template.targetFilter)
-// ).fire(event);
-
- ((org.jboss.weld.bean.builtin.BeanManagerProxy)_bm).delegate().getGlobalLenientObserverNotifier().fireEvent(
- (Type)event, event, Reference.Literal.of(_template.serviceClass, _template.targetFilter));
- }
- catch (Exception e) {
- _log.error(l -> l.error("CCR observer method error on {}", _snapshot, e));
- }
-
- return ((ReferenceEventImpl<?>)event).flush();
- }
-
@Override
public Class<?> getBeanClass() {
return _template.beanClass;
Copied: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/BeanServiceObjectsImpl.java (from r1829162, aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceServiceObjectsImpl.java)
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/BeanServiceObjectsImpl.java?p2=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/BeanServiceObjectsImpl.java&p1=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceServiceObjectsImpl.java&r1=1829162&r2=1829454&rev=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceServiceObjectsImpl.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/BeanServiceObjectsImpl.java Wed Apr 18 15:13:46 2018
@@ -19,11 +19,11 @@ import java.util.concurrent.ConcurrentHa
import org.osgi.framework.ServiceObjects;
import org.osgi.framework.ServiceReference;
-import org.osgi.service.cdi.reference.ReferenceServiceObjects;
+import org.osgi.service.cdi.reference.BeanServiceObjects;
-public class ReferenceServiceObjectsImpl<T> implements ReferenceServiceObjects<T> {
+public class BeanServiceObjectsImpl<T> implements BeanServiceObjects<T> {
- public ReferenceServiceObjectsImpl(ServiceObjects<T> so) {
+ public BeanServiceObjectsImpl(ServiceObjects<T> so) {
_so = so;
}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/DiscoveryExtension.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/DiscoveryExtension.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/DiscoveryExtension.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/DiscoveryExtension.java Wed Apr 18 15:13:46 2018
@@ -33,7 +33,6 @@ import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.Annotated;
import javax.enterprise.inject.spi.AnnotatedField;
-import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
@@ -41,12 +40,10 @@ import javax.enterprise.inject.spi.BeanM
import javax.enterprise.inject.spi.DefinitionException;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import javax.enterprise.inject.spi.ProcessBean;
import javax.enterprise.inject.spi.ProcessInjectionPoint;
import javax.enterprise.inject.spi.ProcessManagedBean;
-import javax.enterprise.inject.spi.ProcessObserverMethod;
import javax.enterprise.inject.spi.ProcessProducerField;
import javax.enterprise.inject.spi.ProcessProducerMethod;
import javax.enterprise.inject.spi.ProcessSessionBean;
@@ -66,15 +63,16 @@ import org.osgi.service.cdi.ComponentTyp
import org.osgi.service.cdi.ConfigurationPolicy;
import org.osgi.service.cdi.MaximumCardinality;
import org.osgi.service.cdi.ServiceScope;
-import org.osgi.service.cdi.annotations.Bundle;
import org.osgi.service.cdi.annotations.ComponentScoped;
import org.osgi.service.cdi.annotations.Configuration;
import org.osgi.service.cdi.annotations.FactoryComponent;
import org.osgi.service.cdi.annotations.PID;
-import org.osgi.service.cdi.annotations.Prototype;
import org.osgi.service.cdi.annotations.Reference;
+import org.osgi.service.cdi.annotations.ServiceInstance;
import org.osgi.service.cdi.annotations.SingleComponent;
-import org.osgi.service.cdi.reference.ReferenceEvent;
+import org.osgi.service.cdi.reference.BindObject;
+import org.osgi.service.cdi.reference.BindServiceObjects;
+import org.osgi.service.cdi.reference.BindServiceReference;
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
public class DiscoveryExtension implements Extension {
@@ -403,6 +401,108 @@ public class DiscoveryExtension implemen
}
}
+ void processBindObject(@Observes ProcessInjectionPoint<?, BindObject<?>> pip) {
+ InjectionPoint injectionPoint = pip.getInjectionPoint();
+
+ Class<?> declaringClass = getDeclaringClass(injectionPoint);
+
+ String className = declaringClass.getName();
+
+ OSGiBean osgiBean = _beansModel.getOSGiBean(className);
+
+ if (osgiBean == null) {
+ return;
+ }
+
+ Annotated annotated = injectionPoint.getAnnotated();
+
+ Builder builder = null;
+
+ if (annotated instanceof AnnotatedParameter) {
+ builder = new ReferenceModel.Builder((AnnotatedParameter<?>)annotated);
+ }
+ else {
+ builder = new ReferenceModel.Builder((AnnotatedField<?>)annotated);
+ }
+
+ try {
+ ReferenceModel referenceModel = builder.type(injectionPoint.getType()).build();
+
+ osgiBean.addReference(referenceModel.toDTO());
+ }
+ catch (Exception e) {
+ _containerState.error(e);
+ }
+ }
+
+ void processBindServiceObjects(@Observes ProcessInjectionPoint<?, BindServiceObjects<?>> pip) {
+ InjectionPoint injectionPoint = pip.getInjectionPoint();
+
+ Class<?> declaringClass = getDeclaringClass(injectionPoint);
+
+ String className = declaringClass.getName();
+
+ OSGiBean osgiBean = _beansModel.getOSGiBean(className);
+
+ if (osgiBean == null) {
+ return;
+ }
+
+ Annotated annotated = injectionPoint.getAnnotated();
+
+ Builder builder = null;
+
+ if (annotated instanceof AnnotatedParameter) {
+ builder = new ReferenceModel.Builder((AnnotatedParameter<?>)annotated);
+ }
+ else {
+ builder = new ReferenceModel.Builder((AnnotatedField<?>)annotated);
+ }
+
+ try {
+ ReferenceModel referenceModel = builder.type(injectionPoint.getType()).build();
+
+ osgiBean.addReference(referenceModel.toDTO());
+ }
+ catch (Exception e) {
+ _containerState.error(e);
+ }
+ }
+
+ void processBindServiceReference(@Observes ProcessInjectionPoint<?, BindServiceReference<?>> pip) {
+ InjectionPoint injectionPoint = pip.getInjectionPoint();
+
+ Class<?> declaringClass = getDeclaringClass(injectionPoint);
+
+ String className = declaringClass.getName();
+
+ OSGiBean osgiBean = _beansModel.getOSGiBean(className);
+
+ if (osgiBean == null) {
+ return;
+ }
+
+ Annotated annotated = injectionPoint.getAnnotated();
+
+ Builder builder = null;
+
+ if (annotated instanceof AnnotatedParameter) {
+ builder = new ReferenceModel.Builder((AnnotatedParameter<?>)annotated);
+ }
+ else {
+ builder = new ReferenceModel.Builder((AnnotatedField<?>)annotated);
+ }
+
+ try {
+ ReferenceModel referenceModel = builder.type(injectionPoint.getType()).build();
+
+ osgiBean.addReference(referenceModel.toDTO());
+ }
+ catch (Exception e) {
+ _containerState.error(e);
+ }
+ }
+
void processInjectionPoint(@Observes ProcessInjectionPoint<?, ?> pip) {
InjectionPoint injectionPoint = pip.getInjectionPoint();
@@ -468,70 +568,18 @@ public class DiscoveryExtension implemen
}
}
- void processObserverMethod(@Observes ProcessObserverMethod<ReferenceEvent<?>, ?> pom) {
- ObserverMethod<ReferenceEvent<?>> observerMethod = pom.getObserverMethod();
-
- AnnotatedMethod<?> annotatedMethod = pom.getAnnotatedMethod();
-
- Configuration configuration = annotatedMethod.getAnnotation(Configuration.class);
-
- if (configuration != null) {
- pom.addDefinitionError(
- new IllegalArgumentException(
- String.format(
- "Cannot use @Configuration on ReferenceEvent observer method {}",
- observerMethod))
- );
-
- return;
- }
-
- Class<?> beanClass = observerMethod.getBeanClass();
-
- final String className = beanClass.getName();
-
- OSGiBean osgiBean = _beansModel.getOSGiBean(className);
-
- if (osgiBean == null) {
- pom.addDefinitionError(
- new DefinitionException(
- String.format(
- "The observer method %s was not declared as <cdi:bean class=\"%s\">",
- observerMethod, className))
- );
-
- return;
- }
-
- try {
- ReferenceModel referenceModel = new ReferenceModel.Builder(
- pom.getAnnotatedMethod().getParameters().get(0)
- ).type(observerMethod.getObservedType()).build();
-
- osgiBean.addReference(referenceModel.toDTO());
- }
- catch (Exception e) {
- pom.addDefinitionError(e);
- }
- }
-
ServiceScope getScope(Annotated annotated) {
- Prototype prototype = annotated.getAnnotation(Prototype.class);
- Bundle bundle = annotated.getAnnotation(Bundle.class);
+ ServiceInstance serviceInstance = annotated.getAnnotation(ServiceInstance.class);
- if (prototype != null) {
- if (bundle != null) {
- throw new IllegalArgumentException(
- String.format(
- "@Prototype and @Bundle must not be used to gether: %s",
- annotated));
+ if (serviceInstance != null) {
+ switch (serviceInstance.value()) {
+ case BUNDLE:
+ return ServiceScope.BUNDLE;
+ case PROTOTYPE:
+ return ServiceScope.PROTOTYPE;
+ case SINGLETON:
+ return ServiceScope.SINGLETON;
}
-
- return ServiceScope.PROTOTYPE;
- }
-
- if (bundle != null) {
- return ServiceScope.BUNDLE;
}
return ServiceScope.SINGLETON;
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=1829454&r1=1829453&r2=1829454&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 Wed Apr 18 15:13:46 2018
@@ -16,13 +16,11 @@ package org.apache.aries.cdi.container.i
import java.util.AbstractMap.SimpleImmutableEntry;
-import org.apache.aries.cdi.container.internal.container.ComponentContext.With;
import org.apache.aries.cdi.container.internal.model.CollectionType;
import org.apache.aries.cdi.container.internal.model.ExtendedComponentInstanceDTO;
import org.apache.aries.cdi.container.internal.model.ExtendedReferenceDTO;
import org.apache.aries.cdi.container.internal.model.ExtendedReferenceTemplateDTO;
import org.apache.aries.cdi.container.internal.model.InstanceActivator;
-import org.apache.aries.cdi.container.internal.model.ReferenceEventImpl;
import org.apache.aries.cdi.container.internal.util.Conversions;
import org.apache.aries.cdi.container.internal.util.Maps;
import org.apache.aries.cdi.container.internal.util.SRs;
@@ -65,21 +63,13 @@ public class ReferenceSync implements Se
_referenceDTO.matches = SRs.from(_referenceDTO.serviceTracker.getServiceReferences(), reference);
try {
- if (collectionType == CollectionType.OBSERVER) {
- @SuppressWarnings("unchecked")
- ReferenceEventImpl<Object> event = new ReferenceEventImpl<>(_containerState, (Class<Object>)_templateDTO.serviceClass);
- event.addingService(reference);
- if (active) {
- _componentInstanceDTO.activations.forEach(
- a -> {
- try (With with = new With(a)) {
- _templateDTO.bean.fireEvent(event);
- }
- }
- );
- requiresUpdate = false;
- }
- return event;
+ if (collectionType == CollectionType.BINDER_OBJECT ||
+ collectionType == CollectionType.BINDER_REFERENCE ||
+ collectionType == CollectionType.BINDER_SERVICE_OBJECTS) {
+
+ requiresUpdate = false;
+
+ return _referenceDTO.binder.addingService(reference);
}
else if (collectionType == CollectionType.PROPERTIES) {
return Maps.of(reference.getProperties());
@@ -88,7 +78,7 @@ public class ReferenceSync implements Se
return reference;
}
else if (collectionType == CollectionType.SERVICEOBJECTS) {
- return new ReferenceServiceObjectsImpl<>(
+ return new BeanServiceObjectsImpl<>(
_containerState.bundleContext().getServiceObjects(reference));
}
else if (collectionType == CollectionType.TUPLE) {
@@ -111,12 +101,14 @@ public class ReferenceSync implements Se
}
@Override
- @SuppressWarnings("unchecked")
public void modifiedService(ServiceReference<Object> reference, Object service) {
CollectionType collectionType = _templateDTO.collectionType;
- if (collectionType == CollectionType.OBSERVER) {
- ((ReferenceEventImpl<Object>)service).modifiedService(reference);
+ if (collectionType == CollectionType.BINDER_OBJECT ||
+ collectionType == CollectionType.BINDER_REFERENCE ||
+ collectionType == CollectionType.BINDER_SERVICE_OBJECTS) {
+
+ _referenceDTO.binder.modifiedService(reference);
}
else if (collectionType == CollectionType.PROPERTIES ||
collectionType == CollectionType.REFERENCE ||
@@ -145,8 +137,13 @@ public class ReferenceSync implements Se
_referenceDTO.matches.removeIf(d -> d.id == SRs.id(reference));
try {
- if (collectionType == CollectionType.OBSERVER) {
- ((ReferenceEventImpl<Object>)service).removedService(reference);
+ if (collectionType == CollectionType.BINDER_OBJECT ||
+ collectionType == CollectionType.BINDER_REFERENCE ||
+ collectionType == CollectionType.BINDER_SERVICE_OBJECTS) {
+
+ requiresUpdate = false;
+
+ _referenceDTO.binder.removedService(reference);
return;
}
@@ -157,7 +154,7 @@ public class ReferenceSync implements Se
return;
}
else if (collectionType == CollectionType.SERVICEOBJECTS) {
- ((ReferenceServiceObjectsImpl<Object>)service).close();
+ ((BeanServiceObjectsImpl<Object>)service).close();
return;
}
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=1829454&r1=1829453&r2=1829454&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 Wed Apr 18 15:13:46 2018
@@ -46,7 +46,6 @@ import org.apache.aries.cdi.container.in
import org.apache.aries.cdi.container.internal.bean.ReferenceBean;
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.model.CollectionType;
import org.apache.aries.cdi.container.internal.model.ConfigurationModel;
import org.apache.aries.cdi.container.internal.model.ExtendedActivationDTO;
import org.apache.aries.cdi.container.internal.model.ExtendedActivationTemplateDTO;
@@ -71,6 +70,9 @@ import org.osgi.service.cdi.ServiceScope
import org.osgi.service.cdi.annotations.ComponentScoped;
import org.osgi.service.cdi.annotations.Configuration;
import org.osgi.service.cdi.annotations.Reference;
+import org.osgi.service.cdi.reference.BindObject;
+import org.osgi.service.cdi.reference.BindServiceObjects;
+import org.osgi.service.cdi.reference.BindServiceReference;
import org.osgi.service.cdi.runtime.dto.ComponentDTO;
import org.osgi.service.cdi.runtime.dto.ConfigurationDTO;
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
@@ -103,13 +105,13 @@ public class RuntimeExtension implements
}
void beforeBeanDiscovery(@Observes BeforeBeanDiscovery bbd) {
- bbd.addQualifier(org.osgi.service.cdi.annotations.Bundle.class);
bbd.addQualifier(org.osgi.service.cdi.annotations.Configuration.class);
bbd.addQualifier(org.osgi.service.cdi.annotations.Greedy.class);
bbd.addQualifier(org.osgi.service.cdi.annotations.PID.class);
- bbd.addQualifier(org.osgi.service.cdi.annotations.Prototype.class);
+ bbd.addQualifier(org.osgi.service.cdi.annotations.PrototypeRequired.class);
bbd.addQualifier(org.osgi.service.cdi.annotations.Reference.class);
bbd.addQualifier(org.osgi.service.cdi.annotations.Service.class);
+ bbd.addQualifier(org.osgi.service.cdi.annotations.ServiceInstance.class);
bbd.addScope(ComponentScoped.class, false, false);
bbd.addStereotype(org.osgi.service.cdi.annotations.FactoryComponent.class);
bbd.addStereotype(org.osgi.service.cdi.annotations.SingleComponent.class);
@@ -136,15 +138,8 @@ public class RuntimeExtension implements
properties);
_containerState.submit(
- Op.of(Mode.OPEN, Type.CONTAINER_FIRE_EVENTS, _containerState.id()),
- _containerInstanceDTO::fireEvents
- ).then(
- s-> {
- return _containerState.submit(
- Op.of(Mode.OPEN, Type.CONTAINER_PUBLISH_SERVICES, _containerState.id()),
- () -> registerServices(_containerComponentDTO, _containerInstanceDTO, bm)
- );
- }
+ Op.of(Mode.OPEN, Type.CONTAINER_PUBLISH_SERVICES, _containerState.id()),
+ () -> registerServices(_containerComponentDTO, _containerInstanceDTO, bm)
).then(
s -> initComponents()
);
@@ -180,7 +175,23 @@ public class RuntimeExtension implements
);
}
- void processInjectionPoint(@Observes ProcessInjectionPoint<?, ?> pip, BeanManager beanManager) {
+ void processBindObject(@Observes ProcessInjectionPoint<?, BindObject<?>> pip) {
+ processInjectionPoint(pip, true);
+ }
+
+ void processBindServiceObjects(@Observes ProcessInjectionPoint<?, BindServiceObjects<?>> pip) {
+ processInjectionPoint(pip, true);
+ }
+
+ void processBindServiceReference(@Observes ProcessInjectionPoint<?, BindServiceReference<?>> pip) {
+ processInjectionPoint(pip, true);
+ }
+
+ void processInjectionPoint(@Observes ProcessInjectionPoint<?, ?> pip) {
+ processInjectionPoint(pip, false);
+ }
+
+ void processInjectionPoint(ProcessInjectionPoint<?, ?> pip, boolean special) {
InjectionPoint injectionPoint = pip.getInjectionPoint();
Class<?> declaringClass = DiscoveryExtension.getDeclaringClass(injectionPoint);
@@ -197,7 +208,7 @@ public class RuntimeExtension implements
Configuration configuration = annotated.getAnnotation(Configuration.class);
Reference reference = annotated.getAnnotation(Reference.class);
- if ((reference != null) && matchReference(osgiBean, reference, pip)) {
+ if (((reference != null) || special) && matchReference(osgiBean, pip)) {
return;
}
@@ -220,11 +231,10 @@ public class RuntimeExtension implements
r -> bean.setReferenceDTO(r)
);
}
- if (t.collectionType != CollectionType.OBSERVER) {
- _log.debug(l -> l.debug("CCR Adding synthetic bean {} on {}", bean, _containerState.bundle()));
- abd.addBean(bean);
- }
+ _log.debug(l -> l.debug("CCR Adding synthetic bean {} on {}", bean, _containerState.bundle()));
+
+ abd.addBean(bean);
}
);
@@ -350,7 +360,7 @@ public class RuntimeExtension implements
).orElse(false);
}
- private boolean matchReference(OSGiBean osgiBean, Reference reference, ProcessInjectionPoint<?, ?> pip) {
+ private boolean matchReference(OSGiBean osgiBean, ProcessInjectionPoint<?, ?> pip) {
InjectionPoint injectionPoint = pip.getInjectionPoint();
Annotated annotated = injectionPoint.getAnnotated();
@@ -383,6 +393,8 @@ public class RuntimeExtension implements
t.bean.setMark(markedInjectionPoint.getMark());
+ _log.debug(l -> l.debug("CCR maping InjectionPoint {} to reference template {}", injectionPoint, t));
+
return true;
}
).orElse(false);
Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindObjectImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindObjectImpl.java?rev=1829454&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindObjectImpl.java (added)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindObjectImpl.java Wed Apr 18 15:13:46 2018
@@ -0,0 +1,200 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.aries.cdi.container.internal.model;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+
+import org.apache.aries.cdi.container.internal.container.ContainerState;
+import org.apache.aries.cdi.container.internal.util.Maps;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cdi.reference.BindObject;
+import org.osgi.service.log.Logger;
+
+public class BindObjectImpl<T> implements Binder<T>, BindObject<T> {
+
+ private final ContainerState _containerState;
+ private final Logger _log;
+
+ private final List<ServiceReference<T>> _queue = new CopyOnWriteArrayList<>();
+ private final AtomicBoolean _enqueue = new AtomicBoolean(true);
+ private volatile Optional<Consumer<T>> onAdding = Optional.empty();
+ private volatile Optional<BiConsumer<T, Map<String, Object>>> onAddingBi = Optional.empty();
+ private volatile Optional<Consumer<T>> onUpdate = Optional.empty();
+ private volatile Optional<BiConsumer<T, Map<String, Object>>> onUpdateBi = Optional.empty();
+ private volatile Optional<Consumer<T>> onRemove = Optional.empty();
+ private volatile Optional<BiConsumer<T, Map<String, Object>>> onRemoveBi = Optional.empty();
+
+ private volatile T service;
+
+ public BindObjectImpl(ContainerState containerState) {
+ _containerState = containerState;
+ _log = _containerState.containerLogs().getLogger(getClass());
+ }
+
+ @Override
+ public BindObjectImpl<T> addingService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ _queue.add(reference);
+ return this;
+ }
+
+ BundleContext bundleContext = _containerState.bundleContext();
+ service = bundleContext.getService(reference);
+ Map<String, Object> map = Maps.of(reference.getProperties());
+
+ onAdding.ifPresent(
+ c -> {
+ try {
+ c.accept(service);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+ onAddingBi.ifPresent(
+ c -> {
+ try {
+ c.accept(service, map);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> modifiedService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ return this; // i.e. do nothing
+ }
+
+ Map<String, Object> map = Maps.of(reference.getProperties());
+
+ onUpdate.ifPresent(
+ c -> {
+ try {
+ c.accept(service);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+ onUpdateBi.ifPresent(
+ c -> {
+ try {
+ c.accept(service, map);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> removedService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ _queue.remove(reference);
+ return this;
+ }
+
+ Map<String, Object> map = Maps.of(reference.getProperties());
+
+ onRemove.ifPresent(
+ c -> {
+ try {
+ c.accept(service);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+ onRemoveBi.ifPresent(
+ c -> {
+ try {
+ c.accept(service, map);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public void bind() {
+ _enqueue.set(false);
+ _queue.removeIf(
+ reference -> {
+ addingService(reference);
+ return true;
+ }
+ );
+ }
+
+ @Override
+ public BindObjectImpl<T> adding(Consumer<T> action) {
+ onAdding = Optional.ofNullable(action);
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> adding(BiConsumer<T, Map<String, Object>> action) {
+ onAddingBi = Optional.ofNullable(action);
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> modified(Consumer<T> consumer) {
+ onUpdate = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> modified(BiConsumer<T, Map<String, Object>> consumer) {
+ onUpdateBi = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> removed(Consumer<T> consumer) {
+ onRemove = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindObjectImpl<T> removed(BiConsumer<T, Map<String, Object>> consumer) {
+ onRemoveBi = Optional.ofNullable(consumer);
+ return this;
+ }
+
+}
\ No newline at end of file
Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceObjectsImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceObjectsImpl.java?rev=1829454&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceObjectsImpl.java (added)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceObjectsImpl.java Wed Apr 18 15:13:46 2018
@@ -0,0 +1,143 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.aries.cdi.container.internal.model;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
+
+import org.apache.aries.cdi.container.internal.container.BeanServiceObjectsImpl;
+import org.apache.aries.cdi.container.internal.container.ContainerState;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cdi.reference.BeanServiceObjects;
+import org.osgi.service.cdi.reference.BindServiceObjects;
+import org.osgi.service.log.Logger;
+
+public class BindServiceObjectsImpl<T> implements Binder<T>, BindServiceObjects<T> {
+
+ private final ContainerState _containerState;
+ private final Logger _log;
+
+ private final List<ServiceReference<T>> _queue = new CopyOnWriteArrayList<>();
+ private final AtomicBoolean _enqueue = new AtomicBoolean(true);
+ private volatile Optional<Consumer<BeanServiceObjects<T>>> onAdding = Optional.empty();
+ private volatile Optional<Consumer<BeanServiceObjects<T>>> onUpdate = Optional.empty();
+ private volatile Optional<Consumer<BeanServiceObjects<T>>> onRemove = Optional.empty();
+
+ private volatile BeanServiceObjects<T> serviceObjects;
+
+ public BindServiceObjectsImpl(ContainerState containerState) {
+ _containerState = containerState;
+ _log = _containerState.containerLogs().getLogger(getClass());
+ }
+
+ @Override
+ public BindServiceObjectsImpl<T> addingService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ _queue.add(reference);
+ return this;
+ }
+
+ BundleContext bundleContext = _containerState.bundleContext();
+ serviceObjects = new BeanServiceObjectsImpl<T>(bundleContext.getServiceObjects(reference));
+
+ onAdding.ifPresent(
+ c -> {
+ try {
+ c.accept(serviceObjects);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public BindServiceObjectsImpl<T> modifiedService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ return this; // i.e. do nothing
+ }
+
+ onUpdate.ifPresent(
+ c -> {
+ try {
+ c.accept(serviceObjects);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public BindServiceObjectsImpl<T> removedService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ _queue.remove(reference);
+ return this;
+ }
+
+ onRemove.ifPresent(
+ c -> {
+ try {
+ c.accept(serviceObjects);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public void bind() {
+ _enqueue.set(false);
+ _queue.removeIf(
+ reference -> {
+ addingService(reference);
+ return true;
+ }
+ );
+ }
+
+ @Override
+ public BindServiceObjectsImpl<T> adding(Consumer<BeanServiceObjects<T>> action) {
+ onAdding = Optional.ofNullable(action);
+ return this;
+ }
+
+ @Override
+ public BindServiceObjectsImpl<T> modified(Consumer<BeanServiceObjects<T>> consumer) {
+ onUpdate = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindServiceObjectsImpl<T> removed(Consumer<BeanServiceObjects<T>> consumer) {
+ onRemove = Optional.ofNullable(consumer);
+ return this;
+ }
+
+}
\ No newline at end of file
Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceReferenceImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceReferenceImpl.java?rev=1829454&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceReferenceImpl.java (added)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BindServiceReferenceImpl.java Wed Apr 18 15:13:46 2018
@@ -0,0 +1,193 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.aries.cdi.container.internal.model;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+
+import org.apache.aries.cdi.container.internal.container.ContainerState;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cdi.reference.BindServiceReference;
+import org.osgi.service.log.Logger;
+
+public class BindServiceReferenceImpl<T> implements Binder<T>, BindServiceReference<T> {
+
+ private final ContainerState _containerState;
+ private final Logger _log;
+
+ private final List<ServiceReference<T>> _queue = new CopyOnWriteArrayList<>();
+ private final AtomicBoolean _enqueue = new AtomicBoolean(true);
+ private volatile Optional<Consumer<ServiceReference<T>>> onAdding = Optional.empty();
+ private volatile Optional<BiConsumer<ServiceReference<T>, T>> onAddingBi = Optional.empty();
+ private volatile Optional<Consumer<ServiceReference<T>>> onUpdate = Optional.empty();
+ private volatile Optional<BiConsumer<ServiceReference<T>, T>> onUpdateBi = Optional.empty();
+ private volatile Optional<Consumer<ServiceReference<T>>> onRemove = Optional.empty();
+ private volatile Optional<BiConsumer<ServiceReference<T>, T>> onRemoveBi = Optional.empty();
+
+ private volatile T service;
+
+ public BindServiceReferenceImpl(ContainerState containerState) {
+ _containerState = containerState;
+ _log = _containerState.containerLogs().getLogger(getClass());
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> addingService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ _queue.add(reference);
+ return this;
+ }
+
+ BundleContext bundleContext = _containerState.bundleContext();
+ service = bundleContext.getService(reference);
+
+ onAdding.ifPresent(
+ c -> {
+ try {
+ c.accept(reference);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+ onAddingBi.ifPresent(
+ c -> {
+ try {
+ c.accept(reference, service);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> modifiedService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ return this; // i.e. do nothing
+ }
+
+ onUpdate.ifPresent(
+ c -> {
+ try {
+ c.accept(reference);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+ onUpdateBi.ifPresent(
+ c -> {
+ try {
+ c.accept(reference, service);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> removedService(ServiceReference<T> reference) {
+ if (_enqueue.get()) {
+ _queue.remove(reference);
+ return this;
+ }
+
+ onRemove.ifPresent(
+ c -> {
+ try {
+ c.accept(reference);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+ onRemoveBi.ifPresent(
+ c -> {
+ try {
+ c.accept(reference, service);
+ }
+ catch (Throwable t) {
+ _log.error(l -> l.error("CCR error in {}", this, t));
+ }
+ }
+ );
+
+ return this;
+ }
+
+ @Override
+ public void bind() {
+ _enqueue.set(false);
+ _queue.removeIf(
+ reference -> {
+ addingService(reference);
+ return true;
+ }
+ );
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> adding(Consumer<ServiceReference<T>> action) {
+ onAdding = Optional.ofNullable(action);
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> adding(BiConsumer<ServiceReference<T>, T> action) {
+ onAddingBi = Optional.ofNullable(action);
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> modified(Consumer<ServiceReference<T>> consumer) {
+ onUpdate = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> modified(BiConsumer<ServiceReference<T>, T> consumer) {
+ onUpdateBi = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> removed(Consumer<ServiceReference<T>> consumer) {
+ onRemove = Optional.ofNullable(consumer);
+ return this;
+ }
+
+ @Override
+ public BindServiceReferenceImpl<T> removed(BiConsumer<ServiceReference<T>, T> consumer) {
+ onRemoveBi = Optional.ofNullable(consumer);
+ return this;
+ }
+
+}
\ No newline at end of file
Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/Binder.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/Binder.java?rev=1829454&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/Binder.java (added)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/Binder.java Wed Apr 18 15:13:46 2018
@@ -0,0 +1,11 @@
+package org.apache.aries.cdi.container.internal.model;
+
+import org.osgi.framework.ServiceReference;
+
+public interface Binder<T> {
+
+ public Binder<T> addingService(ServiceReference<T> reference);
+ public Binder<T> modifiedService(ServiceReference<T> reference);
+ public Binder<T> removedService(ServiceReference<T> reference);
+
+}
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/CollectionType.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/CollectionType.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/CollectionType.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/CollectionType.java Wed Apr 18 15:13:46 2018
@@ -61,9 +61,22 @@ public enum CollectionType {
TUPLE("tuple"),
/**
- * The observer type is used to indicate the reference is targeted to a observer method.
+ * Used to indicate the reference is a binder for registering handler
+ * methods for tracking service instances.
*/
- OBSERVER("observer");
+ BINDER_OBJECT("binder_object"),
+
+ /**
+ * Used to indicate the reference is a binder for registering handler
+ * methods for tracking service references.
+ */
+ BINDER_REFERENCE("binder_reference"),
+
+ /**
+ * Used to indicate the reference is a binder for registering handler
+ * methods for tracking service objects.
+ */
+ BINDER_SERVICE_OBJECTS("binder_service_objects");
private final String value;
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=1829454&r1=1829453&r2=1829454&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 Wed Apr 18 15:13:46 2018
@@ -126,20 +126,6 @@ public class ExtendedComponentInstanceDT
return true;
}
- public final boolean fireEvents() {
- references.stream().map(ExtendedReferenceDTO.class::cast).filter(
- r -> ((ExtendedReferenceTemplateDTO)r.template).collectionType == CollectionType.OBSERVER
- ).map(
- r -> (ExtendedReferenceTemplateDTO)r.template
- ).forEach(
- t -> {
- t.bean.fireEvents();
- }
- );
-
- return true;
- }
-
public final boolean referencesResolved() {
for (ReferenceTemplateDTO template : template.references) {
if (template.minimumCardinality > 0) {
@@ -172,6 +158,16 @@ public class ExtendedComponentInstanceDT
t -> {
ExtendedReferenceDTO referenceDTO = new ExtendedReferenceDTO();
+ if (t.collectionType == CollectionType.BINDER_OBJECT) {
+ referenceDTO.binder = new BindObjectImpl<>(_containerState);
+ }
+ else if (t.collectionType == CollectionType.BINDER_REFERENCE) {
+ referenceDTO.binder = new BindServiceReferenceImpl<>(_containerState);
+ }
+ else if (t.collectionType == CollectionType.BINDER_SERVICE_OBJECTS) {
+ referenceDTO.binder = new BindServiceObjectsImpl<>(_containerState);
+ }
+
referenceDTO.matches = new CopyOnWriteArrayList<>();
referenceDTO.minimumCardinality = minimumCardinality(t.name, t.minimumCardinality);
referenceDTO.targetFilter = targetFilter(t.serviceType, t.name, t.targetFilter);
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedReferenceDTO.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedReferenceDTO.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedReferenceDTO.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedReferenceDTO.java Wed Apr 18 15:13:46 2018
@@ -19,6 +19,8 @@ import org.osgi.util.tracker.ServiceTrac
public class ExtendedReferenceDTO extends ReferenceDTO {
+ public Binder<Object> binder;
+
public ServiceTracker<Object, Object> serviceTracker;
}
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=1829454&r1=1829453&r2=1829454&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 Wed Apr 18 15:13:46 2018
@@ -263,7 +263,6 @@ public class FactoryActivator extends In
instance.activations.remove(a);
}
};
- instance.fireEvents();
return new AbstractMap.SimpleImmutableEntry<>(activationDTO, object);
}
catch (Throwable t) {
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=1829454&r1=1829453&r2=1829454&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 Wed Apr 18 15:13:46 2018
@@ -47,10 +47,12 @@ import org.osgi.service.cdi.MaximumCardi
import org.osgi.service.cdi.ReferencePolicy;
import org.osgi.service.cdi.ReferencePolicyOption;
import org.osgi.service.cdi.annotations.Greedy;
-import org.osgi.service.cdi.annotations.Prototype;
+import org.osgi.service.cdi.annotations.PrototypeRequired;
import org.osgi.service.cdi.annotations.Reference;
-import org.osgi.service.cdi.reference.ReferenceEvent;
-import org.osgi.service.cdi.reference.ReferenceServiceObjects;
+import org.osgi.service.cdi.reference.BindObject;
+import org.osgi.service.cdi.reference.BindServiceObjects;
+import org.osgi.service.cdi.reference.BindServiceReference;
+import org.osgi.service.cdi.reference.BeanServiceObjects;
public class ReferenceModel {
@@ -127,7 +129,7 @@ public class ReferenceModel {
_referenceType = getReferenceType();
_referenceTarget = getReferenceTarget();
_prototype = getQualifiers().stream().filter(
- ann -> ann.annotationType().equals(Prototype.class)
+ ann -> ann.annotationType().equals(PrototypeRequired.class)
).findFirst().isPresent();
calculateServiceType(_injectionPointType);
@@ -356,7 +358,7 @@ public class ReferenceModel {
throw new IllegalArgumentException(
"Map.Entry must specify a generic type arguments: " + clazz);
}
- else if ((ReferenceServiceObjects.class == clazz) && !_referenceType.isPresent()) {
+ else if ((BeanServiceObjects.class == clazz) && !_referenceType.isPresent()) {
throw new IllegalArgumentException(
"ReferenceServiceObjects must specify a generic type argument: " + clazz);
}
@@ -370,7 +372,7 @@ public class ReferenceModel {
throw new IllegalArgumentException(
type + " must specify a generic type argument");
}
- else if (ReferenceServiceObjects.class == clazz) {
+ else if (BeanServiceObjects.class == clazz) {
_collectionType = CollectionType.SERVICEOBJECTS;
return;
}
@@ -403,8 +405,8 @@ public class ReferenceModel {
"Instance<T> is not supported with @Reference: " + type);
}
- if (ReferenceEvent.class == cast(rawType)) {
- _collectionType = CollectionType.OBSERVER;
+ if (BindObject.class.isAssignableFrom(cast(rawType))) {
+ _collectionType = CollectionType.BINDER_OBJECT;
_dynamic = true;
_multiplicity = MaximumCardinality.MANY;
_optional = true;
@@ -414,7 +416,45 @@ public class ReferenceModel {
argument instanceof ParameterizedType) {
throw new IllegalArgumentException(
- "Type argument <S> of ReferenceEvent must not be generic: " + argument);
+ "Type argument <S> of BindObject must not be generic: " + argument);
+ }
+
+ _serviceType = cast(argument);
+
+ return;
+ }
+
+ if (BindServiceReference.class.isAssignableFrom(cast(rawType))) {
+ _collectionType = CollectionType.BINDER_REFERENCE;
+ _dynamic = true;
+ _multiplicity = MaximumCardinality.MANY;
+ _optional = true;
+ _greedy = true;
+
+ if (argument instanceof WildcardType ||
+ argument instanceof ParameterizedType) {
+
+ throw new IllegalArgumentException(
+ "Type argument <S> of BindServiceReference must not be generic: " + argument);
+ }
+
+ _serviceType = cast(argument);
+
+ return;
+ }
+
+ if (BindServiceObjects.class.isAssignableFrom(cast(rawType))) {
+ _collectionType = CollectionType.BINDER_SERVICE_OBJECTS;
+ _dynamic = true;
+ _multiplicity = MaximumCardinality.MANY;
+ _optional = true;
+ _greedy = true;
+
+ if (argument instanceof WildcardType ||
+ argument instanceof ParameterizedType) {
+
+ throw new IllegalArgumentException(
+ "Type argument <S> of BindServiceObjects must not be generic: " + argument);
}
_serviceType = cast(argument);
@@ -508,7 +548,7 @@ public class ReferenceModel {
return;
}
- if (ReferenceServiceObjects.class == cast(rawType)) {
+ if (BeanServiceObjects.class == cast(rawType)) {
_collectionType = CollectionType.SERVICEOBJECTS;
if ((argument instanceof WildcardType) && _referenceType.isPresent()) {
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=1829454&r1=1829453&r2=1829454&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 Wed Apr 18 15:13:46 2018
@@ -262,7 +262,6 @@ public class SingleActivator extends Ins
instance.activations.remove(a);
}
};
- instance.fireEvents();
return new AbstractMap.SimpleImmutableEntry<>(activationDTO, object);
}
catch (Throwable t) {
Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java Wed Apr 18 15:13:46 2018
@@ -3,8 +3,8 @@
namespace = ExtenderNamespace.EXTENDER_NAMESPACE,
uses = {
org.osgi.service.cdi.ServiceScope.class,
- org.osgi.service.cdi.annotations.Bundle.class,
- org.osgi.service.cdi.reference.ReferenceEvent.class,
+ org.osgi.service.cdi.annotations.Reference.class,
+ org.osgi.service.cdi.reference.BindObject.class,
org.osgi.service.cdi.runtime.CDIComponentRuntime.class,
org.osgi.service.cdi.runtime.dto.ActivationDTO.class,
org.osgi.service.cdi.runtime.dto.template.ActivationTemplateDTO.class
@@ -16,8 +16,8 @@
namespace = ImplementationNamespace.IMPLEMENTATION_NAMESPACE,
uses = {
org.osgi.service.cdi.ServiceScope.class,
- org.osgi.service.cdi.annotations.Bundle.class,
- org.osgi.service.cdi.reference.ReferenceEvent.class,
+ org.osgi.service.cdi.annotations.Reference.class,
+ org.osgi.service.cdi.reference.BindObject.class,
org.osgi.service.cdi.runtime.CDIComponentRuntime.class,
org.osgi.service.cdi.runtime.dto.ActivationDTO.class,
org.osgi.service.cdi.runtime.dto.template.ActivationTemplateDTO.class
Copied: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java (from r1829162, aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ReferenceServiceObjectsTest.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?p2=aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java&p1=aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ReferenceServiceObjectsTest.java&r1=1829162&r2=1829454&rev=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_ReferenceServiceObjectsTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/model/ReferenceModel_BeanServiceObjectsTest.java Wed Apr 18 15:13:46 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;
@@ -26,16 +24,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.MockInjectionPoint;
import org.apache.aries.cdi.container.test.beans.Foo;
import org.junit.Test;
import org.osgi.service.cdi.annotations.Reference;
-import org.osgi.service.cdi.reference.ReferenceServiceObjects;
+import org.osgi.service.cdi.reference.BeanServiceObjects;
import org.osgi.util.converter.TypeReference;
-public class ReferenceModel_ReferenceServiceObjectsTest {
+public class ReferenceModel_BeanServiceObjectsTest {
@Test(expected = IllegalArgumentException.class)
public void withoutServiceDefined_raw() throws Exception {
@@ -43,7 +39,7 @@ public class ReferenceModel_ReferenceSer
@SuppressWarnings("rawtypes")
@Inject
@Reference
- public ReferenceServiceObjects m;
+ public BeanServiceObjects m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -56,7 +52,7 @@ public class ReferenceModel_ReferenceSer
class C {
@Inject
@Reference
- public ReferenceServiceObjects<?> m;
+ public BeanServiceObjects<?> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -67,20 +63,20 @@ public class ReferenceModel_ReferenceSer
@Test
public void withoutServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- ReferenceServiceObjects<Integer>
+ BeanServiceObjects<Integer>
>(){}.getType();
class C {
@Inject
@Reference
- public ReferenceServiceObjects<Integer> m;
+ public BeanServiceObjects<Integer> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -93,21 +89,21 @@ public class ReferenceModel_ReferenceSer
public void withServiceDefined_raw() throws Exception {
@SuppressWarnings("rawtypes")
Type type = new TypeReference<
- ReferenceServiceObjects
+ BeanServiceObjects
>(){}.getType();
class C {
@SuppressWarnings("rawtypes")
@Inject
@Reference(Integer.class)
- public ReferenceServiceObjects m;
+ public BeanServiceObjects m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -119,20 +115,20 @@ public class ReferenceModel_ReferenceSer
@Test
public void withServiceDefined_wildcard() throws Exception {
Type type = new TypeReference<
- ReferenceServiceObjects<?>
+ BeanServiceObjects<?>
>(){}.getType();
class C {
@Inject
@Reference(Integer.class)
- public ReferenceServiceObjects<?> m;
+ public BeanServiceObjects<?> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -144,20 +140,20 @@ public class ReferenceModel_ReferenceSer
@Test
public void withServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- ReferenceServiceObjects<Integer>
+ BeanServiceObjects<Integer>
>(){}.getType();
class C {
@Inject
@Reference(Integer.class)
- public ReferenceServiceObjects<Integer> m;
+ public BeanServiceObjects<Integer> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -171,7 +167,7 @@ public class ReferenceModel_ReferenceSer
class C {
@Inject
@Reference(Integer.class)
- public ReferenceServiceObjects<Foo> m;
+ public BeanServiceObjects<Foo> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -185,7 +181,7 @@ public class ReferenceModel_ReferenceSer
@SuppressWarnings("rawtypes")
@Inject
@Reference
- public Collection<ReferenceServiceObjects> m;
+ public Collection<BeanServiceObjects> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -198,7 +194,7 @@ public class ReferenceModel_ReferenceSer
class C {
@Inject
@Reference
- public Collection<ReferenceServiceObjects<?>> m;
+ public Collection<BeanServiceObjects<?>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -209,13 +205,13 @@ public class ReferenceModel_ReferenceSer
@Test
public void collectionWithoutServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- Collection<ReferenceServiceObjects<Integer>>
+ Collection<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
@Reference
- public Collection<ReferenceServiceObjects<Integer>> m;
+ public Collection<BeanServiceObjects<Integer>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -235,14 +231,14 @@ public class ReferenceModel_ReferenceSer
public void collectionWithServiceDefined_raw() throws Exception {
@SuppressWarnings("rawtypes")
Type type = new TypeReference<
- Collection<ReferenceServiceObjects>
+ Collection<BeanServiceObjects>
>(){}.getType();
class C {
@SuppressWarnings("rawtypes")
@Inject
@Reference(Integer.class)
- public Collection<ReferenceServiceObjects> m;
+ public Collection<BeanServiceObjects> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -260,13 +256,13 @@ public class ReferenceModel_ReferenceSer
@Test
public void collectionWithServiceDefined_wildcard() throws Exception {
Type type = new TypeReference<
- Collection<ReferenceServiceObjects<?>>
+ Collection<BeanServiceObjects<?>>
>(){}.getType();
class C {
@Inject
@Reference(Integer.class)
- public Collection<ReferenceServiceObjects<?>> m;
+ public Collection<BeanServiceObjects<?>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -286,13 +282,13 @@ public class ReferenceModel_ReferenceSer
@Test
public void collectionWithServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- Collection<ReferenceServiceObjects<Integer>>
+ Collection<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
@Reference(Integer.class)
- public Collection<ReferenceServiceObjects<Integer>> m;
+ public Collection<BeanServiceObjects<Integer>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -313,7 +309,7 @@ public class ReferenceModel_ReferenceSer
class C {
@Inject
@Reference(Integer.class)
- public Collection<ReferenceServiceObjects<Foo>> m;
+ public Collection<BeanServiceObjects<Foo>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -327,7 +323,7 @@ public class ReferenceModel_ReferenceSer
@SuppressWarnings("rawtypes")
@Inject
@Reference
- public List<ReferenceServiceObjects> m;
+ public List<BeanServiceObjects> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -340,7 +336,7 @@ public class ReferenceModel_ReferenceSer
class C {
@Inject
@Reference
- public List<ReferenceServiceObjects<?>> m;
+ public List<BeanServiceObjects<?>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -351,13 +347,13 @@ public class ReferenceModel_ReferenceSer
@Test
public void listWithoutServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- List<ReferenceServiceObjects<Integer>>
+ List<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
@Reference
- public List<ReferenceServiceObjects<Integer>> m;
+ public List<BeanServiceObjects<Integer>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -377,14 +373,14 @@ public class ReferenceModel_ReferenceSer
public void listWithServiceDefined_raw() throws Exception {
@SuppressWarnings("rawtypes")
Type type = new TypeReference<
- List<ReferenceServiceObjects>
+ List<BeanServiceObjects>
>(){}.getType();
class C {
@SuppressWarnings("rawtypes")
@Inject
@Reference(Integer.class)
- public List<ReferenceServiceObjects> m;
+ public List<BeanServiceObjects> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -403,13 +399,13 @@ public class ReferenceModel_ReferenceSer
@Test
public void listWithServiceDefined_wildcard() throws Exception {
Type type = new TypeReference<
- List<ReferenceServiceObjects<?>>
+ List<BeanServiceObjects<?>>
>(){}.getType();
class C {
@Inject
@Reference(Integer.class)
- public List<ReferenceServiceObjects<?>> m;
+ public List<BeanServiceObjects<?>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -428,13 +424,13 @@ public class ReferenceModel_ReferenceSer
@Test
public void listWithServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- List<ReferenceServiceObjects<Integer>>
+ List<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
@Reference(Integer.class)
- public List<ReferenceServiceObjects<Integer>> m;
+ public List<BeanServiceObjects<Integer>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -455,7 +451,7 @@ public class ReferenceModel_ReferenceSer
class C {
@Inject
@Reference(Integer.class)
- public List<ReferenceServiceObjects<Foo>> m;
+ public List<BeanServiceObjects<Foo>> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -469,7 +465,7 @@ public class ReferenceModel_ReferenceSer
@SuppressWarnings("rawtypes")
@Inject
@Reference
- public Instance<ReferenceServiceObjects> m;
+ public Instance<BeanServiceObjects> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -483,7 +479,7 @@ public class ReferenceModel_ReferenceSer
@SuppressWarnings("rawtypes")
@Inject
@Reference
- public Instance<ReferenceServiceObjects> m;
+ public Instance<BeanServiceObjects> m;
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getField("m"));
@@ -502,10 +498,10 @@ public class ReferenceModel_ReferenceSer
class C {
@SuppressWarnings("rawtypes")
@Inject
- public void set(@Reference ReferenceServiceObjects m) {};
+ public void set(@Reference BeanServiceObjects m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
}
@@ -514,10 +510,10 @@ public class ReferenceModel_ReferenceSer
public void p_withoutServiceDefined_wildcard() throws Exception {
class C {
@Inject
- public void set(@Reference ReferenceServiceObjects<?> m) {};
+ public void set(@Reference BeanServiceObjects<?> m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
}
@@ -525,19 +521,19 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_withoutServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- ReferenceServiceObjects<Integer>
+ BeanServiceObjects<Integer>
>(){}.getType();
class C {
@Inject
- public void set(@Reference ReferenceServiceObjects<Integer> m) {};
+ public void set(@Reference BeanServiceObjects<Integer> m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -550,19 +546,19 @@ public class ReferenceModel_ReferenceSer
public void p_withServiceDefined_raw() throws Exception {
@SuppressWarnings("rawtypes")
Type type = new TypeReference<
- ReferenceServiceObjects
+ BeanServiceObjects
>(){}.getType();
class C {
@Inject
- public void set(@SuppressWarnings("rawtypes") @Reference(Integer.class) ReferenceServiceObjects m) {};
+ public void set(@SuppressWarnings("rawtypes") @Reference(Integer.class) BeanServiceObjects m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -574,19 +570,19 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_withServiceDefined_wildcard() throws Exception {
Type type = new TypeReference<
- ReferenceServiceObjects<?>
+ BeanServiceObjects<?>
>(){}.getType();
class C {
@Inject
- public void set(@Reference(Integer.class) ReferenceServiceObjects<?> m) {};
+ public void set(@Reference(Integer.class) BeanServiceObjects<?> m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -598,19 +594,19 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_withServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- ReferenceServiceObjects<Integer>
+ BeanServiceObjects<Integer>
>(){}.getType();
class C {
@Inject
- public void set(@Reference(Integer.class) ReferenceServiceObjects<Integer> m) {};
+ public void set(@Reference(Integer.class) BeanServiceObjects<Integer> m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
ReferenceModel referenceModel = new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
- assertEquals(ReferenceServiceObjects.class, referenceModel.getBeanClass());
+ assertEquals(BeanServiceObjects.class, referenceModel.getBeanClass());
assertEquals(Integer.class, referenceModel.getServiceType());
assertEquals(type, referenceModel.getInjectionPointType());
assertFalse(referenceModel.dynamic());
@@ -623,10 +619,10 @@ public class ReferenceModel_ReferenceSer
public void p_withServiceDefined_wrongtype() throws Exception {
class C {
@Inject
- public void set(@Reference(Integer.class) ReferenceServiceObjects<Foo> m) {};
+ public void set(@Reference(Integer.class) BeanServiceObjects<Foo> m) {};
}
- InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", ReferenceServiceObjects.class).getParameters()[0]);
+ InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", BeanServiceObjects.class).getParameters()[0]);
new ReferenceModel.Builder().injectionPoint(injectionPoint).build();
}
@@ -636,7 +632,7 @@ public class ReferenceModel_ReferenceSer
class C {
@SuppressWarnings("rawtypes")
@Inject
- public void set(@Reference Collection<ReferenceServiceObjects> m) {};
+ public void set(@Reference Collection<BeanServiceObjects> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -648,7 +644,7 @@ public class ReferenceModel_ReferenceSer
public void p_collectionWithoutServiceDefined_wildcard() throws Exception {
class C {
@Inject
- public void set(@Reference Collection<ReferenceServiceObjects<?>> m) {};
+ public void set(@Reference Collection<BeanServiceObjects<?>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -659,12 +655,12 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_collectionWithoutServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- Collection<ReferenceServiceObjects<Integer>>
+ Collection<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
- public void set(@Reference Collection<ReferenceServiceObjects<Integer>> m) {};
+ public void set(@Reference Collection<BeanServiceObjects<Integer>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -684,12 +680,12 @@ public class ReferenceModel_ReferenceSer
public void p_collectionWithServiceDefined_raw() throws Exception {
@SuppressWarnings("rawtypes")
Type type = new TypeReference<
- Collection<ReferenceServiceObjects>
+ Collection<BeanServiceObjects>
>(){}.getType();
class C {
@Inject
- public void set(@SuppressWarnings("rawtypes") @Reference(Integer.class) Collection<ReferenceServiceObjects> m) {};
+ public void set(@SuppressWarnings("rawtypes") @Reference(Integer.class) Collection<BeanServiceObjects> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -708,12 +704,12 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_collectionWithServiceDefined_wildcard() throws Exception {
Type type = new TypeReference<
- Collection<ReferenceServiceObjects<?>>
+ Collection<BeanServiceObjects<?>>
>(){}.getType();
class C {
@Inject
- public void set(@Reference(Integer.class) Collection<ReferenceServiceObjects<?>> m) {};
+ public void set(@Reference(Integer.class) Collection<BeanServiceObjects<?>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -732,12 +728,12 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_collectionWithServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- Collection<ReferenceServiceObjects<Integer>>
+ Collection<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
- public void set(@Reference(Integer.class) Collection<ReferenceServiceObjects<Integer>> m) {};
+ public void set(@Reference(Integer.class) Collection<BeanServiceObjects<Integer>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -757,7 +753,7 @@ public class ReferenceModel_ReferenceSer
public void p_collectionWithServiceDefined_wrongtype() throws Exception {
class C {
@Inject
- public void set(@Reference(Integer.class) Collection<ReferenceServiceObjects<Foo>> m) {};
+ public void set(@Reference(Integer.class) Collection<BeanServiceObjects<Foo>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Collection.class).getParameters()[0]);
@@ -770,7 +766,7 @@ public class ReferenceModel_ReferenceSer
class C {
@SuppressWarnings("rawtypes")
@Inject
- public void set(@Reference List<ReferenceServiceObjects> m) {};
+ public void set(@Reference List<BeanServiceObjects> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -782,7 +778,7 @@ public class ReferenceModel_ReferenceSer
public void p_listWithoutServiceDefined_wildcard() throws Exception {
class C {
@Inject
- public void set(@Reference List<ReferenceServiceObjects<?>> m) {};
+ public void set(@Reference List<BeanServiceObjects<?>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -793,12 +789,12 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_listWithoutServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- List<ReferenceServiceObjects<Foo>>
+ List<BeanServiceObjects<Foo>>
>(){}.getType();
class C {
@Inject
- public void set(@Reference List<ReferenceServiceObjects<Foo>> m) {};
+ public void set(@Reference List<BeanServiceObjects<Foo>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -818,13 +814,13 @@ public class ReferenceModel_ReferenceSer
public void p_listWithServiceDefined_raw() throws Exception {
@SuppressWarnings("rawtypes")
Type type = new TypeReference<
- List<ReferenceServiceObjects>
+ List<BeanServiceObjects>
>(){}.getType();
class C {
@SuppressWarnings("rawtypes")
@Inject
- public void set(@Reference(Integer.class) List<ReferenceServiceObjects> m) {};
+ public void set(@Reference(Integer.class) List<BeanServiceObjects> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -843,12 +839,12 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_listWithServiceDefined_wildcard() throws Exception {
Type type = new TypeReference<
- List<ReferenceServiceObjects<?>>
+ List<BeanServiceObjects<?>>
>(){}.getType();
class C {
@Inject
- public void set(@Reference(Integer.class) List<ReferenceServiceObjects<?>> m) {};
+ public void set(@Reference(Integer.class) List<BeanServiceObjects<?>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -867,12 +863,12 @@ public class ReferenceModel_ReferenceSer
@Test
public void p_listWithServiceDefined_typed() throws Exception {
Type type = new TypeReference<
- List<ReferenceServiceObjects<Integer>>
+ List<BeanServiceObjects<Integer>>
>(){}.getType();
class C {
@Inject
- public void set(@Reference(Integer.class) List<ReferenceServiceObjects<Integer>> m) {};
+ public void set(@Reference(Integer.class) List<BeanServiceObjects<Integer>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -892,7 +888,7 @@ public class ReferenceModel_ReferenceSer
public void p_listWithServiceDefined_wrongtype() throws Exception {
class C {
@Inject
- public void set(@Reference(Integer.class) List<ReferenceServiceObjects<Foo>> m) {};
+ public void set(@Reference(Integer.class) List<BeanServiceObjects<Foo>> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", List.class).getParameters()[0]);
@@ -905,7 +901,7 @@ public class ReferenceModel_ReferenceSer
class C {
@SuppressWarnings("rawtypes")
@Inject
- public void set(@Reference Instance<ReferenceServiceObjects> m) {};
+ public void set(@Reference Instance<BeanServiceObjects> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Instance.class).getParameters()[0]);
@@ -918,7 +914,7 @@ public class ReferenceModel_ReferenceSer
class C {
@SuppressWarnings("rawtypes")
@Inject
- public void set(@Reference Instance<ReferenceServiceObjects> m) {};
+ public void set(@Reference Instance<BeanServiceObjects> m) {};
}
InjectionPoint injectionPoint = new MockInjectionPoint(C.class.getMethod("set", Instance.class).getParameters()[0]);
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarAnnotated.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarAnnotated.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarAnnotated.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarAnnotated.java Wed Apr 18 15:13:46 2018
@@ -28,7 +28,7 @@ import org.osgi.service.cdi.Configuratio
import org.osgi.service.cdi.annotations.Configuration;
import org.osgi.service.cdi.annotations.Greedy;
import org.osgi.service.cdi.annotations.PID;
-import org.osgi.service.cdi.annotations.Prototype;
+import org.osgi.service.cdi.annotations.PrototypeRequired;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
@@ -52,7 +52,7 @@ public class BarAnnotated {
Collection<Map.Entry<Map<String, Object>, Integer>> tupleIntegers;
@Inject
- @Prototype
+ @PrototypeRequired
@Reference
Collection<ServiceReference<Foo>> serviceReferencesFoos;
Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarProducer.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarProducer.java?rev=1829454&r1=1829453&r2=1829454&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarProducer.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/beans/BarProducer.java Wed Apr 18 15:13:46 2018
@@ -14,14 +14,16 @@
package org.apache.aries.cdi.container.test.beans;
+import static org.osgi.service.cdi.ServiceInstanceType.*;
+
import java.math.BigDecimal;
import javax.enterprise.inject.Produces;
import org.apache.aries.cdi.extra.propertytypes.ServiceRanking;
-import org.osgi.service.cdi.annotations.Bundle;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.ServiceInstance;
public class BarProducer {
@Produces
@@ -32,7 +34,7 @@ public class BarProducer {
@Produces
@Service(Integer.class)
- @Bundle
+ @ServiceInstance(BUNDLE)
@ServiceRanking(100)
Number fum = new BigDecimal(25);