package net.sf.taverna.t2.servicedescriptions;

import java.io.File;
import java.util.List;
import java.util.Set;

import net.sf.taverna.t2.lang.observer.Observable;
import net.sf.taverna.t2.servicedescriptions.events.ServiceDescriptionRegistryEvent;
import net.sf.taverna.t2.workflowmodel.serialization.DeserializationException;

public interface ServiceDescriptionRegistry extends
		Observable<ServiceDescriptionRegistryEvent> {

	public void addServiceDescriptionProvider(
			ServiceDescriptionProvider provider);

	public Set<ServiceDescriptionProvider> getLocalServiceProviders();
	
	public Set<ServiceDescriptionProvider> getServiceDescriptionProviders();

	@SuppressWarnings("unchecked")
	public Set<ServiceDescription> getServiceDescriptions();

	@SuppressWarnings("unchecked")
	public List<ConfigurableServiceProvider> getUnconfiguredServiceProviders();

	public void loadServiceProviders() throws DeserializationException;

	public void loadServiceProviders(File serviceProviderFile)
			throws DeserializationException;

	public void refresh();

	public void removeServiceDescriptionProvider(
			ServiceDescriptionProvider provider);

	public void saveServiceDescriptions();

	public void saveServiceDescriptions(File serviceDescriptionsFile);

	
}

@@ -558,20 +558,100 @@
  get
-LocalService
+UserAddedServiceProviders();%0A%09%0A%09public Set%3CServiceDescriptionProvider%3E getServiceDescription
 Prov
@@ -728,24 +728,45 @@
 onProviders(
+ServiceDescription sd
 );%0A%0A%09@Suppre
@@ -1349,12 +1349,87 @@
 File);%0A%0A
+%09public Set%3CServiceDescriptionProvider%3E getUserRemovedServiceProviders();%0A%0A
 %09%0A%7D%0A

Added new capability to find the service providers for a given description