From d0fbe90d2e60d405518c43989288a85ffa35a777 Mon Sep 17 00:00:00 2001 From: Cherian Mathew Date: Fri, 4 Apr 2014 15:42:38 +0000 Subject: [PATCH] comments and javadoc --- .../CdmApplicationRemoteConfiguration.java | 50 ++++++++------ .../CdmApplicationRemoteController.java | 68 ++++++++++++++----- .../cdm/remote/CdmPersistentRemoteSource.java | 32 +++++++++ .../etaxonomy/cdm/remote/CdmRemoteSource.java | 33 ++++++++- .../cdm/remote/CdmRemoteSourceBase.java | 62 ++++++++++++++++- .../cdm/remote/ICdmRemoteSource.java | 25 ++++++- 6 files changed, 226 insertions(+), 44 deletions(-) diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java index 690972c10..95fed9d67 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java @@ -1,6 +1,5 @@ -// $Id: CdmApplicationDefaultConfiguration.java 11680 2011-04-04 17:07:39Z a.mueller $ /** -* Copyright (C) 2007 EDIT +* Copyright (C) 2014 EDIT * European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu * @@ -25,17 +24,14 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolderMock; import eu.etaxonomy.cdm.api.service.IDatabaseService; import eu.etaxonomy.cdm.ext.geo.IEditGeoService; + /** - * @author a.mueller - * @created 21.05.2008 - * @version 1.0 - */ -/** - * @author a.mueller - * @author j.koch + * CDM Application Configuration class which manages the configuration for remoting + * clients + * */ -// FIXME:Remoting This bean naming is a hack to make remoting work, in conjunction with the -// exclude filter in the application package set in the remotingApplicationContext +//FIXME:Remoting This bean naming is a hack to make remoting work, in conjunction with the +//exclude filter in the application package set in the remotingApplicationContext //@Component("cdmApplicationDefaultConfiguration") public class CdmApplicationRemoteConfiguration extends CdmApplicationDefaultConfiguration { @@ -48,12 +44,9 @@ public class CdmApplicationRemoteConfiguration extends CdmApplicationDefaultConf public CdmApplicationRemoteConfiguration() { } - @Override - public IDatabaseService getDatabaseService() throws UnsupportedOperationException { - throw new UnsupportedOperationException("getDatabaseService is not implemented for CdmApplicationRemoteConfiguration"); - } - - + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#getTransactionManager() + */ @Override public PlatformTransactionManager getTransactionManager() throws UnsupportedOperationException { throw new UnsupportedOperationException("getTransactionManager is not implemented for CdmApplicationRemoteConfiguration"); @@ -78,29 +71,46 @@ public class CdmApplicationRemoteConfiguration extends CdmApplicationDefaultConf } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#commitTransaction(org.springframework.transaction.TransactionStatus) + */ @Override public void commitTransaction(TransactionStatus txStatus) throws UnsupportedOperationException { throw new UnsupportedOperationException("commitTransaction is not implemented for CdmApplicationRemoteConfiguration"); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#NewConversation() + */ @Override - public ConversationHolder NewConversation() { - // TODO Auto-generated method stub + public ConversationHolder NewConversation() { return new ConversationHolderMock(); } + /** + * @return + */ public IEditGeoService getEditGeoService() { return this.editGeoService; } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#setDataSource(javax.sql.DataSource) + */ @Override - public void setDataSource(DataSource dataSource) { + public void setDataSource(DataSource dataSource) { } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#setTransactionManager(org.springframework.transaction.PlatformTransactionManager) + */ @Override public void setTransactionManager(PlatformTransactionManager transactionManager) { } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#setSessionFactory(org.hibernate.SessionFactory) + */ @Override public void setSessionFactory(SessionFactory sessionFactory) { } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteController.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteController.java index 20f7ed744..2afb68191 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteController.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteController.java @@ -1,3 +1,13 @@ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + + package eu.etaxonomy.cdm.api.application; import java.util.List; @@ -17,6 +27,13 @@ import eu.etaxonomy.cdm.common.monitor.NullProgressMonitor; import eu.etaxonomy.cdm.common.monitor.SubProgressMonitor; import eu.etaxonomy.cdm.remote.ICdmRemoteSource; +/** + * CDM Application Controller class for remoting clients + * FIXME:Remoting extending {@link CdmApplicationController} is a temporary workaround. + * The {@link CdmApplicationController} should be split into a CdmApplicationControllerBase + * class with {@link CdmApplicationController} and this class as subclasses + * + */ public class CdmApplicationRemoteController extends CdmApplicationController { private static final Logger logger = Logger.getLogger(CdmApplicationRemoteController.class); @@ -25,6 +42,16 @@ public class CdmApplicationRemoteController extends CdmApplicationController { private final Resource applicationContextResource; private final IProgressMonitor progressMonitor; + /** + * Creates new instance of CdmApplicationRemoteController + * + * @param applicationContextResource + * @param remoteSource + * @param omitTermLoading + * @param progressMonitor + * @param listeners + * @return + */ public static CdmApplicationRemoteController NewInstance(Resource applicationContextResource, ICdmRemoteSource remoteSource, boolean omitTermLoading, @@ -38,6 +65,15 @@ public class CdmApplicationRemoteController extends CdmApplicationController { } + /** + * Constructs CdmApplicationRemoteController + * + * @param applicationContextResource + * @param remoteSource + * @param omitTermLoading + * @param progressMonitor + * @param listeners + */ private CdmApplicationRemoteController(Resource applicationContextResource, ICdmRemoteSource remoteSource, boolean omitTermLoading, @@ -52,14 +88,22 @@ public class CdmApplicationRemoteController extends CdmApplicationController { } /** + * Returns classpath resource for application context config file + * * @return */ protected static ClassPathResource getClasspathResource() { return new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE); } + + /** - * Sets the application context to a new spring ApplicationContext by using the according data source and initializes the Controller. - * @param dataSource + * Creates and starts a new spring application context + * + * @param remoteSource object for connecting to an http-invoker server + * @param omitTermLoading + * @param listeners + * @return */ protected boolean setNewRemoteSource(ICdmRemoteSource remoteSource, boolean omitTermLoading, @@ -82,11 +126,6 @@ public class CdmApplicationRemoteController extends CdmApplicationController { pspc.setProperties(properties); applicationContext.addBeanFactoryPostProcessor(pspc); progressMonitor.worked(1); - -// BeanDefinition remoteSourceBean = remoteSource.getRemoteSourceBean(); -// remoteSourceBean.setAttribute("isLazy", false); -// applicationContext.registerBeanDefinition("dataSource", remoteSourceBean); - XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext); progressMonitor.subTask("Registering resources."); @@ -119,18 +158,11 @@ public class CdmApplicationRemoteController extends CdmApplicationController { return true; } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.api.application.CdmApplicationController#init() + */ @Override - protected void init(){ - logger.debug("Init " + this.getClass().getName() + " ... "); - if (logger.isDebugEnabled()){for (String beanName : applicationContext.getBeanDefinitionNames()){ logger.debug(beanName);}} - //TODO delete next row (was just for testing) - if (logger.isInfoEnabled()){ - logger.info("Registered Beans: "); - String[] beanNames = applicationContext.getBeanDefinitionNames(); - for (String beanName : beanNames){ - logger.info(beanName); - } - } + protected void init(){ configuration = (ICdmApplicationConfiguration)applicationContext.getBean("cdmApplicationRemoteConfiguration"); } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java index be568eb22..342376c34 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java @@ -1,13 +1,45 @@ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ + package eu.etaxonomy.cdm.remote; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; +/** + * Class representing a CDM remote source which can be persisted to a source config file + * + */ public class CdmPersistentRemoteSource extends CdmRemoteSourceBase { + /** + * Creates a new instance of CdmPersistentRemoteSource + * + * @param name + * @param server + * @param port + * @param contextPath + * @param nomenclaturalCode + * @return + */ public CdmPersistentRemoteSource NewInstance(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { return new CdmPersistentRemoteSource(name, server, port, contextPath, nomenclaturalCode); } + /** + * Creates a new CdmPersistentRemoteSource + * + * @param name + * @param server + * @param port + * @param contextPath + * @param nomenclaturalCode + */ private CdmPersistentRemoteSource(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { super(name, server, port, contextPath, nomenclaturalCode); diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java index b320b458b..197d40bb1 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java @@ -1,16 +1,45 @@ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ package eu.etaxonomy.cdm.remote; -import org.springframework.beans.factory.config.BeanDefinition; - import eu.etaxonomy.cdm.model.name.NomenclaturalCode; +/** + * Class representing a CDM remote source + * + */ public class CdmRemoteSource extends CdmRemoteSourceBase { + /** + * Creates a new instance of CdmRemoteSource + * + * @param name + * @param server + * @param port + * @param contextPath + * @param nomenclaturalCode + * @return + */ public static CdmRemoteSource NewInstance(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { return new CdmRemoteSource(name, server, port, contextPath, nomenclaturalCode); } + /** + * Creates a new CdmRemoteSource + * + * @param name + * @param server + * @param port + * @param contextPath + * @param nomenclaturalCode + */ private CdmRemoteSource(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { super(name, server, port, contextPath, nomenclaturalCode); diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java index 2cb83fc6b..e2b4c4490 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java @@ -1,6 +1,13 @@ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ package eu.etaxonomy.cdm.remote; -import org.springframework.remoting.RemoteConnectFailureException; import org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean; import eu.etaxonomy.cdm.api.service.IDatabaseService; @@ -8,6 +15,12 @@ import eu.etaxonomy.cdm.config.CdmSource; import eu.etaxonomy.cdm.config.CdmSourceException; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; +/** + * Base class representing a CDM remote source. + * This class handles all the configuration relating to the remoting aspect of + * a CDM source. + * + */ public class CdmRemoteSourceBase extends CdmSource implements ICdmRemoteSource { private String contextPath; @@ -15,6 +28,15 @@ public class CdmRemoteSourceBase extends CdmSource implements ICdmRemoteSource { private IDatabaseService databaseService; + /** + * Constructs a CdmRemoteSourceBase + * + * @param name + * @param server + * @param port + * @param contextPath + * @param nomenclaturalCode + */ protected CdmRemoteSourceBase(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { setName(name); setServer(server); @@ -26,6 +48,9 @@ public class CdmRemoteSourceBase extends CdmSource implements ICdmRemoteSource { } else { setBaseUrl("http://" + server + ":" + String.valueOf(port) + "/" + contextPath); } + // 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(IDatabaseService.class); proxy.setServiceUrl(getBaseUrl() + "/remoting/database.service"); @@ -33,48 +58,81 @@ public class CdmRemoteSourceBase extends CdmSource implements ICdmRemoteSource { databaseService = (IDatabaseService) proxy.getObject(); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.remote.ICdmRemoteSource#getBaseUrl() + */ @Override public String getBaseUrl() { return baseUrl; } + /** + * Sets the base url for the http-invoker services as listed in + * httpInvokerServicesClients.xml. + * e.g. for 'http://127.0.0.1:8080/col/remoting/common.service', the + * base url would be 'http://127.0.0.1:8080/col' + * + * @param baseUrl + */ public void setBaseUrl(String baseUrl) { this.baseUrl = baseUrl; } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.remote.ICdmRemoteSource#getContextPath() + */ @Override public String getContextPath() { return contextPath; } + /** + * Sets the context path. + * e.g. for 'http://127.0.0.1:8080/col/remoting/common.service', the + * context path would be 'col' + * + * @param contextPath + */ public void setContextPath(String contextPath) { this.contextPath = contextPath; } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.config.CdmSource#getDbSchemaVersion() + */ @Override public String getDbSchemaVersion() throws CdmSourceException { return databaseService.getDbSchemaVersion(); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.config.CdmSource#isDbEmpty() + */ @Override public boolean isDbEmpty() throws CdmSourceException { return databaseService.isDbEmpty(); } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.config.CdmSource#checkConnection() + */ @Override public boolean checkConnection() throws CdmSourceException { // assuming that database service works implies // the connection is up // if no exception is thrown then we assume that the // connection is up - + // FIXME:Remoting is this really correct? databaseService.getDbSchemaVersion(); return true; } + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.config.CdmSource#getConnectionMessage() + */ @Override public String getConnectionMessage() { return "Conncting to Remote CDM Server " + getName(); diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java index 5b34bcc60..f278c7468 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java @@ -1,13 +1,34 @@ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ package eu.etaxonomy.cdm.remote; -import org.springframework.beans.factory.config.BeanDefinition; - import eu.etaxonomy.cdm.config.ICdmSource; +/** + * Interface representing a CDM remote source + * + */ public interface ICdmRemoteSource extends ICdmSource { + /** + * Gets the context path. + * e.g. for 'http://127.0.0.1:8080/col/remoting/common.service', the + * context path would be 'col' + */ public String getContextPath(); + /** + * Gets the base url for the http-invoker services as listed in + * httpInvokerServicesClients.xml. + * e.g. for 'http://127.0.0.1:8080/col/remoting/common.service', the + * base url would be 'http://127.0.0.1:8080/col' + */ public String getBaseUrl(); } -- 2.34.1