package org.apache.aries.blueprint.metadata.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.apache.aries.blueprint.metadata.MutableServiceMetadata;
import org.osgi.service.blueprint.reflect.MapEntry;
import org.osgi.service.blueprint.reflect.RegistrationListener;
import org.osgi.service.blueprint.reflect.ServiceMetadata;
import org.osgi.service.blueprint.reflect.Target;
public class MutableServiceMetadataImpl
extends MutableComponentMetadataImpl<ServiceMetadata, MutableServiceMetadata<ServiceMetadata>>
implements MutableServiceMetadata<ServiceMetadata> {
private int autoExport;
private int ranking;
private Target serviceComponent;
private List<MapEntry> serviceProperties = new ArrayList<MapEntry>();
private List<String> interfaces = new ArrayList<String>();
private List<RegistrationListener> listeners = new ArrayList<RegistrationListener>();
public ServiceMetadata freeze() {
throw new UnsupportedOperationException("not implemented yet");
}
public ServiceMetadata copy() {
throw new UnsupportedOperationException("not implemented yet");
}
public int getAutoExport() {
return autoExport;
}
public List<String> getInterfaces() {
return Collections.unmodifiableList(interfaces);
}
public int getRanking() {
return ranking;
}
public Collection<RegistrationListener> getRegistrationListeners() {
return Collections.unmodifiableCollection(listeners);
}
public Target getServiceComponent() {
return serviceComponent;
}
public List<MapEntry> getServiceProperties() {
return Collections.unmodifiableList(serviceProperties);
}
public MutableServiceMetadata<ServiceMetadata> serviceComponent(
Target component) {
this.serviceComponent = component;
return this;
}
public MutableServiceMetadata<ServiceMetadata> interfaces(
String... interfaces) {
return interfaces(Arrays.asList(interfaces));
}
public MutableServiceMetadata<ServiceMetadata> interfaces(
List<String> interfaces) {
this.interfaces = new ArrayList<String>(interfaces);
return this;
}
public MutableServiceMetadata<ServiceMetadata> autoExport(int autoExport) {
this.autoExport = autoExport;
return this;
}
public MutableServiceMetadata<ServiceMetadata> serviceProperties(
MapEntry... properties) {
return serviceProperties(Arrays.asList(properties));
}
public MutableServiceMetadata<ServiceMetadata> serviceProperties(
List<MapEntry> properties) {
this.serviceProperties = new ArrayList<MapEntry>(properties);
return this;
}
public MutableServiceMetadata<ServiceMetadata> ranking(int rank) {
this.ranking = rank;
return this;
}
public MutableServiceMetadata<ServiceMetadata> addRegistrationListener(
RegistrationListener listener) {
this.listeners.add(listener);
return this;
}
public MutableServiceMetadata<ServiceMetadata> registrationListeners(
RegistrationListener... listeners) {
return registrationListeners(Arrays.asList(listeners));
}
public MutableServiceMetadata<ServiceMetadata> registrationListeners(
Collection<RegistrationListener> listeners) {
this.listeners = new ArrayList<RegistrationListener>(listeners);
return this;
}
}