blob: 18cb1762d3ae22ea13ea78a9830bfe585e08165f [file] [log] [blame]
package net.sf.taverna.t2.servicedescriptions;
import uk.org.taverna.scufl2.api.configurations.Configuration;
public abstract class AbstractConfigurableServiceProvider extends
IdentifiedObject implements ConfigurableServiceProvider {
protected Configuration serviceProviderConfig;
/**
* Construct configurable service provider.
*
* @param configTemplate
* Template configuration
*/
public AbstractConfigurableServiceProvider(Configuration configTemplate) {
if (configTemplate == null)
throw new NullPointerException("Default config can't be null");
serviceProviderConfig = configTemplate;
}
/**
* Package access constructor - only used with {@link #clone()} - otherwise
* use {@link #AbstractConfigurableServiceProvider(Object)}
*/
AbstractConfigurableServiceProvider() {
}
@Override
public AbstractConfigurableServiceProvider clone() {
AbstractConfigurableServiceProvider provider = (AbstractConfigurableServiceProvider) newInstance();
Configuration configuration = getConfiguration();
if (configuration != null)
provider.configure(configuration);
return provider;
}
@Override
public synchronized void configure(Configuration conf) {
if (conf == null)
throw new IllegalArgumentException("Config can't be null");
this.serviceProviderConfig = conf;
}
@Override
public Configuration getConfiguration() {
return serviceProviderConfig;
}
@Override
public String toString() {
return getName() + " " + getConfiguration();
}
}