X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/5a87d22140f942c5992d124028ef900d40baf14c..ec07654300339a54a3d7bbff703b369b47ab3c7f:/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java?ds=sidebyside
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 77bcb1e8b..4bc14613d 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
@@ -6,7 +6,6 @@
* 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.ArrayList;
@@ -15,10 +14,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.log4j.Logger;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.springframework.remoting.httpinvoker.CachingHttpInvokerProxyFactoryBean;
import org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor;
import org.springframework.security.access.AccessDecisionVoter;
@@ -32,24 +30,19 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.TransactionStatus;
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.conversation.ConversationHolderMock;
import eu.etaxonomy.cdm.api.service.IAgentService;
import eu.etaxonomy.cdm.api.service.IAnnotationService;
import eu.etaxonomy.cdm.api.service.IClassificationService;
import eu.etaxonomy.cdm.api.service.ICollectionService;
import eu.etaxonomy.cdm.api.service.ICommonService;
import eu.etaxonomy.cdm.api.service.IDatabaseService;
+import eu.etaxonomy.cdm.api.service.IDescriptionElementService;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;
import eu.etaxonomy.cdm.api.service.IEntityValidationService;
import eu.etaxonomy.cdm.api.service.IEventBaseService;
-import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
-import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
import eu.etaxonomy.cdm.api.service.IGroupService;
import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;
@@ -73,20 +66,26 @@ import eu.etaxonomy.cdm.api.service.ITermTreeService;
import eu.etaxonomy.cdm.api.service.ITestService;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.api.service.geo.IDistributionService;
import eu.etaxonomy.cdm.api.service.longrunningService.ILongRunningTasksService;
+import eu.etaxonomy.cdm.api.service.media.MediaInfoFactory;
import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;
import eu.etaxonomy.cdm.api.service.molecular.IPrimerService;
import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
+import eu.etaxonomy.cdm.api.service.registration.IRegistrationWorkingSetService;
+import eu.etaxonomy.cdm.api.service.security.IAccountRegistrationService;
+import eu.etaxonomy.cdm.api.service.security.IPasswordResetService;
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
import eu.etaxonomy.cdm.io.service.IIOService;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmPermissionEvaluator;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.UnanimousBasedUnrevokable;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.DescriptionBaseVoter;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.DescriptionElementVoter;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.GrantAlwaysVoter;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.TaxonBaseVoter;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.TaxonNodeVoter;
+import eu.etaxonomy.cdm.persistence.permission.CdmPermissionEvaluator;
+import eu.etaxonomy.cdm.persistence.permission.ICdmPermissionEvaluator;
+import eu.etaxonomy.cdm.persistence.permission.UnanimousBasedUnrevokable;
+import eu.etaxonomy.cdm.persistence.permission.voter.DescriptionBaseVoter;
+import eu.etaxonomy.cdm.persistence.permission.voter.DescriptionElementVoter;
+import eu.etaxonomy.cdm.persistence.permission.voter.GrantAlwaysVoter;
+import eu.etaxonomy.cdm.persistence.permission.voter.TaxonBaseVoter;
+import eu.etaxonomy.cdm.persistence.permission.voter.TaxonNodeVoter;
+import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
import eu.etaxonomy.taxeditor.service.AuthenticatingHttpInvokerRequestExecutor;
import eu.etaxonomy.taxeditor.service.CachedCommonServiceImpl;
@@ -95,25 +94,27 @@ import eu.etaxonomy.taxeditor.service.RemoteInvocationTermCacher;
import eu.etaxonomy.taxeditor.session.CdmEntitySessionManager;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;
-
/**
* CDM Application Configuration class which manages the configuration for remoting
* clients
*/
@Component
// TODO split into CdmRepository and proper @Configuration class
-public class CdmApplicationRemoteConfiguration implements ICdmRepository, ApplicationContextAware {
+public class CdmApplicationRemoteConfiguration implements ICdmRepository {
@SuppressWarnings("unused")
- private static final Logger logger = Logger.getLogger(CdmApplicationRemoteConfiguration.class);
+ private static final Logger logger = LogManager.getLogger();
/**
- * Timeout for service lookup etc. This timeout (milliseconds) should me more
+ * Timeout for service lookup etc. This timeout (milliseconds) should be more
* strict than {@link #HTTP_READ_TIMEOUT} to avoid connecting to
* cdm servers when the network quality is too bad.
- *
+ * Note AM: IMO we should not be to strict, sometimes services do not respond too fast
+ * during the first call (e.g. test server), therefore I put this up from 1 to 3 sec.
+ * Better we should inform the user that the connection might be of low quality
+ * instead of making the connection completely unavailable.
*/
- public static final int HTTP_READ_TIMEOUT_MIN = 1000; // one minute
+ public static final int HTTP_READ_TIMEOUT_MIN = 3000; // 3 seconds
/**
* Timeout for normal operation (milliseconds)
@@ -124,18 +125,10 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
*
* The application should be usable in networks with low connection quality,
* e.g.: from cuba where the throughput rate is low (<= ISDN speed, 64 kbit)
- * and a packet delay of <200 ms. Additionally we should tolerate a certain
- * amount of packet loss. Here we take the packet loss rate as it occurs
- * in the FU-Berlin ZEDAT VPN as reference case (~1%)
- *
- * - 5min: Timeout at remoting/taxonnode.service
- *
+ * and a packet delay of <200 ms.
*
*/
- public static final int HTTP_READ_TIMEOUT = 70000;
-
-
- protected ApplicationContext applicationContext;
+ public static final int HTTP_READ_TIMEOUT = 10 * 60 * 1000;
private ICdmRemoteSource remoteSource;
@@ -160,7 +153,6 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
public CdmApplicationRemoteConfiguration(ICdmRemoteSource remoteSource) {
this.remoteSource = remoteSource;
-
}
public void setRemoteSource(ICdmRemoteSource remoteSource) {
@@ -182,10 +174,13 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
HttpComponentsHttpInvokerRequestExecutor executor) {
String baseUrl;
- if(remoteSource.getContextPath() == null || remoteSource.getContextPath().equals("")) {
- baseUrl = "http://" + remoteSource.getServer() + ":" + String.valueOf(remoteSource.getPort());
+ String protocol = remoteSource.getPort() == 443 ? "https" : "http";
+
+ String contextPath = (remoteSource instanceof CdmRemoteSource)? ((CdmRemoteSource)remoteSource).getContextPath() : "";
+ if(StringUtils.isBlank(contextPath)) {
+ baseUrl = protocol + "://" + remoteSource.getServer() + ":" + String.valueOf(remoteSource.getPort());
} else {
- baseUrl = "http://" + remoteSource.getServer() + ":" + String.valueOf(remoteSource.getPort()) + "/" + remoteSource.getContextPath();
+ baseUrl = protocol + "://" + remoteSource.getServer() + ":" + String.valueOf(remoteSource.getPort()) + "/" + contextPath;
}
CachingHttpInvokerProxyFactoryBean proxyFactory = new CachingHttpInvokerProxyFactoryBean();
proxyFactory.setServiceInterface(clazz);
@@ -204,16 +199,6 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
// ****************************** APPLICATION CONTEXT *************************************************/
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
- this.applicationContext = applicationContext;
- }
-
- @Override
- public PlatformTransactionManager getTransactionManager() throws UnsupportedOperationException {
- throw new UnsupportedOperationException("getTransactionManager is not implemented for CdmApplicationRemoteConfiguration");
- }
-
public IEditGeoService getEditGeoService() {
return (IEditGeoService) getService(IEditGeoService.class, "/remoting/editgeo.service", new AuthenticatingHttpInvokerRequestExecutor());
}
@@ -235,8 +220,8 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
// ****************************** GETTER *************************************************/
@Override
- public final Object getBean(String name){
- throw new UnsupportedOperationException("getBean is not implemented for CdmApplicationRemoteConfiguration");
+ public IAccountRegistrationService getAccountRegistrationService() {
+ return (IAccountRegistrationService) getService(IAccountRegistrationService.class, "/remoting/accountregistrationservice.service", new AuthenticatingHttpInvokerRequestExecutor());
}
@Override
@@ -284,6 +269,16 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return (IDescriptionService) getService(IDescriptionService.class, "/remoting/description.service", new AuthenticatingHttpInvokerRequestExecutor());
}
+ @Override
+ public IDistributionService getDistributionService(){
+ return (IDistributionService) getService(IDistributionService.class, "/remoting/distribution.service", new AuthenticatingHttpInvokerRequestExecutor());
+ }
+
+ @Override
+ public IDescriptionElementService getDescriptionElementService(){
+ return (IDescriptionElementService) getService(IDescriptionElementService.class, "/remoting/descriptionelement.service", new AuthenticatingHttpInvokerRequestExecutor());
+ }
+
@Override
public IOccurrenceService getOccurrenceService(){
return (IOccurrenceService) getService(IOccurrenceService.class, "/remoting/occurrence.service", new AuthenticatingHttpInvokerRequestExecutor());
@@ -339,7 +334,6 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return (IUserService) getService(IUserService.class, "/remoting-public/user.service", new AuthenticatingHttpInvokerRequestExecutor());
}
-
public static IUserService getUserService(ICdmRemoteSource remoteSource) {
return (IUserService) getService(IUserService.class, "/remoting-public/user.service", remoteSource, new HttpComponentsHttpInvokerRequestExecutor());
}
@@ -358,7 +352,6 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return (IGrantedAuthorityService) getService(IGrantedAuthorityService.class, "/remoting/grantedauthority.service", new AuthenticatingHttpInvokerRequestExecutor());
}
-
@Override
public ProviderManager getAuthenticationManager(){
if(authenticationManager == null) {
@@ -380,31 +373,16 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return new ProviderManager(Arrays.asList((AuthenticationProvider)daoAuthenticationProvider));
}
-
- @Override
- public ConversationHolder NewConversation() {
- return new ConversationHolderMock();
- }
-
@Override
public ICollectionService getCollectionService(){
return (ICollectionService) getService(ICollectionService.class, "/remoting/collection.service", new AuthenticatingHttpInvokerRequestExecutor());
}
- @Override
- public IFeatureTreeService getFeatureTreeService(){
- return (IFeatureTreeService) getService(IFeatureTreeService.class, "/remoting/featuretree.service", new AuthenticatingHttpInvokerRequestExecutor());
- }
@Override
public ITermTreeService getTermTreeService() {
return (ITermTreeService) getService(ITermTreeService.class, "/remoting/termtree.service", new AuthenticatingHttpInvokerRequestExecutor());
}
- @Override
- public IFeatureNodeService getFeatureNodeService(){
- return (IFeatureNodeService) getService(IFeatureNodeService.class, "/remoting/featurenode.service", new AuthenticatingHttpInvokerRequestExecutor());
- }
-
@Override
public ITermNodeService getTermNodeService() {
return (ITermNodeService) getService(ITermNodeService.class, "/remoting/termnode.service", new AuthenticatingHttpInvokerRequestExecutor());
@@ -425,7 +403,6 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return (IPolytomousKeyService) getService(IPolytomousKeyService.class, "/remoting/polytomouskey.service", new AuthenticatingHttpInvokerRequestExecutor());
}
-
@Override
public IPolytomousKeyNodeService getPolytomousKeyNodeService(){
return (IPolytomousKeyNodeService) getService(IPolytomousKeyNodeService.class, "/remoting/polytomouskeynode.service", new AuthenticatingHttpInvokerRequestExecutor());
@@ -441,13 +418,14 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return (IDescriptiveDataSetService) getService(IDescriptiveDataSetService.class, "/remoting/descriptivedataset.service", new AuthenticatingHttpInvokerRequestExecutor());
}
- /**
- * {@inheritDoc}
- */
@Override
public IRegistrationService getRegistrationService() {
return (IRegistrationService) getService(IRegistrationService.class, "/remoting/registration.service", new AuthenticatingHttpInvokerRequestExecutor());
+ }
+ @Override
+ public IRegistrationWorkingSetService getRegistrationWorkingSetService() {
+ return (IRegistrationWorkingSetService) getService(IRegistrationWorkingSetService.class, "/remoting/registrationworkingset.service", new AuthenticatingHttpInvokerRequestExecutor());
}
@Override
@@ -460,18 +438,26 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return (IPreferenceService) getService(IPreferenceService.class, "/remoting/preference.service", new AuthenticatingHttpInvokerRequestExecutor());
}
+ @Override
+ public IPasswordResetService getPasswordResetService(){
+ return (IPasswordResetService) getService(IPasswordResetService.class, "/remoting/passwordreset.service", new AuthenticatingHttpInvokerRequestExecutor());
+ }
@Override
public IEntityValidationService getEntityValidationService(){
return (IEntityValidationService) getService(IEntityValidationService.class, "/remoting/entityvalidation.service", new AuthenticatingHttpInvokerRequestExecutor());
}
-
@Override
public IEntityConstraintViolationService getEntityConstraintViolationService(){
return (IEntityConstraintViolationService) getService(IEntityConstraintViolationService.class, "/remoting/entityconstraintviolation.service", new AuthenticatingHttpInvokerRequestExecutor());
}
+ @Override
+ public MediaInfoFactory getMediaInfoFactory(){ // TODO use interface
+ return (MediaInfoFactory) getService(MediaInfoFactory.class, "/remoting/mediainfofactory.service", new AuthenticatingHttpInvokerRequestExecutor());
+ }
+
@Override
public ICdmPermissionEvaluator getPermissionEvaluator(){
@@ -492,28 +478,6 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
return cdmPermissionEvaluator;
}
-
- @Override
- public TransactionStatus startTransaction() throws UnsupportedOperationException {
- throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");
- }
-
- @Override
- public TransactionStatus startTransaction(Boolean readOnly) throws UnsupportedOperationException {
- throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");
- }
-
-
- @Override
- public void commitTransaction(TransactionStatus txStatus) throws UnsupportedOperationException {
- throw new UnsupportedOperationException("commitTransaction is not implemented for CdmApplicationRemoteConfiguration");
- }
-
- @Override
- public void rollbackTransaction(TransactionStatus arg0) {
- throw new UnsupportedOperationException("rollbackTransaction is not implemented for CdmApplicationRemoteConfiguration");
- }
-
@Override
public void authenticate(String username, String password){
UsernamePasswordAuthenticationToken tokenForUser = new UsernamePasswordAuthenticationToken(username, password);
@@ -534,5 +498,4 @@ public class CdmApplicationRemoteConfiguration implements ICdmRepository, Applic
public ITestService getTestService() {
return (ITestService) getService(ITestService.class, "/remoting/test.service", new AuthenticatingHttpInvokerRequestExecutor());
}
-
}