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> getDefaultServiceDescriptionProviders();

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

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

	public Set<ServiceDescriptionProvider> getUserAddedServiceProviders();

	public Set<ServiceDescriptionProvider> getUserRemovedServiceProviders();

	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);
	
	public void exportCurrentServiceDescriptions(File serviceDescriptionsFile);

}

@@ -58,24 +58,45 @@
 va.io.File;%0A
+import java.net.URL;%0A
 import java.
@@ -1260,20 +1260,116 @@
 Provider
-File
+sURL)%0A%09%09%09throws DeserializationException;%0A%0A%09public void loadServiceProviders(URL serviceProvidersURL
 )%0A%09%09%09thr

Fix for T2-674: Hardcoded default locations. Added loading of service descriptions from a URL.