package org.apache.aries.blueprint.metadata;
import java.util.List;
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 interface MutableBeanMetadata<T extends BeanMetadata>
extends MutableComponentMetadata<T, MutableBeanMetadata<T>>, BeanMetadata {
MutableBeanMetadata<T> className(String name);
MutableBeanMetadata<T> initMethod(String method);
MutableBeanMetadata<T> destroyMethod(String method);
/**
* Specify / overwrite existing arguments
*/
MutableBeanMetadata<T> arguments(List<BeanArgument> arguments);
/**
* Specify / overwrite existing arguments
*/
MutableBeanMetadata<T> arguments(BeanArgument ... arguments);
/**
* Add an argument
*/
MutableBeanMetadata<T> addArgument(BeanArgument argument);
/**
* Specify / overwrite existing properties
*/
MutableBeanMetadata<T> properties(List<BeanProperty> properties);
/**
* Specify / overwrite existing properties
*/
MutableBeanMetadata<T> properties(BeanProperty ... properties);
/**
* Add a property
*/
MutableBeanMetadata<T> addProperty(BeanProperty property);
MutableBeanMetadata<T> addProperty(String name, Metadata value);
MutableBeanMetadata<T> factoryMethod(String method);
MutableBeanMetadata<T> factoryComponent(Target component);
MutableBeanMetadata<T> scope(String scope);
}