blob: ff11dbe736f8026404f64fd0eb247805052ec134 [file] [log] [blame]
package net.sf.taverna.t2.activities.rest.ui.serviceprovider;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import net.sf.taverna.t2.servicedescriptions.AbstractConfigurableServiceProvider;
import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;
import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
import net.sf.taverna.t2.workflowmodel.ConfigurationException;
public class ExampleServiceProvider extends AbstractConfigurableServiceProvider<ExampleServiceProviderConfig>
implements ConfigurableServiceProvider<ExampleServiceProviderConfig>
{
public ExampleServiceProvider()
{
super(new ExampleServiceProviderConfig());
}
/**
* Do the actual search for services. Return using the callBack parameter.
*/
@SuppressWarnings("unchecked")
public void findServiceDescriptionsAsync(
FindServiceDescriptionsCallBack callBack) {
// Use callback.status() for long-running searches
// callBack.status("Resolving example services");
List<ServiceDescription> results = new ArrayList<ServiceDescription>();
// FIXME: Implement the actual service search/lookup instead
// of dummy for-loop
for (int i = 1; i <= getConfiguration().getNumberOfServices(); i++) {
ExampleServiceDesc service = new ExampleServiceDesc();
// Populate the service description bean
service.setExampleString("Example " + i);
service.setExampleUri(getConfiguration().getUri());
// Optional: set description
service.setDescription("Service example number " + i);
results.add(service);
}
// partialResults() can also be called several times from inside
// for-loop if the full search takes a long time
callBack.partialResults(results);
// No more results will be coming
callBack.finished();
}
// @Override
// /**
// * This allows to have a few configured service providers in the Service Panel at startup;
// * useful if there are some prototypical ones that are useful + need to allow users to add their own
// * through manual config.
// */
// public List<ExampleServiceProviderConfig> getDefaultConfigurations() {
// ExampleServiceProviderConfig a = new ExampleServiceProviderConfig();
// a.setUri(URI.create("http://localhost:8181/serviceA"));
// ExampleServiceProviderConfig b = new ExampleServiceProviderConfig();
// b.setUri(URI.create("http://fish.com/serviceB"));
// b.setNumberOfServices(2);
// return Arrays.asList(a, b);
// }
/**
* Icon for service provider
*/
public Icon getIcon() {
return null;
}
/**
* Appears in "Import new services..." in Service Panel
*/
public String getName() {
return "My example service";
}
@Override
/**
* Name of service provider, appears in right click for 'Remove service
* provider'
*/
public String toString() {
return getName() + " " + getConfiguration().getUri();
}
@Override
protected List<? extends Object> getIdentifyingData() {
return Arrays.asList(getConfiguration().getUri());
}
}