package com.revolsys.webservice; import java.util.List; import java.util.Map; import com.revolsys.collection.Parent; import com.revolsys.collection.map.MapEx; import com.revolsys.io.connection.AbstractConnection; import com.revolsys.io.map.MapObjectFactory; import com.revolsys.util.Exceptions; public class WebServiceConnection extends AbstractConnection<WebServiceConnection, WebServiceConnectionRegistry> implements Parent<Object> { private WebService<?> webService; public WebServiceConnection(final WebServiceConnectionRegistry registry, final Map<String, ? extends Object> config) { super(registry, null, config); } public WebServiceConnection(final WebServiceConnectionRegistry registry, final String name, final WebService<?> webService) { super(registry, name); this.webService = webService; } @Override public List<Object> getChildren() { final WebService<Object> webService = getWebService(); return webService.getChildren(); } @Override public String getIconName() { return "world"; } @Override public WebServiceConnectionRegistry getRegistry() { return super.getRegistry(); } @SuppressWarnings("unchecked") public <W extends WebService<?>> W getWebService() { synchronized (this) { if (this.webService == null || this.webService.isClosed()) { this.webService = null; try { final MapEx config = getConfig(); this.webService = MapObjectFactory.toObject(config); } catch (final Throwable e) { Exceptions.throwUncheckedException(e); } } } return (W)this.webService; } @Override public void refresh() { final WebService<?> webService = getWebService(); final MapEx config = getConfig(); webService.setProperties(config); webService.refresh(); } }