package org.apache.aries.blueprint.metadata.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.aries.blueprint.metadata.MutableBeanMetadata; import org.osgi.service.blueprint.reflect.BeanArgument; import org.osgi.service.blueprint.reflect.BeanMetadata; import org.osgi.service.blueprint.reflect.BeanProperty; import org.osgi.service.blueprint.reflect.Metadata; import org.osgi.service.blueprint.reflect.Target; public class MutableBeanMetadataImpl extends MutableComponentMetadataImpl<BeanMetadata, MutableBeanMetadata<BeanMetadata>> implements MutableBeanMetadata<BeanMetadata> { private List<BeanArgument> arguments = new ArrayList<BeanArgument>(); private String className; private String initMethod; private String destroyMethod; private List<BeanProperty> properties = new ArrayList<BeanProperty>(); private String scope; private Target factoryComponent; private String factoryMethod; public BeanMetadata freeze() { throw new UnsupportedOperationException("not implemented yet"); } public BeanMetadata copy() { throw new UnsupportedOperationException("not implemented yet"); } public List<BeanArgument> getArguments() { return arguments; } public String getClassName() { return className; } public String getDestroyMethod() { return destroyMethod; } public Target getFactoryComponent() { return factoryComponent; } public String getFactoryMethod() { return factoryMethod; } public String getInitMethod() { return initMethod; } public List<BeanProperty> getProperties() { return properties; } public String getScope() { return scope; } public MutableBeanMetadata<BeanMetadata> className(String name) { this.className = name; return this; } public MutableBeanMetadata<BeanMetadata> initMethod(String method) { this.initMethod = method; return this; } public MutableBeanMetadata<BeanMetadata> destroyMethod(String method) { this.destroyMethod = method; return this; } public MutableBeanMetadata<BeanMetadata> arguments(List<BeanArgument> arguments) { this.arguments = new ArrayList<BeanArgument>(arguments); return this; } public MutableBeanMetadata<BeanMetadata> arguments(BeanArgument... arguments) { this.arguments = new ArrayList<BeanArgument>(Arrays.asList(arguments)); return this; } public MutableBeanMetadata<BeanMetadata> addArgument(BeanArgument argument) { this.arguments.add(argument); return this; } public MutableBeanMetadata<BeanMetadata> properties(List<BeanProperty> properties) { this.properties = new ArrayList<BeanProperty>(properties); return this; } public MutableBeanMetadata<BeanMetadata> properties(BeanProperty... properties) { this.properties = new ArrayList<BeanProperty>(Arrays.asList(properties)); return this; } public MutableBeanMetadata<BeanMetadata> addProperty(BeanProperty property) { this.properties.add(property); return this; } public MutableBeanMetadata<BeanMetadata> factoryMethod(String method) { this.factoryMethod = method; return this; } public MutableBeanMetadata<BeanMetadata> factoryComponent(Target component) { this.factoryComponent = component; return this; } public MutableBeanMetadata<BeanMetadata> scope(String scope) { this.scope = scope; return this; } public MutableBeanMetadata<BeanMetadata> addProperty(String name, Metadata value) { this.properties.add(new MutableBeanPropertyImpl().name(name).value(value)); return this; } }