package com.revolsys.webservice; import java.io.File; import com.revolsys.collection.map.MapEx; import com.revolsys.io.connection.AbstractConnectionRegistry; import com.revolsys.io.connection.ConnectionRegistry; import com.revolsys.io.connection.ConnectionRegistryManager; import com.revolsys.logging.Logs; import com.revolsys.record.io.format.json.Json; import com.revolsys.spring.resource.Resource; public class WebServiceConnectionRegistry extends AbstractConnectionRegistry<WebServiceConnection> { private static final ThreadLocal<WebServiceConnectionRegistry> threadRegistry = new ThreadLocal<>(); public static WebServiceConnectionRegistry getForThread() { return WebServiceConnectionRegistry.threadRegistry.get(); } public static WebServiceConnectionRegistry setForThread( final WebServiceConnectionRegistry registry) { final WebServiceConnectionRegistry oldValue = getForThread(); WebServiceConnectionRegistry.threadRegistry.set(registry); return oldValue; } public WebServiceConnectionRegistry( final ConnectionRegistryManager<? extends ConnectionRegistry<WebServiceConnection>> connectionManager, final String name, final boolean visible, final boolean readOnly, final Resource directoryResource) { super(connectionManager, name, visible, readOnly, directoryResource, "webServiceConnection"); } public WebServiceConnectionRegistry(final String name) { this(null, name, true); } public WebServiceConnectionRegistry(final String name, final Resource resource, final boolean readOnly) { this(null, name, true, readOnly, resource); } protected WebServiceConnectionRegistry(final WebServiceConnectionManager connectionManager, final String name, final boolean visible) { this(connectionManager, name, visible, false, null); } protected WebServiceConnectionRegistry(final WebServiceConnectionManager connectionManager, final String name, final Resource resource) { this(connectionManager, name, true, false, resource); } public WebServiceConnection addConnection(final MapEx config) { getConnectionName(config, null, true); final WebServiceConnection connection = new WebServiceConnection(this, config); addConnection(connection); return connection; } public void addConnection(final String name, final WebService<?> webService) { final WebServiceConnection connection = new WebServiceConnection(this, name, webService); addConnection(connection); } public void addConnection(final WebServiceConnection connection) { final String name = connection.getName(); addConnection(name, connection); } @Override public String getIconName() { return "folder:world"; } @Override protected WebServiceConnection loadConnection(final File connectionFile, final boolean importConnection) { final MapEx config = Json.toMap(connectionFile); final String name = getConnectionName(config, connectionFile, importConnection); try { final WebServiceConnection connection = new WebServiceConnection(this, config); if (!importConnection) { connection.setConnectionFile(connectionFile); } addConnection(name, connection); return connection; } catch (final Throwable e) { Logs.error(this, "Error creating web service from: " + connectionFile, e); return null; } } }