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=1829115&r1=1829114&r2=1829115&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
 Sat Apr 14 01:10:27 2018
@@ -14,20 +14,54 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.*;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.concurrent.Callable;
+import java.util.stream.Collectors;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
 import org.osgi.framework.Bundle;
+import org.osgi.service.cdi.ConfigurationPolicy;
+import org.osgi.service.cdi.runtime.CDIComponentRuntime;
+import org.osgi.service.cdi.runtime.dto.ComponentDTO;
+import org.osgi.service.cdi.runtime.dto.ContainerDTO;
+import org.osgi.service.cdi.runtime.dto.template.ConfigurationTemplateDTO;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.util.tracker.ServiceTracker;
 
 public class ConfigurationTests extends AbstractTestCase {
 
+       @Before
+       @Override
+       public void setUp() throws Exception {
+               testHeader();
+
+               runtimeTracker = new ServiceTracker<>(
+                       bundleContext, CDIComponentRuntime.class, null);
+               runtimeTracker.open();
+
+               cdiRuntime = runtimeTracker.waitForService(timeout);
+
+               adminTracker = new ServiceTracker<>(bundleContext, 
ConfigurationAdmin.class, null);
+               adminTracker.open();
+               configurationAdmin = adminTracker.getService();
+       }
+
+       @After
+       @Override
+       public void tearDown() throws Exception {
+               runtimeTracker.close();
+               adminTracker.close();
+       }
+
+       @Test
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public void testConfiguration() throws Exception {
                Bundle tb3Bundle = installBundle("tb3.jar");
@@ -35,26 +69,50 @@ public class ConfigurationTests extends
                Configuration configurationA = null, configurationB = null;
 
                try {
-                       containerDTO = getContainerDTO();
-
-//                     assertEquals(
-//                             WAITING_FOR_CONFIGURATIONS,
-//                             containerDTO...);
+                       int attempts = 50;
+                       ComponentDTO configurationBeanA = null;
 
-                       configurationA = 
configurationAdmin.getConfiguration("org.apache.aries.cdi.test.tb3.ConfigurationBeanA",
 "?");
-
-                       Dictionary<String, Object> properties = new 
Hashtable<>();
-                       properties.put("ports", new int[] {12, 4567});
-                       configurationA.update(properties);
+                       while (--attempts > 0) {
+                               ContainerDTO containerDTO = 
cdiRuntime.getContainerDTO(tb3Bundle);
 
-                       configurationB = 
configurationAdmin.getConfiguration("org.apache.aries.cdi.test.tb3.ConfigurationBeanB",
 "?");
+                               configurationBeanA = 
containerDTO.components.stream().filter(
+                                       c -> 
c.template.name.equals("configurationBeanA")
+                               ).findFirst().orElse(null);
 
-                       properties = new Hashtable<>();
-                       properties.put("color", "green");
-                       properties.put("ports", new int[] {80});
-                       configurationB.update(properties);
+                               if (configurationBeanA != null) {
+                                       break;
+                               }
+                               Thread.sleep(100);
+                       }
 
-                       // after this we should eventually get the bean 
manager...
+                       List<ConfigurationTemplateDTO> requiredConfigs = 
configurationBeanA.template.configurations.stream().filter(
+                               tconf -> tconf.policy == 
ConfigurationPolicy.REQUIRED
+                       ).collect(Collectors.toList());
+
+                       assertTrue(
+                               
configurationBeanA.instances.get(0).configurations.stream().noneMatch(
+                                       iconf -> 
requiredConfigs.stream().anyMatch(rc -> rc == iconf.template)
+                               )
+                       );
+
+                       configurationA = 
configurationAdmin.getConfiguration("configurationBeanA", "?");
+
+                       Dictionary<String, Object> p1 = new Hashtable<>();
+                       p1.put("ports", new int[] {12, 4567});
+                       configurationA.update(p1);
+
+                       assertTrue(
+                               
configurationBeanA.instances.get(0).configurations.stream().allMatch(
+                                       iconf -> 
requiredConfigs.stream().anyMatch(rc -> rc == iconf.template)
+                               )
+                       );
+
+                       configurationB = 
configurationAdmin.getConfiguration("configurationBeanB", "?");
+
+                       Dictionary<String, Object> p2 = new Hashtable<>();
+                       p2.put("color", "green");
+                       p2.put("ports", new int[] {80});
+                       configurationB.update(p2);
 
                        ServiceTracker<BeanService, BeanService> stA = new 
ServiceTracker<BeanService, BeanService>(
                                bundleContext, bundleContext.createFilter(
@@ -99,6 +157,7 @@ public class ConfigurationTests extends
                }
        }
 
+       @Test
        @SuppressWarnings({ "rawtypes", "unchecked" })
        public void testOptionalConfiguration() throws Exception {
                Bundle tb5Bundle = installBundle("tb5.jar");
@@ -106,11 +165,7 @@ public class ConfigurationTests extends
                Configuration configurationC = null;
 
                try {
-                       containerDTO = getContainerDTO();
-
-//                     assertEquals(
-//                             SHOULD BE OK,
-//                             containerDTO...);
+                       Thread.sleep(1000); // <---- TODO fix this
 
                        ServiceTracker<BeanService, BeanService> stC = new 
ServiceTracker<BeanService, BeanService>(
                                bundleContext, bundleContext.createFilter(
@@ -167,20 +222,6 @@ public class ConfigurationTests extends
                }
        }
 
-       @Override
-       protected void setUp() throws Exception {
-               adminTracker = new ServiceTracker<>(bundleContext, 
ConfigurationAdmin.class, null);
-
-               adminTracker.open();
-
-               configurationAdmin = adminTracker.getService();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               adminTracker.close();
-       }
-
        private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> 
adminTracker;
        private ConfigurationAdmin configurationAdmin;
 

Added: 
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=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
 (added)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/DisableComponentTests.java
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,168 @@
+/**
+ * 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.test.cases;
+
+import static org.junit.Assert.*;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class DisableComponentTests extends AbstractTestCase {
+
+       @Before
+       @Override
+       public void setUp() throws Exception {
+               testHeader();
+
+               adminTracker = new ServiceTracker<>(bundleContext, 
ConfigurationAdmin.class, null);
+               adminTracker.open();
+               configurationAdmin = adminTracker.getService();
+       }
+
+       @After
+       @Override
+       public void tearDown() throws Exception {
+               adminTracker.close();
+       }
+
+       @Test
+       public void testDisableContainerComponent() throws Exception {
+               Bundle tb8Bundle = installBundle("tb8.jar");
+
+               ServiceTracker<Pojo, Pojo> tracker = track(
+                       
"(&(objectClass=%s)(objectClass=*.%s)(service.bundleid=%s))",
+                       Pojo.class.getName(),
+                       "ContainerBean",
+                       tb8Bundle.getBundleId());
+
+               Pojo pojo = tracker.waitForService(timeout);
+
+               assertNotNull(pojo);
+
+               Configuration configurationA = null;
+
+               try {
+                       configurationA = 
configurationAdmin.getConfiguration("osgi.cdi.cdi-itests.tb8", "?");
+
+                       Dictionary<String, Object> p1 = new Hashtable<>();
+                       p1.put("cdi-itests.tb8.enabled", false);
+
+                       configurationA.update(p1);
+
+                       for (int i = 20; (i > 0) && (!tracker.isEmpty()); i--) {
+                               Thread.sleep(200);
+                       }
+
+                       pojo = tracker.getService();
+
+                       assertNull(pojo);
+
+                       p1 = new Hashtable<>();
+                       p1.put("containerBean.enabled", true);
+
+                       configurationA.update(p1);
+
+                       for (int i = 30; (i > 0) && (tracker.isEmpty()); i--) {
+                               Thread.sleep(20);
+                       }
+
+                       pojo = tracker.getService();
+
+                       assertNotNull(pojo);
+               }
+               finally {
+                       if (configurationA != null) {
+                               try {
+                                       configurationA.delete();
+                               }
+                               catch (Exception e) {
+                                       // ignore
+                               }
+                       }
+                       tb8Bundle.uninstall();
+               }
+       }
+
+       @Test
+       public void testDisableSingleComponent() throws Exception {
+               Bundle tb8Bundle = installBundle("tb8.jar");
+
+               ServiceTracker<Pojo, Pojo> tracker = track(
+                       
"(&(objectClass=%s)(objectClass=*.%s)(service.bundleid=%s))",
+                       Pojo.class.getName(),
+                       "SingleComponentBean",
+                       tb8Bundle.getBundleId());
+
+               Pojo pojo = tracker.waitForService(timeout);
+
+               assertNotNull(pojo);
+
+               Configuration configurationA = null;
+
+               try {
+                       configurationA = 
configurationAdmin.getConfiguration("osgi.cdi.cdi-itests.tb8", "?");
+
+                       Dictionary<String, Object> p1 = new Hashtable<>();
+                       p1.put("singleComponentBean.enabled", false);
+
+                       configurationA.update(p1);
+
+                       for (int i = 20; (i > 0) && (!tracker.isEmpty()); i--) {
+                               Thread.sleep(20);
+                       }
+
+                       pojo = tracker.getService();
+
+                       assertNull(pojo);
+
+                       p1 = new Hashtable<>();
+                       p1.put("singleComponentBean.enabled", true);
+
+                       configurationA.update(p1);
+
+                       for (int i = 10; (i > 0) && (tracker.isEmpty()); i--) {
+                               Thread.sleep(20);
+                       }
+
+                       pojo = tracker.getService();
+
+                       assertNotNull(pojo);
+               }
+               finally {
+                       if (configurationA != null) {
+                               try {
+                                       configurationA.delete();
+                               }
+                               catch (Exception e) {
+                                       // ignore
+                               }
+                       }
+                       tb8Bundle.uninstall();
+               }
+       }
+
+       private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> 
adminTracker;
+       private ConfigurationAdmin configurationAdmin;
+
+}

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=1829115&r1=1829114&r2=1829115&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
 Sat Apr 14 01:10:27 2018
@@ -14,41 +14,144 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import java.util.List;
-import java.util.Set;
+import static org.junit.Assert.*;
 
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.util.AnnotationLiteral;
+import java.util.Dictionary;
 
-import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.apache.aries.cdi.test.interfaces.CdiEventObserverQualifier;
+import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.cdi.runtime.dto.ContainerDTO;
+import org.osgi.util.tracker.ServiceTracker;
 
 public class EventsTests extends AbstractTestCase {
 
        @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-               containerDTO = getContainerDTO(cdiBundle);
+       @Before
+       public void setUp() throws Exception {
+               testHeader();
+
+               cdiRuntime = runtimeTracker.waitForService(timeout);
+       }
+
+       @Override
+       @After
+       public void tearDown() throws Exception {
+       }
+
+       @Test
+       public void testContainerComponentReferenceEventHandler() throws 
Exception {
+               Bundle tb = installBundle("tb9.jar");
+
+               try {
+                       ServiceTracker<Pojo, Pojo> tracker = 
track("(objectClass=%s)", Pojo.class.getName());
+
+                       Pojo pojo = tracker.waitForService(timeout);
+
+                       assertEquals(0, pojo.getCount());
+                       assertEquals("[]", pojo.foo(null));
+
+                       ContainerDTO containerDTO = 
cdiRuntime.getContainerDTO(tb);
+
+                       long changeCount = containerDTO.changeCount;
+
+                       ServiceRegistration<Integer> int1 = 
bundleContext.registerService(Integer.class, new Integer(12), null);
+
+                       try {
+                               for (long i = 10; i > 0 && 
(cdiRuntime.getContainerDTO(tb).changeCount == changeCount); i--) {
+                                       Thread.sleep(20);
+                               }
+
+                               assertEquals(1, pojo.getCount());
+                               assertEquals("[ADDED]", pojo.foo(null));
+
+                               changeCount = containerDTO.changeCount;
+
+                               Dictionary<String, Object> properties = 
int1.getReference().getProperties();
+                               properties.put("foo", "bar");
+                               int1.setProperties(properties);
+
+                               for (long i = 10; i > 0 && 
(cdiRuntime.getContainerDTO(tb).changeCount == changeCount); i--) {
+                                       Thread.sleep(20);
+                               }
+
+                               assertEquals("[UPDATED]", pojo.foo(null));
+                       }
+                       finally {
+                               changeCount = containerDTO.changeCount;
+
+                               int1.unregister();
+
+                               for (long i = 10; i > 0 && 
(cdiRuntime.getContainerDTO(tb).changeCount == changeCount); i--) {
+                                       Thread.sleep(20);
+                               }
+
+                               assertEquals(0, pojo.getCount());
+                               assertEquals("[]", pojo.foo(null));
+                       }
+               }
+               finally {
+                       tb.uninstall();
+               }
        }
 
-       public void testEventsGetSent() throws Exception {
-               BeanManager beanManager = getBeanManager(cdiBundle);
+       @Test
+       public void testSingleComponentReferenceEventHandler() throws Exception 
{
+               Bundle tb = installBundle("tb10.jar");
+
+               try {
+                       ServiceTracker<Pojo, Pojo> tracker = 
track("(objectClass=%s)", Pojo.class.getName());
+
+                       Pojo pojo = tracker.waitForService(timeout);
+
+                       assertEquals(0, pojo.getCount());
+                       assertEquals("[]", pojo.foo(null));
+
+                       ContainerDTO containerDTO = 
cdiRuntime.getContainerDTO(tb);
+
+                       long changeCount = containerDTO.changeCount;
+
+                       ServiceRegistration<Integer> int1 = 
bundleContext.registerService(Integer.class, new Integer(12), null);
+
+                       try {
+                               for (long i = 10; i > 0 && 
(cdiRuntime.getContainerDTO(tb).changeCount == changeCount); i--) {
+                                       Thread.sleep(20);
+                               }
+
+                               assertEquals(1, pojo.getCount());
+                               assertEquals("[ADDED]", pojo.foo(null));
+
+                               changeCount = containerDTO.changeCount;
+
+                               Dictionary<String, Object> properties = 
int1.getReference().getProperties();
+                               properties.put("foo", "bar");
+                               int1.setProperties(properties);
+
+                               for (long i = 10; i > 0 && 
(cdiRuntime.getContainerDTO(tb).changeCount == changeCount); i--) {
+                                       Thread.sleep(20);
+                               }
+
+                               assertEquals("[UPDATED]", pojo.foo(null));
+                       }
+                       finally {
+                               changeCount = containerDTO.changeCount;
+
+                               int1.unregister();
 
-               assertNotNull(beanManager);
+                               for (long i = 10; i > 0 && 
(cdiRuntime.getContainerDTO(tb).changeCount == changeCount); i--) {
+                                       Thread.sleep(20);
+                               }
 
-               @SuppressWarnings("serial")
-               Set<Bean<?>> beans = beanManager.getBeans(Object.class, new 
AnnotationLiteral<CdiEventObserverQualifier>() {});
-               Bean<?> bean = beanManager.resolve(beans);
-               CreationalContext<?> ctx = 
beanManager.createCreationalContext(bean);
-               Object bcb = beanManager.getReference(bean, Object.class, ctx);
-               assertNotNull(bcb);
-               @SuppressWarnings("unchecked")
-               BeanService<List<Object>> bti = (BeanService<List<Object>>)bcb;
-               List<Object> list = bti.get();
-               assertNotNull(list);
-               assertEquals(1, list.size());
+                               assertEquals(0, pojo.getCount());
+                               assertEquals("[]", pojo.foo(null));
+                       }
+               }
+               finally {
+                       tb.uninstall();
+               }
        }
 
 }

Added: 
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=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
 (added)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/FactoryComponentTests.java
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,148 @@
+/**
+ * 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.test.cases;
+
+import static org.junit.Assert.*;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.apache.aries.cdi.test.interfaces.BeanService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class FactoryComponentTests extends AbstractTestCase {
+
+       @Before
+       @Override
+       public void setUp() throws Exception {
+               testHeader();
+
+               adminTracker = new ServiceTracker<>(bundleContext, 
ConfigurationAdmin.class, null);
+               adminTracker.open();
+               configurationAdmin = adminTracker.getService();
+       }
+
+       @After
+       @Override
+       public void tearDown() throws Exception {
+               adminTracker.close();
+       }
+
+       @SuppressWarnings("rawtypes")
+       @Test
+       public void testFactoryComponent() throws Exception {
+               Bundle tb7Bundle = installBundle("tb7.jar");
+
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "ConfigurationBeanF");
+
+               BeanService beanService = tracker.waitForService(timeout);
+
+               assertNull(beanService);
+
+               Configuration configurationA = null, configurationB = null;
+
+               try {
+                       configurationA = 
configurationAdmin.getFactoryConfiguration("configurationBeanF", "one");
+
+                       Dictionary<String, Object> p1 = new Hashtable<>();
+                       p1.put("ports", new int[] {12, 4567});
+                       p1.put("instance", "A");
+                       configurationA.update(p1);
+
+                       ServiceTracker<BeanService, BeanService> trackerA = 
track(
+                               
"(&(objectClass=%s)(objectClass=*.%s)(instance=A))",
+                               BeanService.class.getName(),
+                               "ConfigurationBeanF");
+
+                       BeanService beanServiceA = 
trackerA.waitForService(timeout);
+
+                       assertNotNull(beanServiceA);
+
+                       configurationB = 
configurationAdmin.getFactoryConfiguration("configurationBeanF", "two");
+
+                       p1 = new Hashtable<>();
+                       p1.put("ports", new int[] {45689, 1065});
+                       p1.put("instance", "B");
+                       configurationB.update(p1);
+
+                       ServiceTracker<BeanService, BeanService> trackerB = 
track(
+                               
"(&(objectClass=%s)(objectClass=*.%s)(instance=B))",
+                               BeanService.class.getName(),
+                               "ConfigurationBeanF");
+
+                       BeanService beanServiceB = 
trackerB.waitForService(timeout);
+
+                       assertNotNull(beanServiceB);
+
+                       assertFalse(beanServiceA == beanServiceB);
+
+                       int trackingCount = trackerA.getTrackingCount();
+
+                       configurationA.delete();
+
+                       for (int i = 10; (i > 0) && 
(trackerA.getTrackingCount() == trackingCount); i--) {
+                               Thread.sleep(20);
+                       }
+
+                       beanServiceA = trackerA.getService();
+
+                       assertNull(beanServiceA);
+
+                       trackingCount = trackerB.getTrackingCount();
+
+                       configurationB.delete();
+
+                       for (int i = 10; (i > 0) && 
(trackerB.getTrackingCount() == trackingCount); i--) {
+                               Thread.sleep(20);
+                       }
+
+                       beanServiceB = trackerB.getService();
+
+                       assertNull(beanServiceB);
+               }
+               finally {
+                       if (configurationA != null) {
+                               try {
+                                       configurationA.delete();
+                               }
+                               catch (Exception e) {
+                                       // ignore
+                               }
+                       }
+                       if (configurationB != null) {
+                               try {
+                                       configurationB.delete();
+                               }
+                               catch (Exception e) {
+                                       // ignore
+                               }
+                       }
+                       tb7Bundle.uninstall();
+               }
+       }
+
+       private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> 
adminTracker;
+       private ConfigurationAdmin configurationAdmin;
+
+}
\ No newline at end of file

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/HttpTestCase.java
 Sat Apr 14 01:10:27 2018
@@ -14,6 +14,8 @@
 
 package org.apache.aries.cdi.test.cases;
 
+import static org.junit.Assert.*;
+
 import java.io.InputStream;
 import java.net.URI;
 
@@ -29,6 +31,9 @@ import org.apache.http.impl.client.HttpC
 import org.apache.http.osgi.services.HttpClientBuilderFactory;
 import org.apache.http.protocol.BasicHttpContext;
 import org.apache.http.protocol.HttpContext;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.http.runtime.HttpServiceRuntime;
@@ -37,6 +42,7 @@ import org.osgi.util.tracker.ServiceTrac
 
 public class HttpTestCase extends AbstractTestCase {
 
+       @Test
        public void testSessionScoped() throws Exception {
                Bundle tb6Bundle = installBundle("tb6.jar");
                Bundle tb2Bundle = installBundle("tb2.jar");
@@ -100,6 +106,7 @@ public class HttpTestCase extends Abstra
                }
        }
 
+       @Test
        public void testRequestScopedWithReference() throws Exception {
                Bundle tb6Bundle = installBundle("tb6.jar");
                Bundle tb2Bundle = installBundle("tb2.jar");
@@ -169,8 +176,9 @@ public class HttpTestCase extends Abstra
                return endpoints[0];
        }
 
+       @Before
        @Override
-       protected void setUp() throws Exception {
+       public void setUp() throws Exception {
                hsrTracker = new ServiceTracker<>(bundleContext, 
HttpServiceRuntime.class, null);
 
                hsrTracker.open();
@@ -188,8 +196,9 @@ public class HttpTestCase extends Abstra
                assertNotNull(hsr);
        }
 
+       @After
        @Override
-       protected void tearDown() throws Exception {
+       public void tearDown() throws Exception {
                hsrTracker.close();
                hcbfTracker.close();
        }

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=1829115&r1=1829114&r2=1829115&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
 Sat Apr 14 01:10:27 2018
@@ -14,89 +14,75 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import java.util.Hashtable;
-import java.util.List;
+import static org.junit.Assert.*;
 
 import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.Extension;
 import javax.naming.InitialContext;
 
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.junit.Ignore;
+import org.junit.Test;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.wiring.BundleCapability;
 import org.osgi.framework.wiring.BundleWiring;
-import org.osgi.resource.Capability;
-import org.osgi.service.cdi.PortableExtensionNamespace;
-import org.osgi.service.jndi.JNDIConstants;
-import org.osgi.util.tracker.BundleTracker;
-import org.osgi.util.tracker.BundleTrackerCustomizer;
+import org.osgi.util.tracker.ServiceTracker;
 
 public class JndiExtensionTests extends AbstractTestCase {
 
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-               containerDTO = getContainerDTO(cdiBundle);
-       }
-
+       @Ignore("I think there's an issue with Aries JNDI. It doesn't work well 
with service objects")
+       @Test
        public void testGetBeanManagerThroughJNDI() throws Exception {
-               Hashtable<String, Object> env = new Hashtable<>();
-               env.put(JNDIConstants.BUNDLE_CONTEXT, 
cdiBundle.getBundleContext());
-               InitialContext context = new InitialContext(env);
-
-               BeanManager beanManager = 
(BeanManager)context.lookup("java:comp/BeanManager");
+               assertNotNull(getBeanManager(cdiBundle));
 
-               assertNotNull(beanManager);
-               assertBeanExists(Pojo.class, beanManager);
+               Thread currentThread = Thread.currentThread();
+               ClassLoader contextClassLoader = 
currentThread.getContextClassLoader();
+               try {
+                       BundleWiring bundleWiring = 
cdiBundle.adapt(BundleWiring.class);
+                       
currentThread.setContextClassLoader(bundleWiring.getClassLoader());
+
+                       BeanManager beanManager = 
(BeanManager)InitialContext.doLookup("java:comp/BeanManager");
+
+                       assertNotNull(beanManager);
+                       assertBeanExists(Pojo.class, beanManager);
+               }
+               finally {
+                       currentThread.setContextClassLoader(contextClassLoader);
+               }
        }
 
+       @Test
        public void testDisableExtensionAndCDIContainerWaits() throws Exception 
{
-               BundleTracker<Bundle> bt = new BundleTracker<>(
-                       bundle.getBundleContext(), Bundle.RESOLVED | 
Bundle.ACTIVE, new BundleTrackerCustomizer<Bundle>() {
-
-                               @Override
-                               public Bundle addingBundle(Bundle bundle, 
BundleEvent arg1) {
-                                       List<BundleCapability> capabilities = 
bundle.adapt(
-                                               
BundleWiring.class).getCapabilities(PortableExtensionNamespace.CDI_EXTENSION_NAMESPACE);
-
-                                       if (capabilities.isEmpty()) {
-                                               return null;
-                                       }
+               ServiceTracker<Extension, Extension> et = track(
+                       
"(&(objectClass=%s)(osgi.cdi.extension=aries.cdi.jndi))",
+                       Extension.class.getName());
 
-                                       for (Capability capability : 
capabilities) {
-                                               if 
(capability.getAttributes().containsValue("jndi")) {
-                                                       return bundle;
-                                               }
-                                       }
+               assertFalse(et.isEmpty());
 
-                                       return null;
-                               }
+               Bundle extensionBundle = et.getServiceReference().getBundle();
 
-                               @Override
-                               public void modifiedBundle(Bundle bundle, 
BundleEvent arg1, Bundle arg2) {
-                               }
+               ServiceTracker<BeanManager, BeanManager> bmTracker = 
getServiceTracker(cdiBundle);
 
-                               @Override
-                               public void removedBundle(Bundle bundle, 
BundleEvent arg1, Bundle arg2) {
-                               }
-                       }
-               );
+               assertNotNull(bmTracker.waitForService(timeout));
 
-               bt.open();
+               int trackingCount = bmTracker.getTrackingCount();
 
-               assertFalse(bt.isEmpty());
-
-               Bundle extensionBundle = bt.getBundles()[0];
+               extensionBundle.stop();
 
-               // TODO Check that everything is ok...
+               for (int i = 10; (i > 0) && (bmTracker.getTrackingCount() == 
trackingCount); i--) {
+                       Thread.sleep(20);
+               }
 
-               extensionBundle.stop();
+               assertNull(bmTracker.getService());
 
-               // TODO check that CDI bundles dependent on the extension are 
not not OK
+               trackingCount = bmTracker.getTrackingCount();
 
                extensionBundle.start();
 
-               // TODO check that they are ok again!
+               for (int i = 20; (i > 0) && (bmTracker.getTrackingCount() == 
trackingCount); i--) {
+                       Thread.sleep(20);
+               }
+
+               assertNotNull(bmTracker.getService());
        }
 
 }
\ No newline at end of file

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
 Sat Apr 14 01:10:27 2018
@@ -14,6 +14,8 @@
 
 package org.apache.aries.cdi.test.cases;
 
+import static org.junit.Assert.*;
+
 import java.util.Set;
 
 import javax.enterprise.context.spi.CreationalContext;
@@ -23,11 +25,13 @@ import javax.enterprise.util.TypeLiteral
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.util.tracker.ServiceTracker;
 
 public class OSGiBeanDescriptorTests extends AbstractTestCase {
 
+       @Test
        public void testServices() throws Exception {
                Bundle tb2Bundle = installBundle("tb2.jar");
 
@@ -45,6 +49,7 @@ public class OSGiBeanDescriptorTests ext
        }
 
        @SuppressWarnings("serial")
+       @Test
        public void testReferences() throws Exception {
                Bundle tb1Bundle = installBundle("tb1.jar");
                Bundle tb2Bundle = installBundle("tb2.jar");
@@ -66,12 +71,4 @@ public class OSGiBeanDescriptorTests ext
                }
        }
 
-       @Override
-       protected void setUp() throws Exception {
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-       }
-
 }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb1/BeanImpl.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb1/BeanImpl.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb1/BeanImpl.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb1/BeanImpl.java
 Sat Apr 14 01:10:27 2018
@@ -19,6 +19,7 @@ import javax.inject.Named;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.osgi.service.cdi.annotations.Reference;
 
 @Named("beanimpl")
 public class BeanImpl implements BeanService<BeanImpl> {
@@ -34,6 +35,7 @@ public class BeanImpl implements BeanSer
        }
 
        @Inject
+       @Reference
        Pojo pojo;
 
 }

Added: 
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=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java
 (added)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb10/SingleReferenceEventHandler.java
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,69 @@
+/**
+ * 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.test.tb10;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentSkipListMap;
+
+import javax.enterprise.event.Observes;
+
+import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
+import org.osgi.service.cdi.reference.ReferenceEvent;
+
+@Service
+@SingleComponent
+public class SingleReferenceEventHandler implements Pojo {
+
+       void integers(@Observes ReferenceEvent<Integer> event) {
+               event.onAddingServiceObjects(
+                       so -> {
+                               ServiceReference<Integer> serviceReference = 
so.getServiceReference();
+                               System.out.println("=====ADDING==>>> " + 
serviceReference);
+
+                               _services.put(so.getServiceReference(), 
"ADDED");
+                       }
+               );
+               event.onUpdateServiceObjects(
+                       so -> {
+                               System.out.println("=====UPDATING==>>> " + 
so.getServiceReference());
+
+                               _services.put(so.getServiceReference(), 
"UPDATED");
+                       }
+               );
+               event.onRemoveServiceReference(
+                       sr -> {
+                               System.out.println("=====REMOVING==>>> " + sr);
+
+                               _services.remove(sr);
+                       }
+               );
+       }
+
+       @Override
+       public String foo(String fooInput) {
+               return _services.values().toString();
+       }
+
+       @Override
+       public int getCount() {
+               return _services.size();
+       }
+
+       private final Map<ServiceReference<Integer>, String> _services = new 
ConcurrentSkipListMap<>();
+
+}

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java
 Sat Apr 14 01:10:27 2018
@@ -15,7 +15,9 @@
 package org.apache.aries.cdi.test.tb2;
 
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.osgi.service.cdi.annotations.Service;
 
+@Service
 public class PojoImpl implements Pojo {
 
        @Override

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanA.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanA.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanA.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanA.java
 Sat Apr 14 01:10:27 2018
@@ -14,28 +14,31 @@
 
 package org.apache.aries.cdi.test.tb3;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.concurrent.Callable;
 
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.ConfigurationPolicy;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Configuration;
 import org.osgi.service.cdi.annotations.PID;
-import org.osgi.service.cdi.annotations.PID.Policy;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
-@PID(policy = Policy.REQUIRED)
 @ConfigurationBeanA.Props
+@PID(policy = ConfigurationPolicy.REQUIRED)
+@Service(BeanService.class)
+@SingleComponent
 public class ConfigurationBeanA implements BeanService<Callable<int[]>> {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE )
+       @ComponentPropertyType
        public @interface Props {
                String bean() default "A";
        }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanB.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanB.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanB.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb3/ConfigurationBeanB.java
 Sat Apr 14 01:10:27 2018
@@ -14,8 +14,8 @@
 
 package org.apache.aries.cdi.test.tb3;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
@@ -23,21 +23,24 @@ import java.util.Map;
 import java.util.concurrent.Callable;
 
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.ConfigurationPolicy;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Configuration;
 import org.osgi.service.cdi.annotations.PID;
-import org.osgi.service.cdi.annotations.PID.Policy;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
-@PID(value = "org.apache.aries.cdi.test.tb3.ConfigurationBeanA", policy = 
Policy.REQUIRED)
-@PID(policy = Policy.REQUIRED)
 @ConfigurationBeanB.Props
+@PID(value = "configurationBeanA", policy = ConfigurationPolicy.REQUIRED)
+@PID(policy = ConfigurationPolicy.REQUIRED)
+@Service(BeanService.class)
+@SingleComponent
 public class ConfigurationBeanB implements BeanService<Callable<int[]>> {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE )
+       @ComponentPropertyType
        public @interface Props {
                String bean() default "B";
        }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java
 Sat Apr 14 01:10:27 2018
@@ -14,27 +14,30 @@
 
 package org.apache.aries.cdi.test.tb5;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.concurrent.Callable;
 
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Configuration;
 import org.osgi.service.cdi.annotations.PID;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@Service(BeanService.class)
+@SingleComponent
 @PID("foo.bar")
 @ConfigurationBeanC.Props
 public class ConfigurationBeanC implements BeanService<Callable<int[]>> {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE )
+       @ComponentPropertyType
        public @interface Props {
                String bean() default "C";
        }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java
 Sat Apr 14 01:10:27 2018
@@ -14,8 +14,8 @@
 
 package org.apache.aries.cdi.test.tb6;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -23,22 +23,23 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service(Servlet.class)
 @BarServlet.Props
 public class BarServlet extends HttpServlet {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE )
+       @ComponentPropertyType
        public @interface Props {
                String osgi_http_whiteboard_servlet_name() default "bar";
                String osgi_http_whiteboard_servlet_pattern() default "/bar";

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java
 Sat Apr 14 01:10:27 2018
@@ -14,8 +14,8 @@
 
 package org.apache.aries.cdi.test.tb6;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -23,22 +23,23 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 import javax.servlet.Servlet;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service(Servlet.class)
 @FooServlet.Props
 public class FooServlet extends HttpServlet {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE )
+       @ComponentPropertyType
        public @interface Props {
                String osgi_http_whiteboard_servlet_name() default "foo";
                String osgi_http_whiteboard_servlet_pattern() default "/foo";

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/RequestData.java
 Sat Apr 14 01:10:27 2018
@@ -1,3 +1,17 @@
+/**
+ * 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.test.tb6;
 
 import java.io.Serializable;

Copied: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/Config.java
 (from r1829114, 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/reference/Multiplicity.java)
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/Config.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/Config.java&p1=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/reference/Multiplicity.java&r1=1829114&r2=1829115&rev=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/reference/Multiplicity.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/Config.java
 Sat Apr 14 01:10:27 2018
@@ -12,10 +12,12 @@
  * limitations under the License.
  */
 
-package org.apache.aries.cdi.container.internal.reference;
+package org.apache.aries.cdi.test.tb7;
 
-public enum Multiplicity {
+@interface Config {
 
-       MULTIPLE, UNARY
+       String color() default "blue";
 
-}
+       int[] ports() default 35777;
+
+}
\ No newline at end of file

Copied: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/ConfigurationBeanF.java
 (from r1829114, 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java)
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/ConfigurationBeanF.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/ConfigurationBeanF.java&p1=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java&r1=1829114&r2=1829115&rev=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb5/ConfigurationBeanC.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb7/ConfigurationBeanF.java
 Sat Apr 14 01:10:27 2018
@@ -12,31 +12,32 @@
  * limitations under the License.
  */
 
-package org.apache.aries.cdi.test.tb5;
+package org.apache.aries.cdi.test.tb7;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.concurrent.Callable;
 
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Configuration;
-import org.osgi.service.cdi.annotations.PID;
+import org.osgi.service.cdi.annotations.FactoryComponent;
+import org.osgi.service.cdi.annotations.Service;
 
-@Component
-@PID("foo.bar")
-@ConfigurationBeanC.Props
-public class ConfigurationBeanC implements BeanService<Callable<int[]>> {
+@Service({BeanService.class, ConfigurationBeanF.class})
+@FactoryComponent
+@ConfigurationBeanF.Props
+public class ConfigurationBeanF implements BeanService<Callable<int[]>> {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE)
+       @ComponentPropertyType
        public @interface Props {
-               String bean() default "C";
+               String bean() default "F";
        }
 
        @Override

Copied: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/ContainerBean.java
 (from r1829114, 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/literal/CdiMarkLiteral.java)
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/ContainerBean.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/ContainerBean.java&p1=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/literal/CdiMarkLiteral.java&r1=1829114&r2=1829115&rev=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/literal/CdiMarkLiteral.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/ContainerBean.java
 Sat Apr 14 01:10:27 2018
@@ -12,27 +12,25 @@
  * limitations under the License.
  */
 
-package org.apache.aries.cdi.container.internal.literal;
+package org.apache.aries.cdi.test.tb8;
 
-import javax.enterprise.util.AnnotationLiteral;
+import javax.enterprise.context.ApplicationScoped;
 
-public class CdiMarkLiteral extends AnnotationLiteral<CdiMark> implements 
CdiMark {
+import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.osgi.service.cdi.annotations.Service;
 
-       private static final long serialVersionUID = 1L;
+@ApplicationScoped
+@Service({Pojo.class, ContainerBean.class})
+public class ContainerBean implements Pojo {
 
-       public static CdiMark from(int i) {
-               return new CdiMarkLiteral(i);
-       }
-
-       public CdiMarkLiteral(int i) {
-               _value = i;
+       @Override
+       public String foo(String fooInput) {
+               return getCount() + fooInput + getCount();
        }
 
        @Override
-       public int value() {
-               return _value;
+       public int getCount() {
+               return 50;
        }
 
-       private final int _value;
-
 }

Copied: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/SingleComponentBean.java
 (from r1829114, 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java)
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/SingleComponentBean.java?p2=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/SingleComponentBean.java&p1=aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java&r1=1829114&r2=1829115&rev=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb2/PojoImpl.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb8/SingleComponentBean.java
 Sat Apr 14 01:10:27 2018
@@ -12,20 +12,24 @@
  * limitations under the License.
  */
 
-package org.apache.aries.cdi.test.tb2;
+package org.apache.aries.cdi.test.tb8;
 
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-public class PojoImpl implements Pojo {
+@SingleComponent
+@Service({Pojo.class, SingleComponentBean.class})
+public class SingleComponentBean implements Pojo {
 
        @Override
        public String foo(String fooInput) {
-               return "POJO-IMPL" + fooInput;
+               return getCount() + fooInput + getCount();
        }
 
        @Override
        public int getCount() {
-               return 1;
+               return 25;
        }
 
 }

Added: 
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=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java
 (added)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb9/ContainerReferenceEventHandler.java
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,68 @@
+/**
+ * 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.test.tb9;
+
+import java.util.TreeMap;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
+
+import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.reference.ReferenceEvent;
+
+@ApplicationScoped
+@Service
+public class ContainerReferenceEventHandler implements Pojo {
+
+       void integers(@Observes ReferenceEvent<Integer> event) {
+               event.onAddingServiceObjects(
+                       so -> {
+                               ServiceReference<Integer> serviceReference = 
so.getServiceReference();
+                               System.out.println("=====ADDING==>>> " + 
serviceReference);
+
+                               _services.put(so.getServiceReference(), 
"ADDED");
+                       }
+               );
+               event.onUpdateServiceObjects(
+                       so -> {
+                               System.out.println("=====UPDATING==>>> " + 
so.getServiceReference());
+
+                               _services.put(so.getServiceReference(), 
"UPDATED");
+                       }
+               );
+               event.onRemoveServiceReference(
+                       sr -> {
+                               System.out.println("=====REMOVING==>>> " + sr);
+
+                               _services.remove(sr);
+                       }
+               );
+       }
+
+       @Override
+       public String foo(String fooInput) {
+               return _services.values().toString();
+       }
+
+       @Override
+       public int getCount() {
+               return _services.size();
+       }
+
+       private final TreeMap<ServiceReference<Integer>, String> _services = 
new TreeMap<>();
+
+}

Modified: aries/trunk/cdi/javax.annotation-api/bnd.bnd
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/javax.annotation-api/bnd.bnd?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/javax.annotation-api/bnd.bnd (original)
+++ aries/trunk/cdi/javax.annotation-api/bnd.bnd Sat Apr 14 01:10:27 2018
@@ -2,7 +2,7 @@ Bundle-License: CDDL-1.1;link="https://s
 Provide-Capability:\
        osgi.contract;\
                osgi.contract=JavaAnnotation;\
-               uses:="javax.annotation, javax.annotation.security, 
javax.annotation.sql";\
+               uses:="${packages}";\
                version:List<Version>='1.3,1.2,1.1,1'
 
 -exportcontents: javax.annotation.*;version='1.3'

Modified: aries/trunk/cdi/javax.cdi-api/bnd.bnd
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/javax.cdi-api/bnd.bnd?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/javax.cdi-api/bnd.bnd (original)
+++ aries/trunk/cdi/javax.cdi-api/bnd.bnd Sat Apr 14 01:10:27 2018
@@ -2,7 +2,7 @@ Bundle-License: ASL-2.0;link="http://www
 Provide-Capability: \
        osgi.contract; \
                osgi.contract=JavaCDI; \
-               
uses:="javax.decorator,javax.enterprise.context,javax.enterprise.context.spi,javax.enterprise.event,javax.enterprise.inject,javax.enterprise.inject.spi,javax.enterprise.util";
 \
+               uses:="${packages}"; \
                version:List<Version>='2.0,1.2,1.1,1.0'
 
 -exportcontents: \

Modified: aries/trunk/cdi/javax.el-api/bnd.bnd
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/javax.el-api/bnd.bnd?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/javax.el-api/bnd.bnd (original)
+++ aries/trunk/cdi/javax.el-api/bnd.bnd Sat Apr 14 01:10:27 2018
@@ -2,7 +2,7 @@ Bundle-License: CDDL-1.1;link="https://s
 Provide-Capability: \
        osgi.contract; \
                osgi.contract=JavaEL; \
-               uses:="javax.el"; \
+               uses:="${packages}"; \
                version:List<Version>='3.0,2.2,2.1'
 
 -exportcontents: javax.el.*;version='3.0'

Modified: aries/trunk/cdi/javax.inject-api/bnd.bnd
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/javax.inject-api/bnd.bnd?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/javax.inject-api/bnd.bnd (original)
+++ aries/trunk/cdi/javax.inject-api/bnd.bnd Sat Apr 14 01:10:27 2018
@@ -2,7 +2,7 @@ Bundle-License: ASL-2.0;link="http://www
 Provide-Capability: \
        osgi.contract; \
                osgi.contract=JavaInject; \
-               uses:="javax.inject"; \
+               uses:="${packages}"; \
                version:Version='1'
 
 -includeresource: META-INF/README=README

Modified: aries/trunk/cdi/javax.interceptor-api/bnd.bnd
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/javax.interceptor-api/bnd.bnd?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/javax.interceptor-api/bnd.bnd (original)
+++ aries/trunk/cdi/javax.interceptor-api/bnd.bnd Sat Apr 14 01:10:27 2018
@@ -2,8 +2,8 @@ Bundle-License: CDDL-1.1;link="https://s
 Provide-Capability: \
        osgi.contract; \
                osgi.contract=JavaInterceptor; \
-               uses:="javax.interceptor"; \
-               version:List<Version>='1.1,1.2'
+               uses:="${packages}"; \
+               version:List<Version>='1.2,1.1'
 
 -exportcontents: javax.interceptor.*;version='1.2'
 

Modified: aries/trunk/cdi/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/pom.xml?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/pom.xml (original)
+++ aries/trunk/cdi/pom.xml Sat Apr 14 01:10:27 2018
@@ -35,10 +35,11 @@
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
        <properties>
-               <bnd.version>3.5.0</bnd.version>
+               <bnd.version>4.0.0-SNAPSHOT</bnd.version>
                <full.version>${project.version} (${timestamp} 
AD)</full.version>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <surefire.version>2.12</surefire.version>
+               <weld.release>3.0.2.Final</weld.release>
        </properties>
 
        <licenses>
@@ -54,6 +55,7 @@
                <module>javax.inject-api</module>
                <module>javax.interceptor-api</module>
                <module>javax.cdi-api</module>
+               <module>cdi-extra</module>
                <module>cdi-extender</module>
                <module>cdi-extension-http</module>
                <module>cdi-extension-jndi</module>
@@ -123,6 +125,9 @@
                                        <groupId>biz.aQute.bnd</groupId>
                                        
<artifactId>bnd-resolver-maven-plugin</artifactId>
                                        <version>${bnd.version}</version>
+                                       <configuration>
+                                               
<includeOptional>false</includeOptional>
+                                       </configuration>
                                        <executions>
                                                <execution>
                                                        <id>resolve</id>
@@ -185,6 +190,7 @@
                                <groupId>junit</groupId>
                                <artifactId>junit</artifactId>
                                <version>4.12</version>
+                               <scope>test</scope>
                        </dependency>
                </dependencies>
        </dependencyManagement>
@@ -200,6 +206,24 @@
                        <url>https://oss.sonatype.org/content/groups/osgi/</url>
                        <layout>default</layout>
                </repository>
+               <repository>
+                       <id>bnd-snapshots</id>
+                       
<url>https://bndtools.ci.cloudbees.com/job/bnd.master/lastSuccessfulBuild/artifact/dist/bundles/</url>
+                       <layout>default</layout>
+               </repository>
        </repositories>
 
+       <pluginRepositories>
+               <pluginRepository>
+                       <id>bnd-snapshots</id>
+                       
<url>https://bndtools.ci.cloudbees.com/job/bnd.master/lastSuccessfulBuild/artifact/dist/bundles/</url>
+                       <releases>
+                               <enabled>false</enabled>
+                       </releases>
+                       <snapshots>
+                               <enabled>true</enabled>
+                       </snapshots>
+               </pluginRepository>
+       </pluginRepositories>
+
 </project>


Reply via email to