use of org.osgi.service.blueprint.reflect.ComponentMetadata in project aries by apache.
the class ParserTest method testParseComponent.
public void testParseComponent() throws Exception {
ComponentDefinitionRegistry registry = parse("/test-simple-component.xml");
assertNotNull(registry);
ComponentMetadata component = registry.getComponentDefinition("pojoA");
assertNotNull(component);
assertEquals("pojoA", component.getId());
assertTrue(component instanceof BeanMetadata);
BeanMetadata local = (BeanMetadata) component;
List<String> deps = local.getDependsOn();
assertNotNull(deps);
assertEquals(2, deps.size());
assertTrue(deps.contains("pojoB"));
assertTrue(deps.contains("pojoC"));
assertEquals("org.apache.aries.blueprint.pojos.PojoA", local.getClassName());
List<BeanArgument> params = local.getArguments();
assertNotNull(params);
assertEquals(6, params.size());
BeanArgument param = params.get(0);
assertNotNull(param);
assertEquals(-1, param.getIndex());
assertNull(param.getValueType());
assertNotNull(param.getValue());
assertTrue(param.getValue() instanceof ValueMetadata);
assertEquals("val0", ((ValueMetadata) param.getValue()).getStringValue());
assertNull(((ValueMetadata) param.getValue()).getType());
param = params.get(1);
assertNotNull(param);
assertEquals(-1, param.getIndex());
assertNull(param.getValueType());
assertNotNull(param.getValue());
assertTrue(param.getValue() instanceof RefMetadata);
assertEquals("val1", ((RefMetadata) param.getValue()).getComponentId());
param = params.get(2);
assertNotNull(param);
assertEquals(-1, param.getIndex());
assertNull(param.getValueType());
assertNotNull(param.getValue());
assertTrue(param.getValue() instanceof NullMetadata);
param = params.get(3);
assertNotNull(param);
assertEquals(-1, param.getIndex());
assertEquals("java.lang.String", param.getValueType());
assertNotNull(param.getValue());
assertTrue(param.getValue() instanceof ValueMetadata);
assertEquals("val3", ((ValueMetadata) param.getValue()).getStringValue());
assertNull(((ValueMetadata) param.getValue()).getType());
param = params.get(4);
assertNotNull(param);
assertEquals(-1, param.getIndex());
assertNull(param.getValueType());
assertNotNull(param.getValue());
assertTrue(param.getValue() instanceof CollectionMetadata);
CollectionMetadata array = (CollectionMetadata) param.getValue();
assertNull(array.getValueType());
assertNotNull(array.getValues());
assertEquals(3, array.getValues().size());
assertTrue(array.getValues().get(0) instanceof ValueMetadata);
assertTrue(array.getValues().get(1) instanceof ComponentMetadata);
assertTrue(array.getValues().get(2) instanceof NullMetadata);
param = params.get(5);
assertNotNull(param);
assertEquals(-1, param.getIndex());
assertNull(param.getValueType());
assertNotNull(param.getValue());
assertTrue(param.getValue() instanceof RefMetadata);
assertEquals("pojoB", ((RefMetadata) param.getValue()).getComponentId());
assertEquals(null, local.getInitMethod());
assertEquals(null, local.getDestroyMethod());
// test pojoB
ComponentMetadata pojoB = registry.getComponentDefinition("pojoB");
assertNotNull(pojoB);
assertEquals("pojoB", pojoB.getId());
assertTrue(pojoB instanceof BeanMetadata);
BeanMetadata pojoBLocal = (BeanMetadata) pojoB;
assertEquals("initPojo", pojoBLocal.getInitMethod());
// assertEquals("", pojoBLocal.getDestroyMethod());
params = pojoBLocal.getArguments();
assertNotNull(params);
assertEquals(2, params.size());
param = params.get(0);
assertNotNull(param);
assertEquals(1, param.getIndex());
param = params.get(1);
assertNotNull(param);
assertEquals(0, param.getIndex());
}
use of org.osgi.service.blueprint.reflect.ComponentMetadata in project aries by apache.
the class ParserTest method testCustomNodes.
public void testCustomNodes() throws Exception {
ComponentDefinitionRegistry registry = parse("/test-custom-nodes.xml", new TestNamespaceHandlerSet());
ComponentMetadata metadata;
metadata = registry.getComponentDefinition("fooService");
assertNotNull(metadata);
assertTrue(metadata instanceof MyLocalComponentMetadata);
MyLocalComponentMetadata comp1 = (MyLocalComponentMetadata) metadata;
assertEquals(true, comp1.getCacheReturnValues());
assertEquals("getVolatile", comp1.getOperation());
metadata = registry.getComponentDefinition("barService");
assertNotNull(metadata);
assertTrue(metadata instanceof BeanMetadata);
BeanMetadata comp2 = (BeanMetadata) metadata;
assertEquals(1, comp2.getProperties().size());
BeanProperty propertyMetadata = comp2.getProperties().get(0);
assertEquals("localCache", propertyMetadata.getName());
Metadata propertyValue = propertyMetadata.getValue();
assertTrue(propertyValue instanceof BeanMetadata);
BeanMetadata innerComp = (BeanMetadata) propertyValue;
assertEquals("org.apache.aries.CacheProperty", innerComp.getClassName());
metadata = registry.getComponentDefinition("myCache");
assertNotNull(metadata);
assertTrue(metadata instanceof BeanMetadata);
BeanMetadata comp3 = (BeanMetadata) metadata;
assertEquals("org.apache.aries.Cache", comp3.getClassName());
}
use of org.osgi.service.blueprint.reflect.ComponentMetadata in project aries by apache.
the class ParserTest method testScopes.
public void testScopes() throws Exception {
ComponentDefinitionRegistry registry = parse("/test-scopes.xml", new TestNamespaceHandlerSet());
ComponentMetadata metadata = registry.getComponentDefinition("fooService");
assertNotNull(metadata);
assertTrue(metadata instanceof BeanMetadata);
BeanMetadata bm = (BeanMetadata) metadata;
assertNull(bm.getScope());
metadata = registry.getComponentDefinition("barService");
assertNotNull(metadata);
assertTrue(metadata instanceof BeanMetadata);
bm = (BeanMetadata) metadata;
assertEquals("prototype", bm.getScope());
metadata = registry.getComponentDefinition("bazService");
assertNotNull(metadata);
assertTrue(metadata instanceof BeanMetadata);
bm = (BeanMetadata) metadata;
assertEquals("singleton", bm.getScope());
metadata = registry.getComponentDefinition("booService");
assertNotNull(metadata);
assertTrue(metadata instanceof BeanMetadata);
bm = (BeanMetadata) metadata;
assertEquals("{http://test.org}boo", bm.getScope());
}
use of org.osgi.service.blueprint.reflect.ComponentMetadata in project aries by apache.
the class BlueprintContainerImpl method getMetadata.
private <T extends ComponentMetadata> void getMetadata(Class<T> clazz, Metadata component, Collection<T> metadatas) {
if (component == null) {
return;
}
if (clazz.isInstance(component)) {
metadatas.add(clazz.cast(component));
}
if (component instanceof BeanMetadata) {
getMetadata(clazz, ((BeanMetadata) component).getFactoryComponent(), metadatas);
for (BeanArgument arg : ((BeanMetadata) component).getArguments()) {
getMetadata(clazz, arg.getValue(), metadatas);
}
for (BeanProperty prop : ((BeanMetadata) component).getProperties()) {
getMetadata(clazz, prop.getValue(), metadatas);
}
}
if (component instanceof CollectionMetadata) {
for (Metadata m : ((CollectionMetadata) component).getValues()) {
getMetadata(clazz, m, metadatas);
}
}
if (component instanceof MapMetadata) {
for (MapEntry m : ((MapMetadata) component).getEntries()) {
getMetadata(clazz, m.getKey(), metadatas);
getMetadata(clazz, m.getValue(), metadatas);
}
}
if (component instanceof PropsMetadata) {
for (MapEntry m : ((PropsMetadata) component).getEntries()) {
getMetadata(clazz, m.getKey(), metadatas);
getMetadata(clazz, m.getValue(), metadatas);
}
}
if (component instanceof ServiceReferenceMetadata) {
for (ReferenceListener l : ((ServiceReferenceMetadata) component).getReferenceListeners()) {
getMetadata(clazz, l.getListenerComponent(), metadatas);
}
}
if (component instanceof ServiceMetadata) {
getMetadata(clazz, ((ServiceMetadata) component).getServiceComponent(), metadatas);
for (MapEntry m : ((ServiceMetadata) component).getServiceProperties()) {
getMetadata(clazz, m.getKey(), metadatas);
getMetadata(clazz, m.getValue(), metadatas);
}
for (RegistrationListener l : ((ServiceMetadata) component).getRegistrationListeners()) {
getMetadata(clazz, l.getListenerComponent(), metadatas);
}
}
}
use of org.osgi.service.blueprint.reflect.ComponentMetadata in project aries by apache.
the class BlueprintContainerImpl method getMetadata.
public <T extends ComponentMetadata> Collection<T> getMetadata(Class<T> clazz) {
Collection<T> metadatas = new ArrayList<T>();
for (String name : componentDefinitionRegistry.getComponentDefinitionNames()) {
ComponentMetadata component = componentDefinitionRegistry.getComponentDefinition(name);
getMetadata(clazz, component, metadatas);
}
metadatas = Collections.unmodifiableCollection(metadatas);
return metadatas;
}
Aggregations