/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.felix.ipojo.runtime.core; import org.apache.felix.ipojo.ComponentInstance; import org.apache.felix.ipojo.Factory; import org.apache.felix.ipojo.ServiceContext; import org.apache.felix.ipojo.architecture.ComponentTypeDescription; import org.apache.felix.ipojo.composite.CompositeInstanceDescription; import org.apache.felix.ipojo.composite.CompositeManager; import org.junit.Test; import org.osgi.framework.InvalidSyntaxException; import java.util.Properties; import static org.junit.Assert.*; public class EmptyCompositeTest extends Common { @Test public void testEmptyCompositeCreation() { Factory factory = ipojoHelper.getFactory("composite.empty"); Properties props = new Properties(); props.put("instance.name", "empty"); ComponentInstance ci = null; try { ci = factory.createComponentInstance(props); } catch (Exception e) { e.printStackTrace(); fail("Unacceptable configuration : " + e.getMessage()); } ComponentTypeDescription cd = ci.getFactory().getComponentDescription(); assertEquals("Check component type name", cd.getName(), "composite.empty"); // assertEquals("Check class name (" + cd.getClassName() + ")", cd.getClassName(), "composite"); assertEquals("Check offered service", cd.getprovidedServiceSpecification().length, 0); assertEquals("Check configurable properties", cd.getProperties().length, 0); CompositeInstanceDescription id = (CompositeInstanceDescription) ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state (" + id.getState() + ")", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 0); assertTrue("Check composite manager", ci instanceof CompositeManager); CompositeManager cm = (CompositeManager) ci; ServiceContext sc = cm.getServiceContext(); try { assertEquals("Check number of factories imported", sc.getServiceReferences(Factory.class.getName(), null).length, getContext().getServiceReferences(Factory.class.getName(), null).length); } catch (InvalidSyntaxException e) { fail("Invalid filter : " + e.getMessage()); } ci.dispose(); } @Test public void testInstanceCreation1() { Factory factory = ipojoHelper.getFactory("composite.empty"); Properties props = new Properties(); props.put("instance.name", "empty"); ComponentInstance ci = null; try { ci = factory.createComponentInstance(props); } catch (Exception e) { e.printStackTrace(); fail("Unacceptable configuration : " + e.getMessage()); } assertTrue("Check composite manager", ci instanceof CompositeManager); CompositeManager cm = (CompositeManager) ci; ServiceContext sc = cm.getServiceContext(); try { assertEquals("Check number of factories imported", sc.getServiceReferences(Factory.class.getName(), null).length, getContext().getServiceReferences(Factory.class.getName(), null).length); } catch (InvalidSyntaxException e) { fail("Invalid filter : " + e.getMessage()); } Properties props2 = new Properties(); props2.put("instance.name", "empty2"); ComponentInstance ci2 = null; try { ci2 = factory.createComponentInstance(props2, sc); } catch (Exception e) { e.printStackTrace(); fail("Unacceptable configuration : " + e.getMessage()); } CompositeInstanceDescription id = (CompositeInstanceDescription) ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 1); CompositeInstanceDescription id2 = (CompositeInstanceDescription) id.getContainedInstances()[0]; assertEquals("Check composite instance name", id2.getName(), "empty2"); assertEquals("Check composite instance state", id2.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id2.getContainedInstances().length, 0); ci2.dispose(); //id = ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 0); ci.dispose(); } @Test public void testInstanceCreation2() { Factory factory = ipojoHelper.getFactory("composite.empty"); Properties props = new Properties(); props.put("instance.name", "empty"); ComponentInstance ci = null; try { ci = factory.createComponentInstance(props); } catch (Exception e) { fail("Unacceptable configuration : " + e.getMessage()); } assertTrue("Check composite manager", ci instanceof CompositeManager); CompositeManager cm = (CompositeManager) ci; ServiceContext sc = cm.getServiceContext(); try { assertEquals("Check number of factories imported", sc.getServiceReferences(Factory.class.getName(), null).length, getContext().getServiceReferences(Factory.class.getName(), null).length); } catch (InvalidSyntaxException e) { fail("Invalid filter : " + e.getMessage()); } Factory factory2 = ipojoHelper.getFactory(sc, "composite.empty"); assertNotNull("Check factory2 not null", factory2); Properties props2 = new Properties(); props2.put("instance.name", "empty2"); ComponentInstance ci2 = null; try { ci2 = factory2.createComponentInstance(props2); } catch (Exception e) { fail("Unacceptable configuration : " + e.getMessage()); } CompositeInstanceDescription id = (CompositeInstanceDescription) ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 1); CompositeInstanceDescription id2 = (CompositeInstanceDescription) id.getContainedInstances()[0]; assertEquals("Check composite instance name", id2.getName(), "empty2"); assertEquals("Check composite instance state", id2.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id2.getContainedInstances().length, 0); ci2.dispose(); //id = ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 0); ci.dispose(); } @Test public void testInstanceCreation3() { Factory factory = ipojoHelper.getFactory("composite.empty"); Properties props = new Properties(); props.put("instance.name", "empty"); ComponentInstance ci = null; try { ci = factory.createComponentInstance(props); } catch (Exception e) { fail("Unacceptable configuration : " + e.getMessage()); } assertTrue("Check composite manager", ci instanceof CompositeManager); CompositeManager cm = (CompositeManager) ci; ServiceContext sc = cm.getServiceContext(); try { assertEquals("Check number of factories imported", sc.getServiceReferences(Factory.class.getName(), null).length, getContext().getServiceReferences(Factory.class.getName(), null).length); } catch (InvalidSyntaxException e) { fail("Invalid filter : " + e.getMessage()); } Factory factory2 = ipojoHelper.getFactory(sc, "composite.empty"); assertNotNull("Check factory2 not null", factory2); Properties props2 = new Properties(); props2.put("instance.name", "empty2"); ComponentInstance ci2 = null; try { ci2 = factory2.createComponentInstance(props2, sc); } catch (Exception e) { fail("Unacceptable configuration : " + e.getMessage()); } CompositeInstanceDescription id = (CompositeInstanceDescription) ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 1); CompositeInstanceDescription id2 = (CompositeInstanceDescription) id.getContainedInstances()[0]; assertEquals("Check composite instance name", id2.getName(), "empty2"); assertEquals("Check composite instance state", id2.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id2.getContainedInstances().length, 0); ci2.dispose(); //id = ci.getInstanceDescription(); assertEquals("Check composite instance name", id.getName(), "empty"); assertEquals("Check composite instance state", id.getState(), ComponentInstance.VALID); assertEquals("Check contained instance", id.getContainedInstances().length, 0); ci.dispose(); } }