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 [2/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...

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java Thu Sep 20 19:34:35 2018
@@ -41,8 +41,6 @@ public class ConfigurationTests extends
 	@Before
 	@Override
 	public void setUp() throws Exception {
-		testHeader();
-
 		runtimeTracker = new ServiceTracker<>(
 			bundleContext, CDIComponentRuntime.class, null);
 		runtimeTracker.open();

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java Thu Sep 20 19:34:35 2018
@@ -33,8 +33,6 @@ public class DisableComponentTests exten
 	@Before
 	@Override
 	public void setUp() throws Exception {
-		testHeader();
-
 		adminTracker = new ServiceTracker<>(bundleContext, ConfigurationAdmin.class, null);
 		adminTracker.open();
 		configurationAdmin = adminTracker.getService();

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/EventsTests.java Thu Sep 20 19:34:35 2018
@@ -32,8 +32,6 @@ public class EventsTests extends Abstrac
 	@Override
 	@Before
 	public void setUp() throws Exception {
-		testHeader();
-
 		cdiRuntime = runtimeTracker.waitForService(timeout);
 	}
 

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java Thu Sep 20 19:34:35 2018
@@ -33,8 +33,6 @@ public class FactoryComponentTests exten
 	@Before
 	@Override
 	public void setUp() throws Exception {
-		testHeader();
-
 		adminTracker = new ServiceTracker<>(bundleContext, ConfigurationAdmin.class, null);
 		adminTracker.open();
 		configurationAdmin = adminTracker.getService();

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java Thu Sep 20 19:34:35 2018
@@ -72,7 +72,7 @@ public class JndiExtensionTests extends
 			Thread.sleep(20);
 		}
 
-		assertNull(bmTracker.getService());
+		assertTrue(bmTracker.isEmpty());
 
 		trackingCount = bmTracker.getTrackingCount();
 
@@ -82,7 +82,7 @@ public class JndiExtensionTests extends
 			Thread.sleep(100);
 		}
 
-		assertNotNull(bmTracker.getService());
+		assertFalse(bmTracker.isEmpty());
 	}
 
 }
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OptionalReluctantReferenceTests.java Thu Sep 20 19:34:35 2018
@@ -35,8 +35,6 @@ public class OptionalReluctantReferenceT
 	@Override
 	@Before
 	public void setUp() throws Exception {
-		testHeader();
-
 		cdiRuntime = runtimeTracker.waitForService(timeout);
 	}
 

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_2.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,43 @@
+package org.apache.aries.cdi.test.cases;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.service.cdi.runtime.dto.ContainerDTO;
+
+public class Test152_2 extends AbstractTestCase {
+
+	@Test
+	public void checkUniqueComponentNames() throws Exception {
+		Bundle tb152_2Bundle = installBundle("tb152_2.jar");
+
+		try {
+			getBeanManager(tb152_2Bundle);
+
+			ContainerDTO containerDTO = getContainerDTO(cdiRuntime, tb152_2Bundle);
+			assertThat(containerDTO).isNotNull();
+			assertThat(containerDTO.errors).isNotNull().asList().isNotEmpty();
+		}
+		finally {
+			tb152_2Bundle.uninstall();
+		}
+	}
+
+	@Test
+	public void checkUniqueComponentNames_b() throws Exception {
+		Bundle tb152_2bBundle = installBundle("tb152_2b.jar");
+
+		try {
+			getBeanManager(tb152_2bBundle);
+
+			ContainerDTO containerDTO = getContainerDTO(cdiRuntime, tb152_2bBundle);
+			assertThat(containerDTO).isNotNull();
+			assertThat(containerDTO.errors).isNotNull().asList().isNotEmpty();
+		}
+		finally {
+			tb152_2bBundle.uninstall();
+		}
+	}
+
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,60 @@
+package org.apache.aries.cdi.test.cases;
+
+import static org.assertj.core.api.Assertions.*;
+
+import javax.enterprise.context.spi.Context;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class Test152_3 extends AbstractTestCase {
+
+	@BeforeClass
+	public static void beforeClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void afterClass() throws Exception {
+	}
+
+	@Override
+	public void setUp() throws Exception {
+	}
+
+	@After
+	@Override
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void componentScopeContext() throws Exception {
+		Bundle tbBundle = installBundle("tb152_3.jar");
+
+		try {
+			getBeanManager(tbBundle);
+
+			ServiceTracker<Object, Object> oneTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "one");
+			oneTracker.open();
+			Object service = oneTracker.waitForService(timeout);
+
+			ServiceTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two");
+			twoTracker.open();
+			twoTracker.waitForService(timeout);
+
+			assertThat(service).isNotNull();
+			BeanService<Context> bs = (BeanService<Context>)service;
+			Context context = bs.get();
+			assertThat(context).isNotNull();
+		}
+		finally {
+			tbBundle.uninstall();
+		}
+	}
+
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,273 @@
+package org.apache.aries.cdi.test.cases;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.Hashtable;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
+
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.EventMetadata;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.cdi.annotations.ComponentScoped;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class Test152_3_1 extends AbstractTestCase {
+
+	@BeforeClass
+	public static void beforeClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void afterClass() throws Exception {
+	}
+
+	@Override
+	public void setUp() throws Exception {
+		adminTracker = new ServiceTracker<>(bundleContext, ConfigurationAdmin.class, null);
+		adminTracker.open();
+		configurationAdmin = adminTracker.getService();
+	}
+
+	@After
+	@Override
+	public void tearDown() throws Exception {
+		adminTracker.close();
+	}
+
+	@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
+	@Test
+	public void checkSingleComponentContextEvents() throws Exception {
+		Bundle tb152_3_1Bundle = installBundle("tb152_3_1.jar");
+
+		AtomicReference<Object[]> a = new AtomicReference<>();
+		AtomicReference<Object[]> b = new AtomicReference<>();
+		AtomicReference<Object[]> c = new AtomicReference<>();
+
+		Function onInitialized = (o) -> {
+			Object[] values = (Object[])o;
+			BeanManager bm = (BeanManager)values[1];
+			a.set(new Object[] {values[0], bm.getContext(ComponentScoped.class).isActive(), values[2]});
+			return null;
+		};
+		Function onBeforeDestroyed = (o) -> {
+			Object[] values = (Object[])o;
+			BeanManager bm = (BeanManager)values[1];
+			b.set(new Object[] {values[0], bm.getContext(ComponentScoped.class).isActive(), values[2]});
+			return null;
+		};
+		Function onDestroyed = (o) -> {
+			Object[] values = (Object[])o;
+			BeanManager bm = (BeanManager)values[1];
+			c.set(new Object[] {values[0], bm.getContext(ComponentScoped.class).isActive(), values[2]});
+			return null;
+		};
+
+		ServiceRegistration<Function> onInitializedReg = bundleContext.registerService(
+			Function.class, onInitialized,
+			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
+
+		ServiceRegistration<Function> onBeforeDestroyedReg = bundleContext.registerService(
+			Function.class, onBeforeDestroyed,
+			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
+
+		ServiceRegistration<Function> onDestroyedReg = bundleContext.registerService(
+			Function.class, onDestroyed,
+			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
+
+		try {
+			getBeanManager(tb152_3_1Bundle);
+
+			assertThat(a.get()).isNull();
+			assertThat(b.get()).isNull();
+			assertThat(c.get()).isNull();
+
+			ServiceTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two");
+			twoTracker.open();
+			int trackingCount = twoTracker.getTrackingCount();
+
+			ServiceRegistration<Integer> integerReg = bundleContext.registerService(
+				Integer.class, new Integer(45),
+				new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "two");}});
+
+			while (trackingCount == twoTracker.getTrackingCount()) {Thread.sleep(50);}
+			trackingCount = twoTracker.getTrackingCount();
+
+			assertThat(a.get()).isNotNull();
+			assertThat(a.get()[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Two"));
+			assertThat(a.get()[1]).isEqualTo(true);
+			assertThat(b.get()).isNull();
+			assertThat(c.get()).isNull();
+
+			integerReg.unregister();
+
+			while (trackingCount == twoTracker.getTrackingCount()) {Thread.sleep(50);}
+
+			Object[] objects = a.get();
+			assertThat(objects).isNotNull();
+			assertThat(objects.length).isEqualTo(3);
+			assertThat((BeanService<Integer>)objects[0]).satisfies(bs -> bs.doSomething().equals("POST_CONSTRUCTED"));
+			assertThat(objects[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Two"));
+			assertThat(objects[1]).isEqualTo(true);
+			EventMetadata eventMetadata = (EventMetadata)objects[2];
+			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
+
+			objects = b.get();
+			assertThat(objects).isNotNull();
+			assertThat(objects.length).isEqualTo(3);
+			assertThat((BeanService<Integer>)objects[0]).satisfies(bs -> bs.doSomething().equals("POST_CONSTRUCTED"));
+			assertThat(objects[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Two"));
+			assertThat(objects[1]).isEqualTo(true);
+			eventMetadata = (EventMetadata)objects[2];
+			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
+
+			objects = c.get();
+			assertThat(objects).isNotNull();
+			assertThat(objects.length).isEqualTo(3);
+			assertThat((BeanService<Integer>)objects[0]).satisfies(bs -> bs.doSomething().equals("DESTROYED"));
+			assertThat(objects[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Two"));
+			assertThat(objects[1]).isEqualTo(true);
+			eventMetadata = (EventMetadata)objects[2];
+			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
+		}
+		finally {
+			onInitializedReg.unregister();
+			onBeforeDestroyedReg.unregister();
+			onDestroyedReg.unregister();
+			tb152_3_1Bundle.uninstall();
+		}
+	}
+
+	@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
+	@Test
+	public void checkFactoryComponentContextEvents() throws Exception {
+		Bundle tb152_3_1Bundle = installBundle("tb152_3_1.jar");
+
+		AtomicReference<Object[]> a = new AtomicReference<>();
+		AtomicReference<Object[]> b = new AtomicReference<>();
+		AtomicReference<Object[]> c = new AtomicReference<>();
+
+		Function onInitialized = (o) -> {
+			Object[] values = (Object[])o;
+			BeanManager bm = (BeanManager)values[1];
+			a.set(new Object[] {values[0], bm.getContext(ComponentScoped.class).isActive(), values[2]});
+			return null;
+		};
+		Function onBeforeDestroyed = (o) -> {
+			Object[] values = (Object[])o;
+			BeanManager bm = (BeanManager)values[1];
+			b.set(new Object[] {values[0], bm.getContext(ComponentScoped.class).isActive(), values[2]});
+			return null;
+		};
+		Function onDestroyed = (o) -> {
+			Object[] values = (Object[])o;
+			BeanManager bm = (BeanManager)values[1];
+			c.set(new Object[] {values[0], bm.getContext(ComponentScoped.class).isActive(), values[2]});
+			return null;
+		};
+
+		ServiceRegistration<Function> onInitializedReg = bundleContext.registerService(
+			Function.class, onInitialized,
+			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onInitialized");}});
+
+		ServiceRegistration<Function> onBeforeDestroyedReg = bundleContext.registerService(
+			Function.class, onBeforeDestroyed,
+			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onBeforeDestroyed");}});
+
+		ServiceRegistration<Function> onDestroyedReg = bundleContext.registerService(
+			Function.class, onDestroyed,
+			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
+
+		Configuration configuration = null;
+
+		try {
+			getBeanManager(tb152_3_1Bundle);
+
+			assertThat(a.get()).isNull();
+			assertThat(b.get()).isNull();
+			assertThat(c.get()).isNull();
+
+			ServiceTracker<Object, Object> threeTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "three");
+			threeTracker.open();
+			int trackingCount = threeTracker.getTrackingCount();
+
+			ServiceRegistration<Integer> integerReg = bundleContext.registerService(
+				Integer.class, new Integer(45),
+				new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "three");}});
+
+			int count = 10;
+			while ((count-- > 0) && trackingCount == threeTracker.getTrackingCount()) {Thread.sleep(50);}
+			trackingCount = threeTracker.getTrackingCount();
+
+			assertThat(a.get()).isNull();
+			assertThat(b.get()).isNull();
+			assertThat(c.get()).isNull();
+
+			configuration = configurationAdmin.createFactoryConfiguration("three");
+			configuration.update(new Hashtable() {{put("foo", "bar");}});
+
+			count = 10;
+			while ((count-- > 0) && trackingCount == threeTracker.getTrackingCount()) {Thread.sleep(50);}
+			trackingCount = threeTracker.getTrackingCount();
+
+			assertThat(a.get()).isNotNull();
+			assertThat(a.get()[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Three"));
+			assertThat(a.get()[1]).isEqualTo(true);
+			assertThat(b.get()).isNull();
+			assertThat(c.get()).isNull();
+
+			integerReg.unregister();
+
+			while (trackingCount == threeTracker.getTrackingCount()) {Thread.sleep(50);}
+
+			Object[] objects = a.get();
+			assertThat(objects).isNotNull();
+			assertThat(objects.length).isEqualTo(3);
+			assertThat((BeanService<Integer>)objects[0]).satisfies(bs -> bs.doSomething().equals("POST_CONSTRUCTED"));
+			assertThat(objects[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Three"));
+			assertThat(objects[1]).isEqualTo(true);
+			EventMetadata eventMetadata = (EventMetadata)objects[2];
+			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
+
+			objects = b.get();
+			assertThat(objects).isNotNull();
+			assertThat(objects.length).isEqualTo(3);
+			assertThat((BeanService<Integer>)objects[0]).satisfies(bs -> bs.doSomething().equals("POST_CONSTRUCTED"));
+			assertThat(objects[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Three"));
+			assertThat(objects[1]).isEqualTo(true);
+			eventMetadata = (EventMetadata)objects[2];
+			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
+
+			objects = c.get();
+			assertThat(objects).isNotNull();
+			assertThat(objects.length).isEqualTo(3);
+			assertThat((BeanService<Integer>)objects[0]).satisfies(bs -> bs.doSomething().equals("DESTROYED"));
+			assertThat(objects[0]).satisfies(o -> o.getClass().getName().equals("org.apache.aries.cdi.test.tb152_3_1.Three"));
+			assertThat(objects[1]).isEqualTo(true);
+			eventMetadata = (EventMetadata)objects[2];
+			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
+		}
+		finally {
+			configuration.delete();
+			onInitializedReg.unregister();
+			onBeforeDestroyedReg.unregister();
+			onDestroyedReg.unregister();
+			tb152_3_1Bundle.uninstall();
+		}
+	}
+
+	private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> adminTracker;
+	private ConfigurationAdmin configurationAdmin;
+
+}

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java Thu Sep 20 19:34:35 2018
@@ -25,6 +25,7 @@ import org.osgi.service.cdi.annotations.
 import org.osgi.service.cdi.annotations.Service;
 import org.osgi.service.cdi.annotations.SingleComponent;
 import org.osgi.service.cdi.reference.BindServiceReference;
+import org.osgi.service.log.Logger;
 
 @Bean
 @Service
@@ -32,22 +33,22 @@ import org.osgi.service.cdi.reference.Bi
 public class SingleReferenceEventHandler implements Pojo {
 
 	@Inject
-	void integers(BindServiceReference<Integer> binder) {
+	void integers(BindServiceReference<Integer> binder, Logger logger) {
 		binder.adding(
 			sr -> {
-				System.out.println("=====ADDING==>>> " + sr + " " + SingleReferenceEventHandler.this);
+				logger.info("=====ADDING==>>> {} {}", sr, SingleReferenceEventHandler.this);
 
 				_services.put(sr, "ADDED");
 			}
 		).modified(
 			sr -> {
-				System.out.println("=====UPDATING==>>> " + sr + " " + SingleReferenceEventHandler.this);
+				logger.info("=====UPDATING==>>> {} {}", sr, SingleReferenceEventHandler.this);
 
 				_services.put(sr, "UPDATED");
 			}
 		).removed(
 			sr -> {
-				System.out.println("=====REMOVING==>>> " + sr + " " + SingleReferenceEventHandler.this);
+				logger.info("=====REMOVING==>>> {} {}", sr, SingleReferenceEventHandler.this);
 
 				_services.remove(sr);
 			}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/One.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/One.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/One.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/One.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,12 @@
+package org.apache.aries.cdi.test.tb152_2;
+
+import javax.inject.Named;
+
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.SingleComponent;
+
+@Bean
+@Named("same")
+@SingleComponent
+public class One {
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/Two.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/Two.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/Two.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2/Two.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,12 @@
+package org.apache.aries.cdi.test.tb152_2;
+
+import javax.inject.Named;
+
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.SingleComponent;
+
+@Bean
+@Named("same")
+@SingleComponent
+public class Two {
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/One.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/One.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/One.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/One.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,9 @@
+package org.apache.aries.cdi.test.tb152_2b;
+
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.SingleComponent;
+
+@Bean
+@SingleComponent
+public class One {
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/Two.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/Two.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/Two.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_2b/Two.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,12 @@
+package org.apache.aries.cdi.test.tb152_2b;
+
+import javax.inject.Named;
+
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.SingleComponent;
+
+@Bean
+@Named("one")
+@SingleComponent
+public class Two {
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/One.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/One.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/One.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/One.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,37 @@
+package org.apache.aries.cdi.test.tb152_3;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.context.spi.Context;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.BeanManager;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.ComponentScoped;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.propertytypes.ServiceDescription;
+
+@ApplicationScoped
+@Bean
+@Service
+@ServiceDescription("one")
+public class One implements BeanService<Context> {
+
+	private Context _context;
+
+	void onComponent(@Observes @Initialized(ComponentScoped.class) Object obj, BeanManager bm) {
+		_context = bm.getContext(ComponentScoped.class);
+	}
+
+	@Override
+	public String doSomething() {
+		return _context.toString();
+	}
+
+	@Override
+	public Context get() {
+		return _context;
+	}
+
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/Two.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/Two.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/Two.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3/Two.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,25 @@
+package org.apache.aries.cdi.test.tb152_3;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
+import org.osgi.service.cdi.propertytypes.ServiceDescription;
+
+@Bean
+@Service
+@ServiceDescription("two")
+@SingleComponent
+public class Two implements BeanService<Boolean> {
+
+	@Override
+	public String doSomething() {
+		return "";
+	}
+
+	@Override
+	public Boolean get() {
+		return Boolean.TRUE;
+	}
+
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/One.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/One.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/One.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/One.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,51 @@
+package org.apache.aries.cdi.test.tb152_3_1;
+
+import java.util.function.Function;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.BeforeDestroyed;
+import javax.enterprise.context.Destroyed;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.EventMetadata;
+import javax.inject.Inject;
+
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.ComponentScoped;
+import org.osgi.service.cdi.annotations.Reference;
+import org.osgi.service.cdi.propertytypes.ServiceDescription;
+
+@ApplicationScoped
+@Bean
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class One {
+
+	@Inject
+	@Reference
+	@ServiceDescription("onInitialized")
+	Function onInitialized;
+
+	@Inject
+	@Reference
+	@ServiceDescription("onBeforeDestroyed")
+	Function onBeforeDestroyed;
+
+	@Inject
+	@Reference
+	@ServiceDescription("onDestroyed")
+	Function onDestroyed;
+
+	void onInitialized(@Observes @Initialized(ComponentScoped.class) Object obj, EventMetadata metadata, BeanManager bm) {
+		onInitialized.apply(new Object[] {obj, bm, metadata});
+	}
+
+	void onBeforeDestroyed(@Observes @BeforeDestroyed(ComponentScoped.class) Object obj, EventMetadata metadata, BeanManager bm) {
+		onBeforeDestroyed.apply(new Object[] {obj, bm, metadata});
+	}
+
+	void onDestroyed(@Observes @Destroyed(ComponentScoped.class) Object obj, EventMetadata metadata, BeanManager bm) {
+		onDestroyed.apply(new Object[] {obj, bm, metadata});
+	}
+
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Three.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Three.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Three.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Three.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,50 @@
+package org.apache.aries.cdi.test.tb152_3_1;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.osgi.service.cdi.annotations.Bean;
+import org.osgi.service.cdi.annotations.FactoryComponent;
+import org.osgi.service.cdi.annotations.Reference;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.propertytypes.ServiceDescription;
+
+@Bean
+@Service
+@ServiceDescription("three")
+@FactoryComponent
+public class Three implements BeanService<Integer> {
+
+	private volatile String status;
+
+	public Three() {
+		status = "CONSTRUCTED";
+	}
+
+	@Override
+	public String doSomething() {
+		return status;
+	}
+
+	@Override
+	public Integer get() {
+		return number;
+	}
+
+	@PostConstruct
+	void postConstruct() {
+		status = "POST_CONSTRUCTED";
+	}
+
+	@PreDestroy
+	void preDestroy() {
+		status = "DESTROYED";
+	}
+
+	@Inject
+	@Reference
+	@ServiceDescription("three")
+	Integer number;
+}

Added: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Two.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Two.java?rev=1841503&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Two.java (added)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb152_3_1/Two.java Thu Sep 20 19:34:35 2018
@@ -0,0 +1,50 @@
+package org.apache.aries.cdi.test.tb152_3_1;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.osgi.service.cdi.annotations.Bean;
+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.cdi.propertytypes.ServiceDescription;
+
+@Bean
+@Service
+@ServiceDescription("two")
+@SingleComponent
+public class Two implements BeanService<Integer> {
+
+	private volatile String status;
+
+	public Two() {
+		status = "CONSTRUCTED";
+	}
+
+	@Override
+	public String doSomething() {
+		return status;
+	}
+
+	@Override
+	public Integer get() {
+		return number;
+	}
+
+	@PostConstruct
+	void postConstruct() {
+		status = "POST_CONSTRUCTED";
+	}
+
+	@PreDestroy
+	void preDestroy() {
+		status = "DESTROYED";
+	}
+
+	@Inject
+	@Reference
+	@ServiceDescription("two")
+	Integer number;
+}

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java?rev=1841503&r1=1841502&r2=1841503&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java Thu Sep 20 19:34:35 2018
@@ -24,6 +24,7 @@ import org.osgi.framework.ServiceReferen
 import org.osgi.service.cdi.annotations.Bean;
 import org.osgi.service.cdi.annotations.Service;
 import org.osgi.service.cdi.reference.BindServiceReference;
+import org.osgi.service.log.Logger;
 
 @Bean
 @ApplicationScoped
@@ -31,22 +32,22 @@ import org.osgi.service.cdi.reference.Bi
 public class ContainerReferenceEventHandler implements Pojo {
 
 	@Inject
-	void integers(BindServiceReference<Integer> binder) {
+	void integers(BindServiceReference<Integer> binder, Logger logger) {
 		binder.adding(
 			sr -> {
-				System.out.println("=====ADDING==>>> " + sr);
+				logger.info("=====ADDING==>>> {}", sr);
 
 				_services.put(sr, "ADDED");
 			}
 		).modified(
 			sr -> {
-				System.out.println("=====UPDATING==>>> " + sr);
+				logger.info("=====UPDATING==>>> {}", sr);
 
 				_services.put(sr, "UPDATED");
 			}
 		).removed(
 			sr -> {
-				System.out.println("=====REMOVING==>>> " + sr);
+				logger.info("=====REMOVING==>>> {}", sr);
 
 				_services.remove(sr);
 			}