Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/FactoryComponent.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/FactoryComponent.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/FactoryComponent.java (added) +++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/FactoryComponent.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,56 @@ +package org.apache.aries.cdi.container.internal.v2.component; + +import java.util.concurrent.CopyOnWriteArrayList; + +import org.osgi.service.cdi.runtime.dto.ComponentDTO; +import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.ConfigurationPolicy; +import org.osgi.service.cdi.runtime.dto.template.ConfigurationTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.MaximumCardinality; +import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO; + +public class FactoryComponent implements Component { + + public FactoryComponent(String name) { + _snapshot = new ComponentDTO(); + _snapshot.template = new ComponentTemplateDTO(); + _snapshot.template.activations = new CopyOnWriteArrayList<>(); + _snapshot.template.configurations = new CopyOnWriteArrayList<>(); + + ConfigurationTemplateDTO factoryConfig = new ConfigurationTemplateDTO(); + factoryConfig.componentConfiguration = true; + factoryConfig.maximumCardinality = MaximumCardinality.MANY; + factoryConfig.pid = name; + factoryConfig.policy = ConfigurationPolicy.REQUIRED; + + _snapshot.template.configurations.add(factoryConfig); + _snapshot.template.name = name; + _snapshot.template.references = new CopyOnWriteArrayList<>(); + _snapshot.template.type = ComponentTemplateDTO.Type.FACTORY; + } + + @Override + public void addConfiguration(ConfigurationTemplateDTO dto) { + if (dto == null) return; + _snapshot.template.configurations.add(dto); + } + + @Override + public void addReference(ReferenceTemplateDTO dto) { + if (dto == null) return; + _snapshot.template.references.add(dto); + } + + @Override + public ComponentDTO getSnapshot() { + return _snapshot; // TODO make safe copy using converter + } + + @Override + public ComponentTemplateDTO getTemplate() { + return _snapshot.template; // TODO make safe copy using converter + } + + private final ComponentDTO _snapshot; + +}
Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/SingleComponent.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/SingleComponent.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/SingleComponent.java (added) +++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/v2/component/SingleComponent.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,56 @@ +package org.apache.aries.cdi.container.internal.v2.component; + +import java.util.concurrent.CopyOnWriteArrayList; + +import org.osgi.service.cdi.runtime.dto.ComponentDTO; +import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.ConfigurationPolicy; +import org.osgi.service.cdi.runtime.dto.template.ConfigurationTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.MaximumCardinality; +import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO; + +public class SingleComponent implements Component { + + public SingleComponent(String name) { + _snapshot = new ComponentDTO(); + _snapshot.template = new ComponentTemplateDTO(); + _snapshot.template.activations = new CopyOnWriteArrayList<>(); + _snapshot.template.configurations = new CopyOnWriteArrayList<>(); + + ConfigurationTemplateDTO factoryConfig = new ConfigurationTemplateDTO(); + factoryConfig.componentConfiguration = true; + factoryConfig.maximumCardinality = MaximumCardinality.ONE; + factoryConfig.pid = name; + factoryConfig.policy = ConfigurationPolicy.OPTIONAL; + + _snapshot.template.configurations.add(factoryConfig); + _snapshot.template.name = name; + _snapshot.template.references = new CopyOnWriteArrayList<>(); + _snapshot.template.type = ComponentTemplateDTO.Type.SINGLE; + } + + @Override + public void addConfiguration(ConfigurationTemplateDTO dto) { + if (dto == null) return; + _snapshot.template.configurations.add(dto); + } + + @Override + public void addReference(ReferenceTemplateDTO dto) { + if (dto == null) return; + _snapshot.template.references.add(dto); + } + + @Override + public ComponentDTO getSnapshot() { + return _snapshot; // TODO make safe copy using converter + } + + @Override + public ComponentTemplateDTO getTemplate() { + return _snapshot.template; // TODO make safe copy using converter + } + + private final ComponentDTO _snapshot; + +} Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java (original) +++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java Sat Apr 14 01:09:09 2018 @@ -15,7 +15,6 @@ package org.apache.aries.cdi.provider; import java.lang.annotation.Annotation; -import java.util.Collection; import java.util.Iterator; import javax.enterprise.inject.Instance; @@ -23,12 +22,6 @@ import javax.enterprise.inject.spi.BeanM import javax.enterprise.inject.spi.CDI; import javax.enterprise.util.TypeLiteral; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.BundleReference; -import org.osgi.framework.InvalidSyntaxException; -import org.osgi.framework.ServiceReference; - public class CDIProvider implements javax.enterprise.inject.spi.CDIProvider { private static class CdiExtenderCDI extends CDI<Object> { @@ -45,36 +38,7 @@ public class CDIProvider implements java @Override public BeanManager getBeanManager() { - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - - while (!(loader instanceof BundleReference)) { - if (loader == null) { - throw new IllegalStateException("Loader is not an OSGi classLoader!"); - } - loader = loader.getParent(); - } - - BundleReference bundleReference = (BundleReference)loader; - - Bundle bundle = bundleReference.getBundle(); - - BundleContext bundleContext = bundle.getBundleContext(); - - try { - Collection<ServiceReference<BeanManager>> serviceReferences = bundleContext.getServiceReferences( - BeanManager.class, - "(&(objectClass=" + BeanManager.class.getName() + ")(service.bundleid=" + bundle.getBundleId() + - "))"); - - if (serviceReferences.isEmpty()) { - throw new IllegalStateException("BeanManager not found for " + bundle); - } - - return bundleContext.getService(serviceReferences.iterator().next()); - } - catch (InvalidSyntaxException e) { - throw new IllegalArgumentException(e); - } + throw new UnsupportedOperationException(); } @Override Modified: aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/cdi.xsd URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/cdi.xsd?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/cdi.xsd (original) +++ aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/cdi.xsd Sat Apr 14 01:09:09 2018 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- /* - * Copyright (c) OSGi Alliance (2017). All Rights Reserved. + * Copyright (c) OSGi Alliance (2017, 2018). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,208 +25,56 @@ <annotation> <documentation xml:lang="en"> - This is the XML Schema for OSGi Bean descriptions used by - the OSGi CDI Extender. OSGi Bean description documents - may be embedded in other XML documents. The OSGi CDI Extender - will process all XML documents listed in the osgi.beans - attribute of the CDI extender requirement. CDI Beans named by the - descriptor are described as components. XML documents containing - OSGi Bean descriptions may contain one or more component elements. - Use of the namespace for bean descriptions is mandatory. The - attributes and subelements of component elements are always - unqualified. + This is the XML Schema for OSGi Bean descriptions used by CCR. OSGi + Bean description documents may be embedded in other XML documents. + CCR will process all XML documents listed in the osgi.beans + attribute of the CDI extender requirement. XML documents containing + OSGi Bean descriptions may contain one or more bean elements. Use of + the namespace for bean descriptions is mandatory. The attributes and + subelements of component elements are always unqualified. </documentation> </annotation> - <element name="component" type="cdi:Tcomponent" /> - <complexType name="Tcomponent"> + + <element name="bean" type="cdi:Tbean" /> + <element name="qualifier-blacklist" type="cdi:Tqualifier-blacklist" /> + + <complexType name="Tbean"> <sequence> - <annotation> - <documentation xml:lang="en"> - Implementations of CDI Support must not require component - descriptions to specify the sub-elements of the component - element in the order as required by the schema. CDI Support - implementations must allow other orderings since - arbitrary orderings do not affect the meaning of the - component description. Only the relative ordering of - property elements have meaning. - </documentation> - </annotation> - <element name="configuration" maxOccurs="unbounded" minOccurs="0" type="cdi:Tconfiguration" /> - <element name="property" maxOccurs="unbounded" minOccurs="0" type="cdi:Tproperty" /> - <element name="provide" maxOccurs="unbounded" minOccurs="0" type="cdi:Tprovide" /> - <element name="reference" maxOccurs="unbounded" minOccurs="0" type="cdi:Treference" /> <any namespace="##other" maxOccurs="unbounded" minOccurs="0" processContents="lax" /> </sequence> <attribute name="class" type="token" use="required" /> - <attribute name="name" type="token" use="optional"> - <annotation> - <documentation xml:lang="en"> - The default value of this attribute is the value of - the class attribute. If multiple component elements use the same - value for the class attribute, then using the default value - for this attribute will result in duplicate names. - In this case, this attribute must be specified with - a unique value. - </documentation> - </annotation> - </attribute> - <attribute name="service-scope" default="none" type="cdi:Tservice_scope" use="optional" /> <anyAttribute processContents="lax" /> </complexType> - <complexType name="Tconfiguration"> + <complexType name="Tqualifier" mixed="true"> <sequence> - <any namespace="##any" processContents="lax" - minOccurs="0" maxOccurs="unbounded" /> + <any namespace="##other" minOccurs="0" maxOccurs="unbounded" + processContents="lax" /> </sequence> - <attribute name="configuration-policy" default="optional" type="cdi:Tconfiguration-policy" use="optional" /> - <attribute name="configuration-pid" use="optional"> + <attribute name="name" use="required"> <annotation> <documentation xml:lang="en"> - The default value is the name attribute of the component. + <![CDATA[The name of the class or package to ignore. + Ant-style glob matches are supported. For example, + <qualifier name="com.acme.**"/> would ignore all qualifier + classes in subpackages of com.acme.]]> </documentation> </annotation> <simpleType> - <restriction> - <simpleType> - <list itemType="token" /> - </simpleType> - <minLength value="1" /> + <restriction base="string"> + <pattern value="([a-zA-Z_$][a-zA-Z\d_$]*\.)*([a-zA-Z_$][a-zA-Z\d_$]*|\*|\*\*)"/> </restriction> </simpleType> </attribute> - <attribute name="type" type="token" use="required" /> - <anyAttribute processContents="lax" /> - </complexType> - - <complexType name="Tmulti-value"> - <sequence> - <element name="value" minOccurs="0" maxOccurs="unbounded" type="cdi:Tvalue"/> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded" - processContents="lax" /> - </sequence> <anyAttribute processContents="lax" /> </complexType> - <complexType name="Tproperty" mixed="true"> - <sequence maxOccurs="1"> - <choice minOccurs="0" maxOccurs="1"> - <element name="array" type="cdi:Tmulti-value"/> - <element name="list" type="cdi:Tmulti-value"/> - <element name="set" type="cdi:Tmulti-value"/> - </choice> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> - </sequence> - <attribute name="name" type="string" use="required" /> - <attribute name="value" type="string" use="optional" /> - <attribute name="value-type" default="String" type="cdi:Tvalue-types" use="optional" /> - <anyAttribute processContents="lax" /> - </complexType> - - <complexType name="Tprovide"> - <sequence> - <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> - </sequence> - <attribute name="interface" type="token" use="required" /> - <anyAttribute processContents="lax" /> - </complexType> - - <complexType name="Treference"> - <sequence> - <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> - </sequence> - <attribute name="cardinality" default="1..1" type="cdi:Tcardinality" use="optional" /> - <attribute name="name" type="token" use="optional" /> - <attribute name="policy" default="static" type="cdi:Tpolicy" use="optional" /> - <attribute name="policy-option" default="reluctant" type="cdi:Tpolicy-option" use="optional" /> - <attribute name="scope" default="bundle" type="cdi:Treference_scope" use="optional" /> - <attribute name="service" type="token" use="required" /> - <attribute name="target" type="string" use="optional" /> - <anyAttribute processContents="lax" /> - </complexType> - - <complexType name="Tvalue" mixed="true"> + <complexType name="Tqualifier-blacklist"> <sequence> - <any namespace="##other" minOccurs="0" maxOccurs="unbounded" - processContents="lax" /> + <element name="qualifier" maxOccurs="unbounded" minOccurs="0" type="cdi:Tqualifier" /> + <any namespace="##other" maxOccurs="unbounded" minOccurs="0" processContents="lax" /> </sequence> <anyAttribute processContents="lax" /> </complexType> - <simpleType name="Tcardinality"> - <restriction base="string"> - <enumeration value="0..1" /> - <enumeration value="0..n" /> - <enumeration value="1..1" /> - <enumeration value="1..n" /> - </restriction> - </simpleType> - - <simpleType name="Tconfiguration-policy"> - <restriction base="string"> - <enumeration value="factory" /> - <enumeration value="ignore" /> - <enumeration value="optional" /> - <enumeration value="require" /> - </restriction> - </simpleType> - - <simpleType name="Tpolicy"> - <restriction base="string"> - <enumeration value="dynamic" /> - <enumeration value="static" /> - </restriction> - </simpleType> - - <simpleType name="Tpolicy-option"> - <restriction base="string"> - <enumeration value="greedy" /> - <enumeration value="reluctant" /> - </restriction> - </simpleType> - - <simpleType name="Treference_scope"> - <restriction base="string"> - <enumeration value="bundle" /> - <enumeration value="prototype" /> - <enumeration value="prototype_required" /> - </restriction> - </simpleType> - - <simpleType name="Tservice_scope"> - <restriction base="string"> - <enumeration value="bundle" /> - <enumeration value="none" /> - <enumeration value="prototype" /> - <enumeration value="singleton" /> - </restriction> - </simpleType> - - <!-- Specifies the data type of a property or of the elements in a multi-value - property. Numerical and boolean values are trimmed before they are processed. - Simple types are automatically boxed if needed. Only the array data type - allows for simple type values. When specifying a simple type on any other - type of property it will automatically be boxed. --> - <simpleType name="Tvalue-types"> - <restriction base="string"> - <enumeration value="boolean" /> - <enumeration value="Boolean" /> - <enumeration value="byte" /> - <enumeration value="Byte" /> - <enumeration value="char" /> - <enumeration value="Character" /> - <enumeration value="double" /> - <enumeration value="Double" /> - <enumeration value="float" /> - <enumeration value="Float" /> - <enumeration value="int" /> - <enumeration value="Integer" /> - <enumeration value="long" /> - <enumeration value="Long" /> - <enumeration value="short" /> - <enumeration value="Short" /> - <enumeration value="String" /> - </restriction> - </simpleType> - </schema> Added: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_greedy_Test2.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_greedy_Test2.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_greedy_Test2.java (added) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_greedy_Test2.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,334 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.aries.cdi.container.internal.component; + +import static org.apache.aries.cdi.container.test.TestUtil.sort; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Collection; + +import org.apache.aries.cdi.container.internal.model.BeansModel; +import org.apache.aries.cdi.container.internal.v2.component.Component; +import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents; +import org.apache.aries.cdi.container.test.beans.Bar; +import org.apache.aries.cdi.container.test.beans.Foo; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorCollectionFoo; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorFoo; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorFooBar; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorFooFoo; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorFooFooNamed; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorFooOptional; +import org.apache.aries.cdi.container.test.beans.ctordynamicgreedy.CtorListFoo; +import org.junit.Test; +import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.MaximumCardinality; +import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO; + +public class Discovery_Ctor_dynamic_greedy_Test2 { + + @Test + public void test_CtorCollectionFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorCollectionFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorCollectionFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorListFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorListFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorListFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooBar() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooBar.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Bar.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFooNamed() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFooNamed.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_a", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_b", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooOptional() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooOptional.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooOptional.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + +} \ No newline at end of file Added: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_reluctant_Test.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_reluctant_Test.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_reluctant_Test.java (added) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_dynamic_reluctant_Test.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,334 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.aries.cdi.container.internal.component; + +import static org.apache.aries.cdi.container.test.TestUtil.sort; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Collection; + +import org.apache.aries.cdi.container.internal.model.BeansModel; +import org.apache.aries.cdi.container.internal.v2.component.Component; +import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents; +import org.apache.aries.cdi.container.test.beans.Bar; +import org.apache.aries.cdi.container.test.beans.Foo; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorCollectionFoo; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorFoo; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorFooBar; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorFooFoo; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorFooFooNamed; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorFooOptional; +import org.apache.aries.cdi.container.test.beans.ctordynamicreluctant.CtorListFoo; +import org.junit.Test; +import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.MaximumCardinality; +import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO; + +public class Discovery_Ctor_dynamic_reluctant_Test { + + @Test + public void test_CtorCollectionFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorCollectionFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorCollectionFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorListFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorListFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorListFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooBar() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooBar.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Bar.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFooNamed() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFooNamed.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_a", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_b", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooOptional() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooOptional.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooOptional.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.DYNAMIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + +} \ No newline at end of file Added: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_greedy_Test.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_greedy_Test.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_greedy_Test.java (added) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_greedy_Test.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,335 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.aries.cdi.container.internal.component; + +import static org.apache.aries.cdi.container.test.TestUtil.sort; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Collection; + +import org.apache.aries.cdi.container.internal.model.BeansModel; +import org.apache.aries.cdi.container.internal.v2.component.Component; +import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents; +import org.apache.aries.cdi.container.test.beans.Bar; +import org.apache.aries.cdi.container.test.beans.Foo; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorCollectionFoo; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorFoo; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorFooBar; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorFooFoo; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorFooFooNamed; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorFooOptional; +import org.apache.aries.cdi.container.test.beans.ctorstaticgreedy.CtorListFoo; +import org.junit.Test; +import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.MaximumCardinality; +import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO; + +public class Discovery_Ctor_static_greedy_Test { + + @Test + public void test_CtorListFoo() throws Exception { + try (MockCdiContainerAndComponents container = + new MockCdiContainerAndComponents( + "test", CtorListFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorListFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorCollectionFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorCollectionFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorCollectionFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooBar() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooBar.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Bar.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFooNamed() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFooNamed.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_a", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_b", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooOptional() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooOptional.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooOptional.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.GREEDY, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + +} \ No newline at end of file Added: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_reluctant_Test.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_reluctant_Test.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_reluctant_Test.java (added) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/Discovery_Ctor_static_reluctant_Test.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,335 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.aries.cdi.container.internal.component; + +import static org.apache.aries.cdi.container.test.TestUtil.sort; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Collection; + +import org.apache.aries.cdi.container.internal.model.BeansModel; +import org.apache.aries.cdi.container.internal.v2.component.Component; +import org.apache.aries.cdi.container.test.MockCdiContainerAndComponents; +import org.apache.aries.cdi.container.test.beans.Bar; +import org.apache.aries.cdi.container.test.beans.Foo; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorCollectionFoo; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorFoo; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorFooBar; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorFooFoo; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorFooFooNamed; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorFooOptional; +import org.apache.aries.cdi.container.test.beans.ctorstaticreluctant.CtorListFoo; +import org.junit.Test; +import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO; +import org.osgi.service.cdi.runtime.dto.template.MaximumCardinality; +import org.osgi.service.cdi.runtime.dto.template.ReferenceTemplateDTO; + +public class Discovery_Ctor_static_reluctant_Test { + + @Test + public void test_CtorListFoo() throws Exception { + try (MockCdiContainerAndComponents container = + new MockCdiContainerAndComponents( + "test", CtorListFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorListFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorCollectionFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorCollectionFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.MANY, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorCollectionFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooFoo.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFoo() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFoo.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFoo.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooBar() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooBar.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooBar.class.getName() + ".new1", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Bar.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooFooNamed() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooFooNamed.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(2, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_a", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + + referenceTemplateDTO = template.references.get(1); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(1, referenceTemplateDTO.minimumCardinality); + assertEquals("foo_b", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + + @Test + public void test_CtorFooOptional() throws Exception { + try (MockCdiContainerAndComponents container = new MockCdiContainerAndComponents( + "test", CtorFooOptional.class.getName())) { + + BeansModel beansModel = container.containerState().beansModel(); + + Collection<OSGiBean> beans = sort(beansModel.getOSGiBeans()); + + assertEquals(1, beans.size()); + + OSGiBean bean = beans.iterator().next(); + + Component component = bean.getComponent(); + + assertNotNull(component); + + ComponentTemplateDTO template = component.getTemplate(); + + assertNotNull(template); + assertNotNull(template.references); + + assertEquals(1, template.references.size()); + + ReferenceTemplateDTO referenceTemplateDTO = template.references.get(0); + + assertEquals(MaximumCardinality.ONE, referenceTemplateDTO.maximumCardinality); + assertEquals(0, referenceTemplateDTO.minimumCardinality); + assertEquals(CtorFooOptional.class.getName() + ".new0", referenceTemplateDTO.name); + assertEquals(ReferenceTemplateDTO.Policy.STATIC, referenceTemplateDTO.policy); + assertEquals( + ReferenceTemplateDTO.PolicyOption.RELUCTANT, referenceTemplateDTO.policyOption); + assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType); + assertEquals("", referenceTemplateDTO.targetFilter); + } + } + +} \ No newline at end of file Added: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/IfBeanClassIsOSGiAnnotatedTest.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/IfBeanClassIsOSGiAnnotatedTest.java?rev=1829114&view=auto ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/IfBeanClassIsOSGiAnnotatedTest.java (added) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/component/IfBeanClassIsOSGiAnnotatedTest.java Sat Apr 14 01:09:09 2018 @@ -0,0 +1,117 @@ +package org.apache.aries.cdi.container.internal.component; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.ElementType.TYPE_USE; +import static org.apache.aries.cdi.container.internal.component.DiscoveryExtension.checkIfBeanClassIsOSGiAnnotated; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.Serializable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.junit.Test; +import org.osgi.service.cdi.annotations.ComponentScoped; +import org.osgi.service.cdi.annotations.Configuration; +import org.osgi.service.cdi.annotations.FactoryComponent; +import org.osgi.service.cdi.annotations.Reference; +import org.osgi.service.cdi.annotations.Service; +import org.osgi.service.cdi.annotations.SingleComponent; + +public class IfBeanClassIsOSGiAnnotatedTest { + + class Bar {} + + @Retention(RetentionPolicy.RUNTIME) + @Target({CONSTRUCTOR, FIELD, METHOD, PARAMETER, TYPE, TYPE_USE}) + @interface Anno {} + + @Anno + @SuppressWarnings("serial") + class Fum extends @Anno Bar implements @Anno Serializable { + @Anno Fum(@Anno String param) {} + @Anno String field; + @Anno String method(@Anno String param) {return param;} + } + + @Test + public void testNotAnnotated() { + assertFalse(checkIfBeanClassIsOSGiAnnotated(Fum.class)); + } + + @Test + public void testFactoryComponent() throws Exception { + @FactoryComponent + class Foo {} + + assertTrue(checkIfBeanClassIsOSGiAnnotated(Foo.class)); + } + + @Test + public void testSingleComponent() throws Exception { + @SingleComponent + class Foo {} + + assertTrue(checkIfBeanClassIsOSGiAnnotated(Foo.class)); + } + + @Test + public void testComponentScoped() throws Exception { + class FooField { @ComponentScoped String field;} + class FooMethod { @ComponentScoped void method() {}} + @ComponentScoped + class FooType {} + + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooField.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooMethod.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooType.class)); + } + + @Test + public void testConfiguration() throws Exception { + class Foo { @SuppressWarnings("unused") + Foo(@Configuration String param) {}} + class FooField { @Configuration String field;} + class FooMethod { @SuppressWarnings("unused") + void method(@Configuration String param) {}} + + assertTrue(checkIfBeanClassIsOSGiAnnotated(Foo.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooField.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooMethod.class)); + } + + @Test + public void testReference() throws Exception { + class Foo { @SuppressWarnings("unused") + Foo(@Reference String param) {}} + class FooField { @Reference String field;} + class FooMethod { @SuppressWarnings("unused") + void method(@Reference String param) {}} + + assertTrue(checkIfBeanClassIsOSGiAnnotated(Foo.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooField.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooMethod.class)); + } + + @Test + public void testService() throws Exception { + @Service + class Foo {} + @SuppressWarnings("serial") + class FooImplements implements @Service Serializable {} + class FooExtends extends @Service Foo {} + class FooField { @Service String field;} + class FooMethod { @Service void method() {}} + + assertTrue(checkIfBeanClassIsOSGiAnnotated(Foo.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooImplements.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooExtends.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooField.class)); + assertTrue(checkIfBeanClassIsOSGiAnnotated(FooMethod.class)); + } +} Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Ignore.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Ignore.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Ignore.java (original) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Ignore.java Sat Apr 14 01:09:09 2018 @@ -14,19 +14,9 @@ package org.apache.aries.cdi.container.internal.configuration; -import static org.osgi.framework.Constants.SERVICE_PID; -import static org.apache.aries.cdi.container.test.TestUtil.*; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.junit.Assert; -import org.junit.Test; -import org.osgi.service.cdi.annotations.ConfigurationPolicy; - public class ConfigurationCallbackTest_Ignore { - @Test +/* @Test public void test_emptyAdd() throws Exception { ConfigurationCallback callback = getCallback(POLICY); @@ -351,5 +341,5 @@ public class ConfigurationCallbackTest_I } private ConfigurationPolicy POLICY = ConfigurationPolicy.IGNORE; - +*/ } Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Optional.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Optional.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Optional.java (original) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Optional.java Sat Apr 14 01:09:09 2018 @@ -14,19 +14,9 @@ package org.apache.aries.cdi.container.internal.configuration; -import static org.osgi.framework.Constants.SERVICE_PID; -import static org.apache.aries.cdi.container.test.TestUtil.*; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.junit.Assert; -import org.junit.Test; -import org.osgi.service.cdi.annotations.ConfigurationPolicy; - public class ConfigurationCallbackTest_Optional { - @Test(expected = IllegalArgumentException.class) +/* @Test(expected = IllegalArgumentException.class) public void test_emptyAdd() throws Exception { ConfigurationCallback callback = getCallback(POLICY); @@ -358,5 +348,5 @@ public class ConfigurationCallbackTest_O } private ConfigurationPolicy POLICY = ConfigurationPolicy.OPTIONAL; - +*/ } Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Require.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Require.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Require.java (original) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationCallbackTest_Require.java Sat Apr 14 01:09:09 2018 @@ -14,19 +14,9 @@ package org.apache.aries.cdi.container.internal.configuration; -import static org.osgi.framework.Constants.SERVICE_PID; -import static org.apache.aries.cdi.container.test.TestUtil.*; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.junit.Assert; -import org.junit.Test; -import org.osgi.service.cdi.annotations.ConfigurationPolicy; - public class ConfigurationCallbackTest_Require { - @Test(expected = IllegalArgumentException.class) +/* @Test(expected = IllegalArgumentException.class) public void test_emptyAdd() throws Exception { ConfigurationCallback callback = getCallback(POLICY); @@ -358,5 +348,5 @@ public class ConfigurationCallbackTest_R } private ConfigurationPolicy POLICY = ConfigurationPolicy.REQUIRE; - +*/ } Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Ignore.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Ignore.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Ignore.java (original) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Ignore.java Sat Apr 14 01:09:09 2018 @@ -14,19 +14,9 @@ package org.apache.aries.cdi.container.internal.configuration; -import static org.apache.aries.cdi.container.test.TestUtil.*; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.junit.Assert; -import org.junit.Test; -import org.osgi.service.cdi.annotations.ConfigurationPolicy; -import org.osgi.service.cm.ManagedService; - public class ConfigurationManagedServiceTest_Ignore { - @Test +/* @Test public void test_emptyAdd() throws Exception { ConfigurationCallback configurationCallback = getCallback(POLICY); @@ -265,5 +255,5 @@ public class ConfigurationManagedService } private ConfigurationPolicy POLICY = ConfigurationPolicy.IGNORE; - +*/ } Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Optional.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Optional.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Optional.java (original) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Optional.java Sat Apr 14 01:09:09 2018 @@ -14,20 +14,9 @@ package org.apache.aries.cdi.container.internal.configuration; -import static org.apache.aries.cdi.container.test.TestUtil.*; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; -import org.osgi.service.cdi.annotations.ConfigurationPolicy; -import org.osgi.service.cm.ManagedService; - public class ConfigurationManagedServiceTest_Optional { - @Test(expected = IllegalArgumentException.class) +/* @Test(expected = IllegalArgumentException.class) public void test_emptyAdd() throws Exception { ConfigurationCallback configurationCallback = getCallback(POLICY); @@ -268,5 +257,5 @@ public class ConfigurationManagedService } private ConfigurationPolicy POLICY = ConfigurationPolicy.OPTIONAL; - +*/ } Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Require.java URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Require.java?rev=1829114&r1=1829113&r2=1829114&view=diff ============================================================================== --- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Require.java (original) +++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/configuration/ConfigurationManagedServiceTest_Require.java Sat Apr 14 01:09:09 2018 @@ -14,20 +14,9 @@ package org.apache.aries.cdi.container.internal.configuration; -import static org.apache.aries.cdi.container.test.TestUtil.*; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; -import org.osgi.service.cdi.annotations.ConfigurationPolicy; -import org.osgi.service.cm.ManagedService; - public class ConfigurationManagedServiceTest_Require { - @Test(expected = IllegalArgumentException.class) +/* @Test(expected = IllegalArgumentException.class) public void test_emptyAdd() throws Exception { ConfigurationCallback configurationCallback = getCallback(POLICY); @@ -268,5 +257,5 @@ public class ConfigurationManagedService } private ConfigurationPolicy POLICY = ConfigurationPolicy.REQUIRE; - +*/ }