Search in sources :

Example 1 with MapRecipe

use of org.apache.aries.blueprint.di.MapRecipe in project aries by apache.

the class RecipeBuilder method createMapRecipe.

private MapRecipe createMapRecipe(MapMetadata mapValue) {
    String keyType = mapValue.getKeyType();
    String valueType = mapValue.getValueType();
    MapRecipe mr = new MapRecipe(getName(null), HashMap.class, keyType, valueType);
    for (MapEntry entry : mapValue.getEntries()) {
        Recipe key = getValue(entry.getKey(), keyType);
        Recipe val = getValue(entry.getValue(), valueType);
        mr.put(key, val);
    }
    return mr;
}
Also used : MapEntry(org.osgi.service.blueprint.reflect.MapEntry) DependentComponentFactoryRecipe(org.apache.aries.blueprint.di.DependentComponentFactoryRecipe) IdRefRecipe(org.apache.aries.blueprint.di.IdRefRecipe) ComponentFactoryRecipe(org.apache.aries.blueprint.di.ComponentFactoryRecipe) MapRecipe(org.apache.aries.blueprint.di.MapRecipe) Recipe(org.apache.aries.blueprint.di.Recipe) PassThroughRecipe(org.apache.aries.blueprint.di.PassThroughRecipe) CollectionRecipe(org.apache.aries.blueprint.di.CollectionRecipe) ArrayRecipe(org.apache.aries.blueprint.di.ArrayRecipe) RefRecipe(org.apache.aries.blueprint.di.RefRecipe) ValueRecipe(org.apache.aries.blueprint.di.ValueRecipe) MapRecipe(org.apache.aries.blueprint.di.MapRecipe)

Example 2 with MapRecipe

use of org.apache.aries.blueprint.di.MapRecipe in project aries by apache.

the class RecipeBuilder method getValue.

private Recipe getValue(Metadata v, Object groupingType) {
    if (v instanceof NullMetadata) {
        return null;
    } else if (v instanceof ComponentMetadata) {
        return createRecipe((ComponentMetadata) v);
    } else if (v instanceof ValueMetadata) {
        ValueMetadata stringValue = (ValueMetadata) v;
        Object type = stringValue.getType();
        type = (type == null) ? groupingType : type;
        ValueRecipe vr = new ValueRecipe(getName(null), stringValue, type);
        return vr;
    } else if (v instanceof RefMetadata) {
        // TODO: make it work with property-placeholders?
        String componentName = ((RefMetadata) v).getComponentId();
        RefRecipe rr = new RefRecipe(getName(null), componentName);
        return rr;
    } else if (v instanceof CollectionMetadata) {
        CollectionMetadata collectionMetadata = (CollectionMetadata) v;
        Class<?> cl = collectionMetadata.getCollectionClass();
        String type = collectionMetadata.getValueType();
        if (cl == Object[].class) {
            ArrayRecipe ar = new ArrayRecipe(getName(null), type);
            for (Metadata lv : collectionMetadata.getValues()) {
                ar.add(getValue(lv, type));
            }
            return ar;
        } else {
            CollectionRecipe cr = new CollectionRecipe(getName(null), cl != null ? cl : ArrayList.class, type);
            for (Metadata lv : collectionMetadata.getValues()) {
                cr.add(getValue(lv, type));
            }
            return cr;
        }
    } else if (v instanceof MapMetadata) {
        return createMapRecipe((MapMetadata) v);
    } else if (v instanceof PropsMetadata) {
        PropsMetadata mapValue = (PropsMetadata) v;
        MapRecipe mr = new MapRecipe(getName(null), Properties.class, String.class, String.class);
        for (MapEntry entry : mapValue.getEntries()) {
            Recipe key = getValue(entry.getKey(), String.class);
            Recipe val = getValue(entry.getValue(), String.class);
            mr.put(key, val);
        }
        return mr;
    } else if (v instanceof IdRefMetadata) {
        // TODO: make it work with property-placeholders?
        String componentName = ((IdRefMetadata) v).getComponentId();
        IdRefRecipe rnr = new IdRefRecipe(getName(null), componentName);
        return rnr;
    } else {
        throw new IllegalStateException("Unsupported value: " + (v != null ? v.getClass().getName() : "null"));
    }
}
Also used : PropsMetadata(org.osgi.service.blueprint.reflect.PropsMetadata) CollectionMetadata(org.osgi.service.blueprint.reflect.CollectionMetadata) MapEntry(org.osgi.service.blueprint.reflect.MapEntry) RefMetadata(org.osgi.service.blueprint.reflect.RefMetadata) IdRefMetadata(org.osgi.service.blueprint.reflect.IdRefMetadata) DependentComponentFactoryRecipe(org.apache.aries.blueprint.di.DependentComponentFactoryRecipe) IdRefRecipe(org.apache.aries.blueprint.di.IdRefRecipe) ComponentFactoryRecipe(org.apache.aries.blueprint.di.ComponentFactoryRecipe) MapRecipe(org.apache.aries.blueprint.di.MapRecipe) Recipe(org.apache.aries.blueprint.di.Recipe) PassThroughRecipe(org.apache.aries.blueprint.di.PassThroughRecipe) CollectionRecipe(org.apache.aries.blueprint.di.CollectionRecipe) ArrayRecipe(org.apache.aries.blueprint.di.ArrayRecipe) RefRecipe(org.apache.aries.blueprint.di.RefRecipe) ValueRecipe(org.apache.aries.blueprint.di.ValueRecipe) MapRecipe(org.apache.aries.blueprint.di.MapRecipe) ValueMetadata(org.osgi.service.blueprint.reflect.ValueMetadata) IdRefRecipe(org.apache.aries.blueprint.di.IdRefRecipe) RefRecipe(org.apache.aries.blueprint.di.RefRecipe) CollectionMetadata(org.osgi.service.blueprint.reflect.CollectionMetadata) ValueMetadata(org.osgi.service.blueprint.reflect.ValueMetadata) Metadata(org.osgi.service.blueprint.reflect.Metadata) PropsMetadata(org.osgi.service.blueprint.reflect.PropsMetadata) ServiceMetadata(org.osgi.service.blueprint.reflect.ServiceMetadata) PassThroughMetadata(org.apache.aries.blueprint.PassThroughMetadata) RefMetadata(org.osgi.service.blueprint.reflect.RefMetadata) ComponentMetadata(org.osgi.service.blueprint.reflect.ComponentMetadata) IdRefMetadata(org.osgi.service.blueprint.reflect.IdRefMetadata) ReferenceMetadata(org.osgi.service.blueprint.reflect.ReferenceMetadata) ExtendedBeanMetadata(org.apache.aries.blueprint.ExtendedBeanMetadata) BeanMetadata(org.osgi.service.blueprint.reflect.BeanMetadata) NullMetadata(org.osgi.service.blueprint.reflect.NullMetadata) ExtendedReferenceMetadata(org.apache.aries.blueprint.ExtendedReferenceMetadata) ComponentFactoryMetadata(org.apache.aries.blueprint.ext.ComponentFactoryMetadata) DependentComponentFactoryMetadata(org.apache.aries.blueprint.ext.DependentComponentFactoryMetadata) MapMetadata(org.osgi.service.blueprint.reflect.MapMetadata) ReferenceListMetadata(org.osgi.service.blueprint.reflect.ReferenceListMetadata) MutableMapMetadata(org.apache.aries.blueprint.mutable.MutableMapMetadata) ExtendedServiceReferenceMetadata(org.apache.aries.blueprint.ExtendedServiceReferenceMetadata) ArrayList(java.util.ArrayList) ArrayRecipe(org.apache.aries.blueprint.di.ArrayRecipe) ComponentMetadata(org.osgi.service.blueprint.reflect.ComponentMetadata) ValueRecipe(org.apache.aries.blueprint.di.ValueRecipe) CollectionRecipe(org.apache.aries.blueprint.di.CollectionRecipe) IdRefMetadata(org.osgi.service.blueprint.reflect.IdRefMetadata) IdRefRecipe(org.apache.aries.blueprint.di.IdRefRecipe) MapMetadata(org.osgi.service.blueprint.reflect.MapMetadata) MutableMapMetadata(org.apache.aries.blueprint.mutable.MutableMapMetadata) NullMetadata(org.osgi.service.blueprint.reflect.NullMetadata)

Example 3 with MapRecipe

use of org.apache.aries.blueprint.di.MapRecipe in project aries by apache.

the class WiringTest method testWiring.

public void testWiring() throws Exception {
    ComponentDefinitionRegistryImpl registry = parse("/test-wiring.xml");
    Repository repository = new TestBlueprintContainer(registry).getRepository();
    Object obj1 = repository.create("pojoA");
    assertNotNull(obj1);
    assertTrue(obj1 instanceof PojoA);
    PojoA pojoa = (PojoA) obj1;
    // test singleton scope
    assertTrue(obj1 == repository.create("pojoA"));
    Object obj2 = repository.create("pojoB");
    assertNotNull(obj2);
    assertTrue(obj2 instanceof PojoB);
    PojoB pojob = (PojoB) obj2;
    assertNotNull(pojoa.getPojob());
    assertNotNull(pojoa.getPojob().getUri());
    assertNotNull(pojoa.getList());
    assertEquals("list value", pojoa.getList().get(0));
    assertEquals(new Integer(55), pojoa.getList().get(2));
    assertEquals(URI.create("http://geronimo.apache.org"), pojoa.getList().get(3));
    Object c0 = pojoa.getList().get(1);
    Object c1 = pojoa.getList().get(4);
    assertNotNull(c0);
    assertNotNull(c1);
    assertEquals(PojoB.class, c0.getClass());
    assertEquals(PojoB.class, c1.getClass());
    assertNotSame(c0, c1);
    assertNotNull(pojoa.getArray());
    assertEquals("list value", pojoa.getArray()[0]);
    assertEquals(pojob, pojoa.getArray()[1]);
    assertEquals(new Integer(55), pojoa.getArray()[2]);
    assertEquals(URI.create("http://geronimo.apache.org"), pojoa.getArray()[3]);
    assertNotNull(pojoa.getSet());
    assertTrue(pojoa.getSet().contains("set value"));
    assertTrue(pojoa.getSet().contains(pojob.getUri()));
    assertTrue(pojoa.getSet().contains(URI.create("http://geronimo.apache.org")));
    assertNotNull(pojoa.getMap());
    assertEquals("val", pojoa.getMap().get("key"));
    assertEquals(pojob, pojoa.getMap().get(pojob));
    assertEquals(URI.create("http://geronimo.apache.org"), pojoa.getMap().get(new Integer(5)));
    assertNotNull(pojoa.getProps());
    assertEquals("value1", pojoa.getProps().get("key1"));
    assertEquals("value2", pojoa.getProps().get("2"));
    assertEquals("bar", pojoa.getProps().get("foo"));
    assertNotNull(pojoa.getNumber());
    assertEquals(new BigInteger("10"), pojoa.getNumber());
    assertNotNull(pojoa.getIntArray());
    assertEquals(3, pojoa.getIntArray().length);
    assertEquals(1, pojoa.getIntArray()[0]);
    assertEquals(50, pojoa.getIntArray()[1]);
    assertEquals(100, pojoa.getIntArray()[2]);
    assertNotNull(pojoa.getNumberArray());
    assertEquals(4, pojoa.getNumberArray().length);
    assertEquals(new Integer(1), pojoa.getNumberArray()[0]);
    assertEquals(new BigInteger("50"), pojoa.getNumberArray()[1]);
    assertEquals(new Long(100), pojoa.getNumberArray()[2]);
    assertEquals(new Integer(200), pojoa.getNumberArray()[3]);
    // test init-method
    assertEquals(true, pojob.getInitCalled());
    // test service
    Object obj3 = repository.create("service1");
    assertNotNull(obj3);
    assertTrue(obj3 instanceof ServiceRegistration);
    ExecutionContext.Holder.setContext((ExecutionContext) repository);
    for (Recipe r : ((ServiceRecipe) repository.getRecipe("service1")).getDependencies()) {
        if (r instanceof MapRecipe) {
            Map m = (Map) r.create();
            assertEquals("value1", m.get("key1"));
            assertEquals("value2", m.get("key2"));
            assertTrue(m.get("key3") instanceof List);
        }
    }
    ExecutionContext.Holder.setContext(null);
    // tests 'prototype' scope
    Object obj4 = repository.create("pojoC");
    assertNotNull(obj4);
    assertTrue(obj4 != repository.create("pojoC"));
    repository.destroy();
    // test destroy-method
    assertEquals(true, pojob.getDestroyCalled());
}
Also used : ServiceRecipe(org.apache.aries.blueprint.container.ServiceRecipe) MapRecipe(org.apache.aries.blueprint.di.MapRecipe) Recipe(org.apache.aries.blueprint.di.Recipe) MapRecipe(org.apache.aries.blueprint.di.MapRecipe) ServiceRecipe(org.apache.aries.blueprint.container.ServiceRecipe) BigInteger(java.math.BigInteger) Repository(org.apache.aries.blueprint.di.Repository) BlueprintRepository(org.apache.aries.blueprint.container.BlueprintRepository) BigInteger(java.math.BigInteger) ArrayList(java.util.ArrayList) List(java.util.List) ComponentDefinitionRegistryImpl(org.apache.aries.blueprint.parser.ComponentDefinitionRegistryImpl) HashMap(java.util.HashMap) Map(java.util.Map) ServiceRegistration(org.osgi.framework.ServiceRegistration)

Aggregations

MapRecipe (org.apache.aries.blueprint.di.MapRecipe)3 Recipe (org.apache.aries.blueprint.di.Recipe)3 ArrayList (java.util.ArrayList)2 ArrayRecipe (org.apache.aries.blueprint.di.ArrayRecipe)2 CollectionRecipe (org.apache.aries.blueprint.di.CollectionRecipe)2 ComponentFactoryRecipe (org.apache.aries.blueprint.di.ComponentFactoryRecipe)2 DependentComponentFactoryRecipe (org.apache.aries.blueprint.di.DependentComponentFactoryRecipe)2 IdRefRecipe (org.apache.aries.blueprint.di.IdRefRecipe)2 PassThroughRecipe (org.apache.aries.blueprint.di.PassThroughRecipe)2 RefRecipe (org.apache.aries.blueprint.di.RefRecipe)2 ValueRecipe (org.apache.aries.blueprint.di.ValueRecipe)2 MapEntry (org.osgi.service.blueprint.reflect.MapEntry)2 BigInteger (java.math.BigInteger)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 ExtendedBeanMetadata (org.apache.aries.blueprint.ExtendedBeanMetadata)1 ExtendedReferenceMetadata (org.apache.aries.blueprint.ExtendedReferenceMetadata)1 ExtendedServiceReferenceMetadata (org.apache.aries.blueprint.ExtendedServiceReferenceMetadata)1 PassThroughMetadata (org.apache.aries.blueprint.PassThroughMetadata)1