blob: eb38e27920bdb87a4bcc724afc46c0b44bad1d88 [file] [log] [blame]
/**
* 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.container;
import static org.apache.aries.cdi.container.test.TestUtil.*;
import static org.junit.Assert.*;
import java.util.Collection;
import org.apache.aries.cdi.container.internal.model.BeansModel;
import org.apache.aries.cdi.container.internal.model.OSGiBean;
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.MaximumCardinality;
import org.osgi.service.cdi.ReferencePolicy;
import org.osgi.service.cdi.ReferencePolicyOption;
import org.osgi.service.cdi.runtime.dto.template.ComponentTemplateDTO;
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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.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();
ComponentTemplateDTO template = bean.geComponentTemplateDTO();
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(ReferencePolicy.DYNAMIC, referenceTemplateDTO.policy);
assertEquals(
ReferencePolicyOption.RELUCTANT, referenceTemplateDTO.policyOption);
assertEquals(Foo.class.getName(), referenceTemplateDTO.serviceType);
assertEquals("", referenceTemplateDTO.targetFilter);
}
}
}