import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;\r
import eu.etaxonomy.cdm.api.service.ILocationService;\r
import eu.etaxonomy.cdm.api.service.IMediaService;\r
+import eu.etaxonomy.cdm.api.service.IMetadataService;\r
import eu.etaxonomy.cdm.api.service.INameService;\r
import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;\r
\r
private ICdmRemoteSource remoteSource;\r
\r
- private Map serviceMap = new HashMap<Class<IService>, IService>();\r
+ private static Map serviceMap = new HashMap<Class<IService>, IService>();\r
\r
private ICdmEntitySessionManager cdmEntitySessionManager;\r
\r
\r
public CdmApplicationRemoteConfiguration(ICdmRemoteSource remoteSource) {\r
this.remoteSource = remoteSource;\r
+ serviceMap.clear();\r
}\r
\r
public void setRemoteSource(ICdmRemoteSource remoteSource) {\r
}\r
\r
private Object getService(Class<?> clazz, String serviceSuffix, CdmAuthenticatedHttpInvokerRequestExecutor executor) {\r
+ return getService(clazz, serviceSuffix, remoteSource, executor);\r
+ }\r
+\r
+ public static Object getService(Class<?> clazz, String serviceSuffix, ICdmRemoteSource remoteSource, CdmAuthenticatedHttpInvokerRequestExecutor executor) {\r
if(serviceMap.containsKey(clazz)) {\r
return serviceMap.get(clazz);\r
}\r
return (IUserService) getService(IUserService.class, "/remoting-public/user.service", new CdmServiceRequestExecutor());\r
}\r
\r
+ @Override\r
+ public IMetadataService getMetadataService() {\r
+ return (IMetadataService) getService(IMetadataService.class, "/remoting-public/metadata.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ public static IMetadataService getMetadataService(ICdmRemoteSource remoteSource) {\r
+ return (IMetadataService) getService(IMetadataService.class, "/remoting-public/metadata.service", remoteSource, new CdmServiceRequestExecutor());\r
+ }\r
+\r
@Override\r
public IGrantedAuthorityService getGrantedAuthorityService(){\r
return (IGrantedAuthorityService) getService(IGrantedAuthorityService.class, "/remoting/grantedauthority.service", new CdmServiceRequestExecutor());\r
checkProperties(cdmSourceProperties);
} else {
throw new CdmRemoteSourceException("Remote source '" + remoteSource + "' does not exist in settings file");
- }
- initDatabaseConnection();
}
private static void checkProperties(Properties cdmSourceProperties) throws CdmRemoteSourceException {
import java.util.Map;
-import org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean;
-
-import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteConfiguration;
+import eu.etaxonomy.cdm.api.service.IMetadataService;
import eu.etaxonomy.cdm.config.CdmSource;
import eu.etaxonomy.cdm.config.CdmSourceException;
import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
private String contextPath;
private String baseUrl;
- private IUserService userService;
+ private IMetadataService metadataService;
/**
* Constructs a CdmRemoteSourceBase object with default values.
setPort(port);
setContextPath(contextPath);
setNomenclaturalCode(nomenclaturalCode);
- initDatabaseConnection();
+ metadataService = CdmApplicationRemoteConfiguration.getMetadataService(this);
}
- protected void initDatabaseConnection() {
- if(getContextPath() == null || getContextPath().equals("")) {
- setBaseUrl("http://" + getServer() + ":" + String.valueOf(getPort()));
- } else {
- setBaseUrl("http://" + getServer() + ":" + String.valueOf(getPort()) + "/" + getContextPath());
- }
- // the database service needs to be initialised (before the spring
- // application context initialsation) since it is required to
- // to make queries related to the source database
- HttpInvokerProxyFactoryBean proxy = new HttpInvokerProxyFactoryBean();
- proxy.setServiceInterface(IUserService.class);
- // FIXME:Remoting need to fix this hardcoded url and make it configurable somehow
- proxy.setServiceUrl(baseUrl + "/remoting-public/user.service");
- proxy.afterPropertiesSet();
- userService = (IUserService) proxy.getObject();
-
- }
/* (non-Javadoc)
* @see eu.etaxonomy.cdm.remote.ICdmRemoteSource#getBaseUrl()
*/
@Override
public String getDbSchemaVersion() throws CdmSourceException {
- return userService.getDbSchemaVersion();
+ return metadataService.getDbSchemaVersion();
}
*/
@Override
public boolean isDbEmpty() throws CdmSourceException {
- return userService.isDbEmpty();
+ return metadataService.isDbEmpty();
}
// if no exception is thrown then we assume that the
// connection is up
// FIXME:Remoting is this really correct?
- userService.getDbSchemaVersion();
+ metadataService.getDbSchemaVersion();
return true;
}
@Override
public Map<MetaDataPropertyName, String> getMetaDataMap() throws CdmSourceException {
- return userService.getCdmMetadataMap();
+ return metadataService.getCdmMetadataMap();
}
import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;
import eu.etaxonomy.cdm.api.service.ILocationService;
import eu.etaxonomy.cdm.api.service.IMediaService;
+import eu.etaxonomy.cdm.api.service.IMetadataService;
import eu.etaxonomy.cdm.api.service.INameService;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
public IProgressMonitorService getProgressMonitorService() {
return defaultApplicationConfiguration.getProgressMonitorService();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IMetadataService getMetadataService() {
+ return defaultApplicationConfiguration.getMetadataService();
+ }
}