package org.apache.aries.blueprint.metadata; import java.util.List; import org.apache.aries.blueprint.NamespaceHandler; import org.osgi.service.blueprint.reflect.ComponentMetadata; /** * @param <T> The product that methods like freeze() and copy() will produce. This can be specialized beyond ComponentMetadat * for subinterfaces * @param <U> The result of flow methods. This is needed so that MutableBeanMetadata flow methods can be freely intermixed * with those defined on MutableComponentMetadata. Needs to be at least MutableComponentMetadata. */ public interface MutableComponentMetadata<T extends ComponentMetadata, U extends MutableComponentMetadata<T,?>> extends ComponentMetadata, MutableMetadata<T>, ExtensibleMetadata { U id(String id); U activation(int activation); U dependsOn(String ... dependencies); U dependsOn(List<String> dependencies); U addDependsOn(String dependency); /** * Add bean specific extension data for the given namespace handler. */ void addCustomData(NamespaceHandler handler, Object key, Object data); void addCustomData(Class<? extends NamespaceHandler> handler, Object key, Object data); }