You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ro...@apache.org on 2018/04/14 01:09:11 UTC
svn commit: r1829114 [3/8] - in /aries/trunk/cdi: ./ cdi-extender/
cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/
cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/command/
cdi-extender/src/main/java/org/apache/ari...
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;
-
+*/
}