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>