-// $Id: CdmApplicationDefaultConfiguration.java 11680 2011-04-04 17:07:39Z a.mueller $\r
/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
+ * Copyright (C) 2014 EDIT\r
+ * European Distributed Institute of Taxonomy\r
+ * http://www.e-taxonomy.eu\r
+ *\r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
\r
package eu.etaxonomy.cdm.api.application;\r
\r
-import javax.sql.DataSource;\r
-\r
-import org.hibernate.SessionFactory;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
\r
import org.apache.log4j.Logger;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.beans.BeansException;\r
+import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.ApplicationContextAware;\r
+import org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor;\r
+import org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean;\r
+import org.springframework.security.access.AccessDecisionVoter;\r
+import org.springframework.security.authentication.AuthenticationProvider;\r
+import org.springframework.security.authentication.ProviderManager;\r
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;\r
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider;\r
+import org.springframework.security.authentication.dao.ReflectionSaltSource;\r
+import org.springframework.security.authentication.encoding.Md5PasswordEncoder;\r
+import org.springframework.security.core.Authentication;\r
+import org.springframework.security.core.context.SecurityContext;\r
+import org.springframework.security.core.context.SecurityContextHolder;\r
import org.springframework.stereotype.Component;\r
import org.springframework.transaction.PlatformTransactionManager;\r
import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolderMock;\r
+import eu.etaxonomy.cdm.api.service.IAgentService;\r
+import eu.etaxonomy.cdm.api.service.IAnnotationService;\r
+import eu.etaxonomy.cdm.api.service.IClassificationService;\r
+import eu.etaxonomy.cdm.api.service.ICollectionService;\r
+import eu.etaxonomy.cdm.api.service.ICommonService;\r
import eu.etaxonomy.cdm.api.service.IDatabaseService;\r
+import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
+import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;\r
+import eu.etaxonomy.cdm.api.service.IEntityValidationService;\r
+import eu.etaxonomy.cdm.api.service.IFeatureNodeService;\r
+import eu.etaxonomy.cdm.api.service.IFeatureTreeService;\r
+import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;\r
+import eu.etaxonomy.cdm.api.service.IGroupService;\r
+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
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
+import eu.etaxonomy.cdm.api.service.IProgressMonitorService;\r
+import eu.etaxonomy.cdm.api.service.IReferenceService;\r
+import eu.etaxonomy.cdm.api.service.IService;\r
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
+import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.api.service.ITestService;\r
+import eu.etaxonomy.cdm.api.service.IUserService;\r
+import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.api.service.IWorkingSetService;\r
+import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;\r
+import eu.etaxonomy.cdm.api.service.molecular.IPrimerService;\r
+import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;\r
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;\r
+import eu.etaxonomy.cdm.io.service.IIOService;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmPermissionEvaluator;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.UnanimousBasedUnrevokable;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.DescriptionBaseVoter;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.DescriptionElementVoter;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.GrantAlwaysVoter;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.TaxonBaseVoter;\r
+import eu.etaxonomy.cdm.persistence.hibernate.permission.voter.TaxonNodeVoter;\r
+import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;\r
+import eu.etaxonomy.taxeditor.service.CachedCommonServiceImpl;\r
+import eu.etaxonomy.taxeditor.service.CdmAuthenticatedHttpInvokerRequestExecutor;\r
+import eu.etaxonomy.taxeditor.service.CdmServiceRequestExecutor;\r
+import eu.etaxonomy.taxeditor.service.ICachedCommonService;\r
+import eu.etaxonomy.taxeditor.service.TermServiceRequestExecutor;\r
+import eu.etaxonomy.taxeditor.session.CdmEntitySessionManager;\r
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager;\r
+\r
\r
/**\r
- * @author a.mueller\r
- * @created 21.05.2008\r
- * @version 1.0\r
- */\r
-/**\r
- * @author a.mueller\r
- * @author j.koch\r
+ * CDM Application Configuration class which manages the configuration for remoting\r
+ * clients\r
+ *\r
*/\r
-// FIXME:Remoting This bean naming is a hack to make remoting work, in conjunction with the\r
-// exclude filter in the application package set in the remotingApplicationContext \r
-//@Component("cdmApplicationDefaultConfiguration")\r
-public class CdmApplicationRemoteConfiguration extends CdmApplicationDefaultConfiguration {\r
- \r
- @SuppressWarnings("unused")\r
- private static final Logger logger = Logger.getLogger(CdmApplicationRemoteConfiguration.class);\r
-\r
- @Autowired\r
- IEditGeoService editGeoService;\r
- \r
- public CdmApplicationRemoteConfiguration() {\r
- }\r
- \r
- @Override\r
- public IDatabaseService getDatabaseService() throws UnsupportedOperationException {\r
- throw new UnsupportedOperationException("getDatabaseService is not implemented for CdmApplicationRemoteConfiguration");\r
- }\r
-\r
- \r
- @Override\r
- public PlatformTransactionManager getTransactionManager() throws UnsupportedOperationException {\r
- throw new UnsupportedOperationException("getTransactionManager is not implemented for CdmApplicationRemoteConfiguration");\r
- }\r
+@Component\r
+public class CdmApplicationRemoteConfiguration implements ICdmApplicationConfiguration, ApplicationContextAware {\r
+\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(CdmApplicationRemoteConfiguration.class);\r
+\r
+ protected ApplicationContext applicationContext;\r
+\r
+ private ICdmRemoteSource remoteSource;\r
+\r
+ private Map serviceMap = new HashMap<Class<IService>, IService>();\r
+\r
+ private ICdmEntitySessionManager cdmEntitySessionManager;\r
+\r
+ private CdmPermissionEvaluator cdmPermissionEvaluator;\r
+\r
+ private ProviderManager authenticationManager;\r
+\r
+ private ICachedCommonService cachedCommonService;\r
+\r
+ public CdmApplicationRemoteConfiguration() {}\r
+\r
+ public CdmApplicationRemoteConfiguration(ICdmRemoteSource remoteSource) {\r
+ this.remoteSource = remoteSource;\r
+\r
+ }\r
+\r
+ public void setRemoteSource(ICdmRemoteSource remoteSource) {\r
+ this.remoteSource = remoteSource;\r
+ }\r
+\r
+ private Object getService(Class<?> clazz, String serviceSuffix, CommonsHttpInvokerRequestExecutor executor) {\r
+ if(serviceMap.containsKey(clazz)) {\r
+ return serviceMap.get(clazz);\r
+ }\r
+ Object service = getService(clazz, serviceSuffix, remoteSource, executor);\r
+ serviceMap.put(clazz, service);\r
+ return service;\r
+ }\r
+\r
+ public static Object getService(Class<?> clazz,\r
+ String serviceSuffix,\r
+ ICdmRemoteSource remoteSource,\r
+ CommonsHttpInvokerRequestExecutor executor) {\r
\r
+ String baseUrl;\r
+ if(remoteSource.getContextPath() == null || remoteSource.getContextPath().equals("")) {\r
+ baseUrl = "http://" + remoteSource.getServer() + ":" + String.valueOf(remoteSource.getPort());\r
+ } else {\r
+ baseUrl = "http://" + remoteSource.getServer() + ":" + String.valueOf(remoteSource.getPort()) + "/" + remoteSource.getContextPath();\r
+ }\r
+ HttpInvokerProxyFactoryBean proxy = new HttpInvokerProxyFactoryBean();\r
+ proxy.setServiceInterface(clazz);\r
+ proxy.setServiceUrl(baseUrl + serviceSuffix);\r
+ if(executor != null) {\r
+ executor.setReadTimeout(0);\r
+ proxy.setHttpInvokerRequestExecutor(executor);\r
+ }\r
+ proxy.afterPropertiesSet();\r
+ return proxy.getObject();\r
+ }\r
+\r
+ // ****************************** APPLICATION CONTEXT *************************************************/\r
+\r
+ @Override\r
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{\r
+ this.applicationContext = applicationContext;\r
+ }\r
\r
/* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()\r
+ * @see eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration#getTransactionManager()\r
*/\r
@Override\r
- public TransactionStatus startTransaction() throws UnsupportedOperationException {\r
- throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");\r
- }\r
+ public PlatformTransactionManager getTransactionManager() throws UnsupportedOperationException {\r
+ throw new UnsupportedOperationException("getTransactionManager is not implemented for CdmApplicationRemoteConfiguration");\r
+ }\r
\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()\r
+\r
+ /**\r
+ * @return\r
+ */\r
+ public IEditGeoService getEditGeoService() {\r
+ return (IEditGeoService) getService(IEditGeoService.class, "/remoting/editgeo.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ /**\r
+ * @return\r
*/\r
+ public ICachedCommonService getCachedCommonService(){\r
+ if(cachedCommonService == null) {\r
+ cachedCommonService = new CachedCommonServiceImpl();\r
+ }\r
+ return cachedCommonService;\r
+ }\r
+\r
+\r
+ public ICdmEntitySessionManager getCdmEntitySessionManager() {\r
+ if(cdmEntitySessionManager == null) {\r
+ cdmEntitySessionManager = new CdmEntitySessionManager();\r
+ }\r
+ return cdmEntitySessionManager;\r
+ }\r
+\r
+\r
+\r
+\r
+\r
+\r
+ // ****************************** GETTER *************************************************/\r
+\r
+ @Override\r
+ public final Object getBean(String name){\r
+ throw new UnsupportedOperationException("getBean is not implemented for CdmApplicationRemoteConfiguration");\r
+ }\r
+\r
+ @Override\r
+ public IAgentService getAgentService(){\r
+ return (IAgentService) getService(IAgentService.class, "/remoting/agent.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IAnnotationService getAnnotationService(){\r
+ return (IAnnotationService) getService(IAnnotationService.class, "/remoting/annotation.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IDatabaseService getDatabaseService(){\r
+ return (IDatabaseService) getService(IDatabaseService.class, "/remoting/database.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public INameService getNameService(){\r
+ return (INameService) getService(INameService.class, "/remoting/name.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IReferenceService getReferenceService(){\r
+ return (IReferenceService) getService(IReferenceService.class, "/remoting/reference.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ITaxonService getTaxonService(){\r
+ return (ITaxonService) getService(ITaxonService.class, "/remoting/taxon.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IClassificationService getClassificationService(){\r
+ return (IClassificationService) getService(IClassificationService.class, "/remoting/classification.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ITaxonNodeService getTaxonNodeService(){\r
+ return (ITaxonNodeService) getService(ITaxonNodeService.class, "/remoting/taxonnode.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IDescriptionService getDescriptionService(){\r
+ return (IDescriptionService) getService(IDescriptionService.class, "/remoting/description.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IOccurrenceService getOccurrenceService(){\r
+ return (IOccurrenceService) getService(IOccurrenceService.class, "/remoting/occurrence.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IPrimerService getPrimerService(){\r
+ return (IPrimerService) getService(IPrimerService.class, "/remoting/primer.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IAmplificationService getAmplificationService(){\r
+ return (IAmplificationService) getService(IAmplificationService.class, "/remoting/amplification.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ISequenceService getSequenceService(){\r
+ return (ISequenceService) getService(ISequenceService.class, "/remoting/sequence.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IMediaService getMediaService(){\r
+ return (IMediaService) getService(IMediaService.class, "/remoting/media.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ITermService getTermService(){\r
+ return (ITermService) getService(ITermService.class, "/remoting/term.service", new TermServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ICommonService getCommonService(){\r
+ return (ICommonService) getService(ICommonService.class, "/remoting/common.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ILocationService getLocationService(){\r
+ return (ILocationService) getService(ILocationService.class, "/remoting/location.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IUserService getUserService(){\r
+ return (IUserService) getService(IUserService.class, "/remoting-public/user.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+\r
+ public static IUserService getUserService(ICdmRemoteSource remoteSource) {\r
+ return (IUserService) getService(IUserService.class, "/remoting-public/user.service", remoteSource, new CommonsHttpInvokerRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IMetadataService getMetadataService() {\r
+ return (IMetadataService) getService(IMetadataService.class, "/remoting-public/metadata.service", new CommonsHttpInvokerRequestExecutor());\r
+ }\r
+\r
+ public static IMetadataService getMetadataService(ICdmRemoteSource remoteSource) {\r
+ return (IMetadataService) getService(IMetadataService.class, "/remoting-public/metadata.service", remoteSource, new CommonsHttpInvokerRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IGrantedAuthorityService getGrantedAuthorityService(){\r
+ return (IGrantedAuthorityService) getService(IGrantedAuthorityService.class, "/remoting/grantedauthority.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IService<CdmBase> getMainService(){\r
+ return null;\r
+ }\r
+\r
+\r
+ @Override\r
+ public ProviderManager getAuthenticationManager(){\r
+ if(authenticationManager != null) {\r
+ return authenticationManager;\r
+ }\r
+\r
+ authenticationManager = getAuthenticationManager(getUserService());\r
+ return authenticationManager;\r
+ }\r
+\r
+ public static ProviderManager getAuthenticationManager(IUserService userService) {\r
+ Md5PasswordEncoder passwordEncoder = new Md5PasswordEncoder();\r
+ ReflectionSaltSource saltSource = new ReflectionSaltSource();\r
+ saltSource.setUserPropertyToUse("getUsername");\r
+\r
+ DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();\r
+ daoAuthenticationProvider.setUserDetailsService(userService);\r
+ daoAuthenticationProvider.setSaltSource(saltSource);\r
+ daoAuthenticationProvider.setPasswordEncoder(passwordEncoder);\r
+\r
+ return new ProviderManager(Arrays.asList((AuthenticationProvider)daoAuthenticationProvider));\r
+ }\r
+\r
+\r
+ @Override\r
+ public ConversationHolder NewConversation() {\r
+ return new ConversationHolderMock();\r
+ }\r
+\r
+ @Override\r
+ public ICollectionService getCollectionService(){\r
+ return (ICollectionService) getService(ICollectionService.class, "/remoting/collection.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IFeatureTreeService getFeatureTreeService(){\r
+ return (IFeatureTreeService) getService(IFeatureTreeService.class, "/remoting/featuretree.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IFeatureNodeService getFeatureNodeService(){\r
+ return (IFeatureNodeService) getService(IFeatureNodeService.class, "/remoting/featurenode.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IVocabularyService getVocabularyService(){\r
+ return (IVocabularyService) getService(IVocabularyService.class, "/remoting/vocabulary.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IIdentificationKeyService getIdentificationKeyService(){\r
+ return (IIdentificationKeyService) getService(IIdentificationKeyService.class, "/remoting/identificationkey.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IPolytomousKeyService getPolytomousKeyService(){\r
+ return (IPolytomousKeyService) getService(IPolytomousKeyService.class, "/remoting/polytomouskey.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+\r
+ @Override\r
+ public IPolytomousKeyNodeService getPolytomousKeyNodeService(){\r
+ return (IPolytomousKeyNodeService) getService(IPolytomousKeyNodeService.class, "/remoting/polytomouskeynode.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IProgressMonitorService getProgressMonitorService() {\r
+ return (IProgressMonitorService) getService(IProgressMonitorService.class, "/remoting/progressmonitor.service", new CdmAuthenticatedHttpInvokerRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IWorkingSetService getWorkingSetService(){\r
+ return (IWorkingSetService) getService(IWorkingSetService.class, "/remoting/workingset.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public IGroupService getGroupService(){\r
+ return (IGroupService) getService(IGroupService.class, "/remoting/group.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+\r
+ @Override\r
+ public IEntityValidationService getEntityValidationService(){\r
+ return (IEntityValidationService) getService(IEntityValidationService.class, "/remoting/entityvalidation.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+\r
+ @Override\r
+ public IEntityConstraintViolationService getEntityConstraintViolationService(){\r
+ return (IEntityConstraintViolationService) getService(IEntityConstraintViolationService.class, "/remoting/entityconstraintviolation.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ @Override\r
+ public ICdmPermissionEvaluator getPermissionEvaluator(){\r
+\r
+ if(cdmPermissionEvaluator != null) {\r
+ return cdmPermissionEvaluator;\r
+ }\r
+ List<AccessDecisionVoter> decisionVoters = new ArrayList<AccessDecisionVoter>();\r
+ decisionVoters.add(new GrantAlwaysVoter());\r
+ decisionVoters.add(new TaxonNodeVoter());\r
+ decisionVoters.add(new TaxonBaseVoter());\r
+ decisionVoters.add(new DescriptionBaseVoter());\r
+ decisionVoters.add(new DescriptionElementVoter());\r
+ UnanimousBasedUnrevokable accessDecisionManager = new UnanimousBasedUnrevokable(decisionVoters);\r
+\r
+ cdmPermissionEvaluator = new CdmPermissionEvaluator();\r
+ cdmPermissionEvaluator.setAccessDecisionManager(accessDecisionManager);\r
+\r
+ return cdmPermissionEvaluator;\r
+ }\r
+\r
+\r
+ @Override\r
+ public TransactionStatus startTransaction() throws UnsupportedOperationException {\r
+ throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");\r
+ }\r
+\r
@Override\r
public TransactionStatus startTransaction(Boolean readOnly) throws UnsupportedOperationException {\r
- throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");\r
- }\r
+ throw new UnsupportedOperationException("startTransaction is not implemented for CdmApplicationRemoteConfiguration");\r
+ }\r
\r
\r
@Override\r
public void commitTransaction(TransactionStatus txStatus) throws UnsupportedOperationException {\r
- throw new UnsupportedOperationException("commitTransaction is not implemented for CdmApplicationRemoteConfiguration");\r
- }\r
- \r
- @Override\r
- public ConversationHolder NewConversation() {\r
- // TODO Auto-generated method stub\r
- return new ConversationHolderMock();\r
- }\r
- \r
- public IEditGeoService getEditGeoService() {\r
- return this.editGeoService;\r
- }\r
- \r
- @Override\r
- public void setDataSource(DataSource dataSource) { \r
- }\r
- \r
- @Override\r
- public void setTransactionManager(PlatformTransactionManager transactionManager) { \r
- }\r
- \r
- @Override\r
- public void setSessionFactory(SessionFactory sessionFactory) { \r
+ throw new UnsupportedOperationException("commitTransaction is not implemented for CdmApplicationRemoteConfiguration");\r
+ }\r
+\r
+ @Override\r
+ public void authenticate(String username, String password){\r
+ UsernamePasswordAuthenticationToken tokenForUser = new UsernamePasswordAuthenticationToken(username, password);\r
+ Authentication authentication = this.getAuthenticationManager().authenticate(tokenForUser);\r
+ SecurityContext context = SecurityContextHolder.getContext();\r
+ context.setAuthentication(authentication);\r
+ }\r
+\r
+ public IIOService getIOService() {\r
+ return (IIOService) getService(IIOService.class, "/remoting/io.service", new CdmServiceRequestExecutor());\r
+ }\r
+\r
+ public ITestService getTestService() {\r
+ return (ITestService) getService(ITestService.class, "/remoting/test.service", new CdmServiceRequestExecutor());\r
}\r
}\r