package org.apache.aries.blueprint.metadata.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import org.apache.aries.blueprint.metadata.MutableServiceReferenceMetadata; import org.osgi.service.blueprint.reflect.ReferenceListener; import org.osgi.service.blueprint.reflect.ServiceReferenceMetadata; public class MutableServiceReferenceMetadataImpl<T extends ServiceReferenceMetadata, U extends MutableServiceReferenceMetadata<T,?>> extends MutableComponentMetadataImpl<T, U> implements MutableServiceReferenceMetadata<T,U> { private int availability; private String componentName; private String filter; private String interfaceName; private Collection<ReferenceListener> listeners = new ArrayList<ReferenceListener>(); public int getAvailability() { return availability; } public String getComponentName() { return componentName; } public String getFilter() { return filter; } public String getInterface() { return interfaceName; } public Collection<ReferenceListener> getReferenceListeners() { return Collections.unmodifiableCollection(listeners); } public T freeze() { throw new UnsupportedOperationException("not implemented yet"); } public T copy() { throw new UnsupportedOperationException("not implemented yet"); } public U availability(int availability) { this.availability = availability; return (U) this; } public U serviceInterface(String interfaceClass) { this.interfaceName = interfaceClass; return (U) this; } public U componentName(String name) { this.componentName = name; return (U) this; } public U filter(String filter) { this.filter = filter; return (U) this; } public U addReferenceListener(ReferenceListener listener) { this.listeners.add(listener); return (U) this; } public U referenceListeners(ReferenceListener... listeners) { this.listeners = new ArrayList<ReferenceListener>(Arrays.asList(listeners)); return (U) this; } public U referenceListeners(Collection<ReferenceListener> listeners) { this.listeners = new ArrayList<ReferenceListener>(listeners); return (U) this; } }