diff --git a/common/source/java/ch/systemsx/cisd/common/server/ISessionTokenProvider.java b/common/source/java/ch/systemsx/cisd/common/server/ISessionTokenProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ee9f8c9fbe89e391f7f9d36708fde0382fe72179 --- /dev/null +++ b/common/source/java/ch/systemsx/cisd/common/server/ISessionTokenProvider.java @@ -0,0 +1,27 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.common.server; + +/** + * Provider of a session token. + * + * @author Franz-Josef Elmer + */ +public interface ISessionTokenProvider +{ + public String getSessionToken(); +} diff --git a/datastore_server/dss-tmp/.gitignore b/datastore_server/dss-tmp/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/datastore_server/recovery-state/test/.gitignore b/datastore_server/recovery-state/test/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java index d4a7285d1be2dcae2b286fc10eb8012f3c457f7a..fb33ab352eb29fb41f9acc2bb834d62310ccf3d9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java @@ -25,7 +25,7 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.FactoryBean; import ch.systemsx.cisd.common.api.client.ServiceFinder; -import ch.systemsx.cisd.common.conversation.ConversationalRmiClient; +import ch.systemsx.cisd.common.conversation.IConversationalRmiClient; import ch.systemsx.cisd.common.conversation.RmiConversationController; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.logging.LogCategory; @@ -87,7 +87,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; * @author Bernd Rinn */ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISService, FactoryBean, - ConversationalRmiClient + IConversationalRmiClient { private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, @@ -193,67 +193,67 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public Experiment tryToGetExperiment(ExperimentIdentifier experimentIdentifier) { assert experimentIdentifier != null : " Unspecified experiment identifier."; - return service.tryToGetExperiment(session.getToken(), experimentIdentifier); + return service.tryToGetExperiment(session.getSessionToken(), experimentIdentifier); } @Override public Space tryGetSpace(SpaceIdentifier spaceIdentifier) throws UserFailureException { assert spaceIdentifier != null : "Unspecified space identifier"; - return service.tryGetSpace(session.getToken(), spaceIdentifier); + return service.tryGetSpace(session.getSessionToken(), spaceIdentifier); } @Override public Project tryGetProject(ProjectIdentifier projectIdentifier) throws UserFailureException { assert projectIdentifier != null : "Unspecified project identifier"; - return service.tryGetProject(session.getToken(), projectIdentifier); + return service.tryGetProject(session.getSessionToken(), projectIdentifier); } @Override public List<Sample> listSamples(ListSampleCriteria criteria) { assert criteria != null : "Unspecifed criteria."; - return service.listSamples(session.getToken(), criteria); + return service.listSamples(session.getSessionToken(), criteria); } @Override public final Sample tryGetSampleWithExperiment(final SampleIdentifier sampleIdentifier) { assert sampleIdentifier != null : "Given sample identifier can not be null."; - return service.tryGetSampleWithExperiment(session.getToken(), sampleIdentifier); + return service.tryGetSampleWithExperiment(session.getSessionToken(), sampleIdentifier); } @Override public SampleIdentifier tryToGetSampleIdentifier(String samplePermID) throws UserFailureException { - return service.tryToGetSampleIdentifier(session.getToken(), samplePermID); + return service.tryToGetSampleIdentifier(session.getSessionToken(), samplePermID); } @Override public ExperimentType getExperimentType(String experimentTypeCode) throws UserFailureException { - return service.getExperimentType(session.getToken(), experimentTypeCode); + return service.getExperimentType(session.getSessionToken(), experimentTypeCode); } @Override public Collection<VocabularyTerm> listVocabularyTerms(String vocabularyCode) throws UserFailureException { - return service.listVocabularyTerms(session.getToken(), vocabularyCode); + return service.listVocabularyTerms(session.getSessionToken(), vocabularyCode); } @Override public SampleType getSampleType(String sampleTypeCode) throws UserFailureException { - return service.getSampleType(session.getToken(), sampleTypeCode); + return service.getSampleType(session.getSessionToken(), sampleTypeCode); } @Override public DataSetTypeWithVocabularyTerms getDataSetType(String dataSetTypeCode) { - return service.getDataSetType(session.getToken(), dataSetTypeCode); + return service.getDataSetType(session.getSessionToken(), dataSetTypeCode); } @Override @@ -261,7 +261,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer throws UserFailureException { TechId id = new TechId(experimentID); - return service.listDataSetsByExperimentID(session.getToken(), id); + return service.listDataSetsByExperimentID(session.getSessionToken(), id); } @Override @@ -269,21 +269,21 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer boolean showOnlyDirectlyConnected) { TechId id = new TechId(sampleID); - return service.listDataSetsBySampleID(session.getToken(), id, showOnlyDirectlyConnected); + return service.listDataSetsBySampleID(session.getSessionToken(), id, showOnlyDirectlyConnected); } @Override public List<ExternalData> listDataSetsByCode(List<String> dataSetCodes) throws UserFailureException { - return service.listDataSetsByCode(session.getToken(), dataSetCodes); + return service.listDataSetsByCode(session.getSessionToken(), dataSetCodes); } @Override public long registerExperiment(NewExperiment experiment) throws UserFailureException { assert experiment != null : "Unspecified experiment."; - return service.registerExperiment(session.getToken(), experiment); + return service.registerExperiment(session.getSessionToken(), experiment); } @Override @@ -292,7 +292,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer { assert newSamples != null : "Unspecified samples."; - service.registerSamples(session.getToken(), newSamples, userIDOrNull); + service.registerSamples(session.getSessionToken(), newSamples, userIDOrNull); } @Override @@ -301,7 +301,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer { assert newSample != null : "Unspecified sample."; - return service.registerSample(session.getToken(), newSample, userIDOrNull); + return service.registerSample(session.getSessionToken(), newSample, userIDOrNull); } @Override @@ -309,7 +309,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer { assert sampleUpdate != null : "Unspecified sample."; - service.updateSample(session.getToken(), sampleUpdate); + service.updateSample(session.getSessionToken(), sampleUpdate); } @Override @@ -324,10 +324,10 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer { ExperimentIdentifier experimentIdentifier = dataSetInformation.getExperimentIdentifier(); - service.registerDataSet(session.getToken(), experimentIdentifier, data); + service.registerDataSet(session.getSessionToken(), experimentIdentifier, data); } else { - service.registerDataSet(session.getToken(), sampleIdentifier, data); + service.registerDataSet(session.getSessionToken(), sampleIdentifier, data); } setShareId(data); @@ -347,7 +347,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer assert properties != null : "missing data"; assert space != null : "space missing"; - service.addPropertiesToDataSet(session.getToken(), properties, code, space); + service.addPropertiesToDataSet(session.getSessionToken(), properties, code, space); if (operationLog.isInfoEnabled()) { @@ -359,7 +359,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public void updateShareIdAndSize(String dataSetCode, String shareId, long size) throws UserFailureException { - service.updateShareIdAndSize(session.getToken(), dataSetCode, shareId, size); + service.updateShareIdAndSize(session.getSessionToken(), dataSetCode, shareId, size); if (operationLog.isInfoEnabled()) { @@ -376,7 +376,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer assert codes != null : "missing data set codes"; assert newStatus != null : "missing status"; - service.updateDataSetStatuses(session.getToken(), codes, newStatus, presentInArchive); + service.updateDataSetStatuses(session.getSessionToken(), codes, newStatus, presentInArchive); if (operationLog.isInfoEnabled()) { operationLog.info("Updated in openBIS: data sets " + codes + ", status=" + newStatus); @@ -391,7 +391,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer assert dataSetCode != null : "missing data set codes"; assert oldStatus != null : "missing old status"; assert newStatus != null : "missing new status"; - return service.compareAndSetDataSetStatus(session.getToken(), dataSetCode, oldStatus, + return service.compareAndSetDataSetStatus(session.getSessionToken(), dataSetCode, oldStatus, newStatus, newPresentInArchive); } @@ -400,7 +400,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer final SampleIdentifier sampleIdentifier) throws UserFailureException { assert sampleIdentifier != null : "Given sample identifier can not be null."; - return service.tryToGetPropertiesOfTopSampleRegisteredFor(session.getToken(), + return service.tryToGetPropertiesOfTopSampleRegisteredFor(session.getSessionToken(), sampleIdentifier); } @@ -408,7 +408,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public final List<Sample> listSamplesByCriteria(final ListSamplesByPropertyCriteria criteria) throws UserFailureException { - return service.listSamplesByCriteria(session.getToken(), criteria); + return service.listSamplesByCriteria(session.getSessionToken(), criteria); } @Override @@ -426,7 +426,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer { if (homeDatabaseInstance == null) { - homeDatabaseInstance = service.getHomeDatabaseInstance(session.getToken()); + homeDatabaseInstance = service.getHomeDatabaseInstance(session.getSessionToken()); } return homeDatabaseInstance; } @@ -434,25 +434,25 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer @Override public final String createDataSetCode() { - return service.createDataSetCode(session.getToken()); + return service.createDataSetCode(session.getSessionToken()); } @Override public final String createPermId() { - return service.createPermId(session.getToken()); + return service.createPermId(session.getSessionToken()); } @Override public long drawANewUniqueID() { - return service.drawANewUniqueID(session.getToken()); + return service.drawANewUniqueID(session.getSessionToken()); } @Override public ExternalData tryGetDataSet(String dataSetCode) throws UserFailureException { - return service.tryGetDataSet(session.getToken(), dataSetCode); + return service.tryGetDataSet(session.getSessionToken(), dataSetCode); } @Override @@ -497,7 +497,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public List<DataSetShareId> listDataSetShareIds() throws UserFailureException { List<DataSetShareId> shareIds = - service.listShareIds(session.getToken(), session.getDataStoreCode()); + service.listShareIds(session.getSessionToken(), session.getDataStoreCode()); for (DataSetShareId dataSetShareId : shareIds) { if (dataSetShareId.getShareId() == null) @@ -513,7 +513,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public List<SimpleDataSetInformationDTO> listDataSets() throws UserFailureException { List<SimpleDataSetInformationDTO> dataSets = - service.listDataSets(session.getToken(), session.getDataStoreCode()); + service.listDataSets(session.getSessionToken(), session.getDataStoreCode()); for (SimpleDataSetInformationDTO dataSet : dataSets) { if (dataSet.getDataSetShareId() == null) @@ -528,14 +528,14 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public List<ExternalData> listNewerDataSets(TrackingDataSetCriteria criteria) throws UserFailureException { - return service.listDataSets(session.getToken(), session.getDataStoreCode(), criteria); + return service.listDataSets(session.getSessionToken(), session.getDataStoreCode(), criteria); } @Override public List<ExternalData> listAvailableDataSets(ArchiverDataSetCriteria criteria) throws UserFailureException { - return service.listAvailableDataSets(session.getToken(), session.getDataStoreCode(), + return service.listAvailableDataSets(session.getSessionToken(), session.getDataStoreCode(), criteria); } @@ -543,7 +543,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public List<DeletedDataSet> listDeletedDataSets(Long lastSeenDeletionEventIdOrNull, Date maxDeletionDataOrNull) { - return service.listDeletedDataSets(session.getToken(), lastSeenDeletionEventIdOrNull, + return service.listDeletedDataSets(session.getSessionToken(), lastSeenDeletionEventIdOrNull, maxDeletionDataOrNull); } @@ -551,13 +551,13 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer public void archiveDataSets(List<String> dataSetCodes, boolean removeFromDataStore) throws UserFailureException { - service.archiveDatasets(session.getToken(), dataSetCodes, removeFromDataStore); + service.archiveDatasets(session.getSessionToken(), dataSetCodes, removeFromDataStore); } @Override public void unarchiveDataSets(List<String> dataSetCodes) throws UserFailureException { - service.unarchiveDatasets(session.getToken(), dataSetCodes); + service.unarchiveDatasets(session.getSessionToken(), dataSetCodes); } @Override @@ -569,25 +569,25 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer @Override public ExternalData tryGetDataSetForServer(String dataSetCode) throws UserFailureException { - return service.tryGetDataSetForServer(session.getToken(), dataSetCode); + return service.tryGetDataSetForServer(session.getSessionToken(), dataSetCode); } @Override public List<String> generateCodes(String prefix, int size) { - return service.generateCodes(session.getToken(), prefix, size); + return service.generateCodes(session.getSessionToken(), prefix, size); } @Override public List<Person> listAdministrators() { - return service.listAdministrators(session.getToken()); + return service.listAdministrators(session.getSessionToken()); } @Override public Person tryPersonWithUserIdOrEmail(String useridOrEmail) { - return service.tryPersonWithUserIdOrEmail(session.getToken(), useridOrEmail); + return service.tryPersonWithUserIdOrEmail(session.getSessionToken(), useridOrEmail); } @Override @@ -595,7 +595,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer String userIdOrNull) throws UserFailureException { Sample sample = - service.registerSampleAndDataSet(session.getToken(), newSample, externalData, + service.registerSampleAndDataSet(session.getSessionToken(), newSample, externalData, userIdOrNull); setShareId(externalData); return sample; @@ -606,7 +606,7 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer NewExternalData externalData) { Sample sample = - service.updateSampleAndRegisterDataSet(session.getToken(), newSample, externalData); + service.updateSampleAndRegisterDataSet(session.getSessionToken(), newSample, externalData); setShareId(externalData); return sample; } @@ -616,11 +616,11 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer AtomicEntityOperationDetails operationDetails) { IETLLIMSService conversationalService = - conversationController.getConversationalReference(session.getToken(), service, + conversationController.getConversationalReference(session, service, IETLLIMSService.class); AtomicEntityOperationResult operations = - conversationalService.performEntityOperations(session.getToken(), operationDetails); + conversationalService.performEntityOperations(session.getSessionToken(), operationDetails); List<? extends NewExternalData> dataSets = operationDetails.getDataSetRegistrations(); for (NewExternalData dataSet : dataSets) { @@ -643,110 +643,110 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer @Override public List<Sample> searchForSamples(SearchCriteria searchCriteria) { - return service.searchForSamples(session.getToken(), searchCriteria); + return service.searchForSamples(session.getSessionToken(), searchCriteria); } @Override public List<ExternalData> searchForDataSets(SearchCriteria searchCriteria) { - return service.searchForDataSets(session.getToken(), searchCriteria); + return service.searchForDataSets(session.getSessionToken(), searchCriteria); } @Override public List<Project> listProjects() { - return service.listProjects(session.getToken()); + return service.listProjects(session.getSessionToken()); } @Override public List<Experiment> listExperiments(ProjectIdentifier projectIdentifier) { - return service.listExperiments(session.getToken(), projectIdentifier); + return service.listExperiments(session.getSessionToken(), projectIdentifier); } @Override public Material tryGetMaterial(MaterialIdentifier materialIdentifier) { - return service.tryGetMaterial(session.getToken(), materialIdentifier); + return service.tryGetMaterial(session.getSessionToken(), materialIdentifier); } @Override public List<Material> listMaterials(ListMaterialCriteria criteria, boolean withProperties) { - return service.listMaterials(session.getToken(), criteria, withProperties); + return service.listMaterials(session.getSessionToken(), criteria, withProperties); } @Override public void removeDataSetsPermanently(List<String> dataSetCodes, String reason) { - service.removeDataSetsPermanently(session.getToken(), dataSetCodes, reason); + service.removeDataSetsPermanently(session.getSessionToken(), dataSetCodes, reason); } @Override public void updateDataSet(DataSetUpdatesDTO dataSetUpdates) { - service.updateDataSet(session.getToken(), dataSetUpdates); + service.updateDataSet(session.getSessionToken(), dataSetUpdates); } @Override public List<String> getTrustedCrossOriginDomains() { - return service.getTrustedCrossOriginDomains(session.getToken()); + return service.getTrustedCrossOriginDomains(session.getSessionToken()); } @Override public void setStorageConfirmed(String dataSetCode) { - service.setStorageConfirmed(session.getToken(), dataSetCode); + service.setStorageConfirmed(session.getSessionToken(), dataSetCode); } @Override public void markSuccessfulPostRegistration(String dataSetCode) { - service.markSuccessfulPostRegistration(session.getToken(), dataSetCode); + service.markSuccessfulPostRegistration(session.getSessionToken(), dataSetCode); } @Override public List<ExternalData> listDataSetsForPostRegistration() { - return service.listDataSetsForPostRegistration(session.getToken(), + return service.listDataSetsForPostRegistration(session.getSessionToken(), session.getDataStoreCode()); } @Override public EntityOperationsState didEntityOperationsSucceed(TechId registrationId) { - return service.didEntityOperationsSucceed(session.getToken(), registrationId); + return service.didEntityOperationsSucceed(session.getSessionToken(), registrationId); } @Override public void heartbeat() { - service.heartbeat(session.getToken()); + service.heartbeat(session.getSessionToken()); } @Override public boolean doesUserHaveRole(String user, String roleCode, String spaceOrNull) { - return service.doesUserHaveRole(session.getToken(), user, roleCode, spaceOrNull); + return service.doesUserHaveRole(session.getSessionToken(), user, roleCode, spaceOrNull); } @Override public List<String> filterToVisibleDataSets(String user, List<String> dataSetCodes) { - return service.filterToVisibleDataSets(session.getToken(), user, dataSetCodes); + return service.filterToVisibleDataSets(session.getSessionToken(), user, dataSetCodes); } @Override public List<String> filterToVisibleExperiments(String user, List<String> experimentIds) { - return service.filterToVisibleExperiments(session.getToken(), user, experimentIds); + return service.filterToVisibleExperiments(session.getSessionToken(), user, experimentIds); } @Override public List<String> filterToVisibleSamples(String user, List<String> sampleIdentifiers) { - return service.filterToVisibleSamples(session.getToken(), user, sampleIdentifiers); + return service.filterToVisibleSamples(session.getSessionToken(), user, sampleIdentifiers); } } \ No newline at end of file diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java index 302590a37041b27f28b55a0c84e3f89031efb17d..2129873badd0e53fc0b9533489183034eaee2a33 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java @@ -132,7 +132,7 @@ public class OpenBISAuthenticationInterceptor implements MethodInterceptor "Authentication failure to openBIS server. Most probable cause: user or password are invalid."; throw new ConfigurationFailureException(msg); } - sessionHolder.setToken(sessionToken); + sessionHolder.setSessionToken(sessionToken); DataStoreServerInfo dataStoreServerInfo = new DataStoreServerInfo(); dataStoreServerInfo.setPort(port); dataStoreServerInfo.setUseSSL(useSSL); @@ -152,7 +152,7 @@ public class OpenBISAuthenticationInterceptor implements MethodInterceptor private final void checkSessionToken() { - if (sessionHolder.getToken() == null) + if (sessionHolder.getSessionToken() == null) { authenticate(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISSessionHolder.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISSessionHolder.java index d9b5e2dd500984e718394921554e3f70a5922655..9da732dec1b802cf95bff42c92291b42a97086d4 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISSessionHolder.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISSessionHolder.java @@ -16,15 +16,21 @@ package ch.systemsx.cisd.openbis.dss.generic.server.openbisauth; +import java.io.Serializable; + +import ch.systemsx.cisd.common.server.ISessionTokenProvider; + /** * A class that holds information about the openBIS session. It has the information necessary to * connect to any of the openBIS APIs. * * @author Kaloyan Enimanev */ -public class OpenBISSessionHolder +public class OpenBISSessionHolder implements Serializable, ISessionTokenProvider { - private String token; + private static final long serialVersionUID = 1L; + + private String sessionToken; private String dataStoreCode; @@ -38,14 +44,15 @@ public class OpenBISSessionHolder this.dataStoreCode = dataStoreCode.toUpperCase(); } - public String getToken() + @Override + public String getSessionToken() { - return token; + return sessionToken; } - public void setToken(String sessionToken) + public void setSessionToken(String sessionToken) { - this.token = sessionToken; + this.sessionToken = sessionToken; } } diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml index 70c7ea0cf5387f64175defe818e162fd6f13913d..a73b79b9612af4c9252d3c001aed8187e79e2ae1 100644 --- a/datastore_server/source/java/dssApplicationContext.xml +++ b/datastore_server/source/java/dssApplicationContext.xml @@ -147,7 +147,7 @@ <bean id="data-store-rpc-conversational-client" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="service" ref="openBIS-service" /> - <property name="serviceInterface" value="ch.systemsx.cisd.common.conversation.ConversationalRmiClient" /> + <property name="serviceInterface" value="ch.systemsx.cisd.common.conversation.IConversationalRmiClient" /> </bean> <bean id="session-token-manager" class="ch.systemsx.cisd.openbis.dss.generic.server.SessionTokenManager"/> diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java index 4727cf8e76f58e4b5aaddc691530ced23387306b..606ab28b66e1b41fa924d05cf6447b1c7195a453 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java @@ -276,7 +276,7 @@ public final class TransferredDataSetHandlerTest extends AbstractFileSystemTestC typeExtractor, storageProcessor); OpenBISSessionHolder sessionHolder = new OpenBISSessionHolder(); - sessionHolder.setToken(SESSION_TOKEN); + sessionHolder.setSessionToken(SESSION_TOKEN); authorizedLimsService = new EncapsulatedOpenBISService(limsService, sessionHolder, "", shareIdManager); dataSetValidator = context.mock(IDataSetValidator.class); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/RmiConversationTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/RmiConversationTest.java index 28431ac9056c7db2b24930c807130de59b7ddfe5..7a4c5383ecf682395e83b935c268f2d37c14b4ad 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/RmiConversationTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/RmiConversationTest.java @@ -46,16 +46,18 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import ch.systemsx.cisd.base.exceptions.TimeoutExceptionUnchecked; -import ch.systemsx.cisd.common.conversation.ConversationalRmiClient; -import ch.systemsx.cisd.common.conversation.ConversationalRmiServer; +import ch.systemsx.cisd.common.conversation.IConversationalRmiClient; +import ch.systemsx.cisd.common.conversation.IConversationalRmiServer; import ch.systemsx.cisd.common.conversation.IProgressListener; import ch.systemsx.cisd.common.conversation.RmiConversationController; import ch.systemsx.cisd.common.conversation.RmiServiceFactory; import ch.systemsx.cisd.common.logging.LogInitializer; +import ch.systemsx.cisd.common.server.ISessionTokenProvider; import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO; import ch.systemsx.cisd.common.serviceconversation.ServiceMessage; import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer; import ch.systemsx.cisd.common.spring.HttpInvokerUtils; +import ch.systemsx.cisd.openbis.dss.generic.server.openbisauth.OpenBISSessionHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; @Test(groups = "system test") @@ -112,7 +114,9 @@ public class RmiConversationTest extends SystemTestCase HttpInvokerUtils.createServiceStub(EchoService.class, "http://localhost:8888/openbis/rmi-echoservice", 5000); cont = new RmiConversationController("http://localhost:8882"); - echo = cont.getConversationalReference("", httpEcho, EchoService.class); + OpenBISSessionHolder sessionHolder = new OpenBISSessionHolder(); + sessionHolder.setSessionToken(""); + echo = cont.getConversationalReference(sessionHolder, httpEcho, EchoService.class); } @AfterClass @@ -167,7 +171,7 @@ public class RmiConversationTest extends SystemTestCase assertThat(echo.exists("stored"), is(true)); } - public interface EchoService extends ConversationalRmiServer + public interface EchoService extends IConversationalRmiServer { @Transactional public String echo(String input, Integer delayInMillis); @@ -215,11 +219,11 @@ public class RmiConversationTest extends SystemTestCase } @Override - public ServiceConversationDTO startConversation(String sessionToken, String clientUrl, - String typeId) + public ServiceConversationDTO startConversation(ISessionTokenProvider sessionTokenProvider, + String clientUrl, String typeId) { - ConversationalRmiClient client = - HttpInvokerUtils.createServiceStub(ConversationalRmiClient.class, + IConversationalRmiClient client = + HttpInvokerUtils.createServiceStub(IConversationalRmiClient.class, "http://localhost:8882/client", 5000); server.addClientResponseTransport("test-client-id", client); return this.server.startConversation(typeId, "test-client-id"); @@ -365,7 +369,7 @@ public class RmiConversationTest extends SystemTestCase } } - public static class ClientBean implements ConversationalRmiClient + public static class ClientBean implements IConversationalRmiClient { @Override @@ -382,7 +386,7 @@ public class RmiConversationTest extends SystemTestCase @Override public void afterPropertiesSet() { - setServiceInterface(ConversationalRmiClient.class); + setServiceInterface(IConversationalRmiClient.class); setService(new ClientBean()); super.afterPropertiesSet(); } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java index 064ca0d2cc83259811ca3862001e23b0959a306b..e383962c08cd6205fdfa6741156ae80c4c7aa286 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java @@ -63,7 +63,7 @@ public class EncapsulatedOpenBISServiceTest limsService = context.mock(IETLLIMSService.class); shareIdManager = context.mock(IShareIdManager.class); session = new OpenBISSessionHolder(); - session.setToken(SESSION_TOKEN); + session.setSessionToken(SESSION_TOKEN); encapsulatedLimsService = new EncapsulatedOpenBISService(limsService, session, "", shareIdManager); } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptorTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptorTest.java index 0972fe5761cf6db15ab700f7dabd56befbb88955..de8338c35a552b3a2b47e25d5c7c38c8b9e585e9 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptorTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptorTest.java @@ -94,7 +94,7 @@ public class OpenBISAuthenticationInterceptorTest @Test public final void testSessionTokenExpired() throws Throwable { - sessionHolder.setToken("expiredSessionToken"); + sessionHolder.setSessionToken("expiredSessionToken"); context.checking(new Expectations() { { @@ -108,13 +108,13 @@ public class OpenBISAuthenticationInterceptorTest interceptor.invoke(methodInvocation); // the interceptor will reauthenticate and set the new session token - assertEquals(VALiD_SESSION_TOKEN, sessionHolder.getToken()); + assertEquals(VALiD_SESSION_TOKEN, sessionHolder.getSessionToken()); } @Test public final void testInitializeSessionToken() throws Throwable { - sessionHolder.setToken(null); + sessionHolder.setSessionToken(null); context.checking(new Expectations() { { @@ -126,13 +126,13 @@ public class OpenBISAuthenticationInterceptorTest interceptor.invoke(methodInvocation); // the interceptor will reauthenticate and set the new session token - assertEquals(VALiD_SESSION_TOKEN, sessionHolder.getToken()); + assertEquals(VALiD_SESSION_TOKEN, sessionHolder.getSessionToken()); } @Test public final void testNoReauthenticationNeeded() throws Throwable { - sessionHolder.setToken(VALiD_SESSION_TOKEN); + sessionHolder.setSessionToken(VALiD_SESSION_TOKEN); context.checking(new Expectations() { { @@ -143,7 +143,7 @@ public class OpenBISAuthenticationInterceptorTest interceptor.invoke(methodInvocation); // the interceptor will reauthenticate and set the new session token - assertEquals(VALiD_SESSION_TOKEN, sessionHolder.getToken()); + assertEquals(VALiD_SESSION_TOKEN, sessionHolder.getSessionToken()); } private SessionContextDTO createSession() diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/ConversationalRmiClient.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/IConversationalRmiClient.java similarity index 91% rename from openbis-common/source/java/ch/systemsx/cisd/common/conversation/ConversationalRmiClient.java rename to openbis-common/source/java/ch/systemsx/cisd/common/conversation/IConversationalRmiClient.java index 041f0a9fc6f40e2d8baf210343709db781f9a7d5..0ab030f7376082a71953f198cfda0c0d325465b8 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/ConversationalRmiClient.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/IConversationalRmiClient.java @@ -23,6 +23,6 @@ import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport; * * @author anttil */ -public interface ConversationalRmiClient extends IServiceMessageTransport +public interface IConversationalRmiClient extends IServiceMessageTransport { } diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/ConversationalRmiServer.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/IConversationalRmiServer.java similarity index 76% rename from openbis-common/source/java/ch/systemsx/cisd/common/conversation/ConversationalRmiServer.java rename to openbis-common/source/java/ch/systemsx/cisd/common/conversation/IConversationalRmiServer.java index 2bc92ab26626c7c57a8db6698bf62495ab659076..97c4b5cc9020f37c2cb8b90deec82895fe701084 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/ConversationalRmiServer.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/IConversationalRmiServer.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.common.conversation; +import ch.systemsx.cisd.common.server.ISessionTokenProvider; import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport; import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO; @@ -24,8 +25,9 @@ import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO; * * @author anttil */ -public interface ConversationalRmiServer extends IServiceMessageTransport +public interface IConversationalRmiServer extends IServiceMessageTransport { - public ServiceConversationDTO startConversation(String sessionToken, String clientUrl, String typeId); + public ServiceConversationDTO startConversation(ISessionTokenProvider sessionTokenProvider, + String clientUrl, String typeId); } diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiConversationController.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiConversationController.java index e2e9bccc7407c59bf1f8d0140c7488c900b0d621..53591be5666fc6fdcc427806e0f666b4e0b687ee 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiConversationController.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiConversationController.java @@ -16,44 +16,49 @@ package ch.systemsx.cisd.common.conversation; +import ch.systemsx.cisd.common.server.ISessionTokenProvider; import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO; import ch.systemsx.cisd.common.serviceconversation.ServiceMessage; import ch.systemsx.cisd.common.serviceconversation.client.IRemoteServiceConversationServer; import ch.systemsx.cisd.common.serviceconversation.client.ServiceConversationClient; /** - * RmiConversationController controls the client side communication with the service conversation - * framework. Clients can use RmiConversationController to create conversational references to remote - * services and to process incoming service conversation related messages. + * RmiConversationController controls the client side communication with the service conversation + * framework. Clients can use RmiConversationController to create conversational references to + * remote services and to process incoming service conversation related messages. * * @author anttil */ -public class RmiConversationController { +public class RmiConversationController +{ private ServiceConversationClient client = null; + private final String callbackUrl; - - public RmiConversationController(String callbackUrl) { + + public RmiConversationController(String callbackUrl) + { this.callbackUrl = callbackUrl; } - - public synchronized <T extends ConversationalRmiServer, U extends T> - T getConversationalReference(final String sessionToken, final U service, Class<T> type) { - if (this.client == null) { - this.client = new ServiceConversationClient( - new IRemoteServiceConversationServer() { - @Override - public ServiceConversationDTO startConversation(String typeId) - { - return service.startConversation(sessionToken, callbackUrl, typeId); - } - }, - service); + public synchronized <T extends IConversationalRmiServer, U extends T> T getConversationalReference( + final ISessionTokenProvider sessionTokenProvider, final U service, Class<T> type) + { + if (this.client == null) + { + this.client = new ServiceConversationClient(new IRemoteServiceConversationServer() + { + @Override + public ServiceConversationDTO startConversation(String typeId) + { + return service.startConversation(sessionTokenProvider, callbackUrl, typeId); + } + }, service); } return RmiProxy.newInstance(type, client); } - - public void process(ServiceMessage message) { + + public void process(ServiceMessage message) + { this.client.getIncomingResponseMessageTransport().send(message); } } diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiProxy.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiProxy.java index 78463e303d37906273427dc3b4397e9e08851167..2fb4b380ba72947458bb6f81515d127803954b70 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiProxy.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiProxy.java @@ -37,7 +37,7 @@ public class RmiProxy implements InvocationHandler private String typeId; @SuppressWarnings("unchecked") - static <T extends ConversationalRmiServer> T newInstance(Class<T> clazz, ServiceConversationClient client) { + static <T extends IConversationalRmiServer> T newInstance(Class<T> clazz, ServiceConversationClient client) { Collection<Class<?>> interfaces = new HashSet<Class<?>>(); interfaces.add(clazz); diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiServiceFactory.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiServiceFactory.java index cda190ac1560d7d3d1902e3b8dfe2adedc9f3203..ba053d1f66cf404c5285712d962b1cbd2f1a360a 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiServiceFactory.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/RmiServiceFactory.java @@ -28,7 +28,7 @@ import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationSer * * @author anttil */ -public final class RmiServiceFactory<T extends ConversationalRmiServer> implements IServiceFactory +public final class RmiServiceFactory<T extends IConversationalRmiServer> implements IServiceFactory { private ServiceConversationServer server; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index cc5325be3a92d801df7fd113269262a211c6d5ff..21f8863060477ac95c2e1518e5b0a853a74d849b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -37,11 +37,12 @@ import ch.systemsx.cisd.authentication.DummyAuthenticationService; import ch.systemsx.cisd.authentication.IAuthenticationService; import ch.systemsx.cisd.authentication.ISessionManager; import ch.systemsx.cisd.common.collections.CollectionUtils; -import ch.systemsx.cisd.common.conversation.ConversationalRmiClient; +import ch.systemsx.cisd.common.conversation.IConversationalRmiClient; import ch.systemsx.cisd.common.conversation.IProgressListener; import ch.systemsx.cisd.common.conversation.RmiServiceFactory; import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.common.server.ISessionTokenProvider; import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO; import ch.systemsx.cisd.common.serviceconversation.ServiceMessage; import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer; @@ -275,13 +276,14 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements } @Override - public ServiceConversationDTO startConversation(String sessionToken, String clientUrl, - String typeId) + public ServiceConversationDTO startConversation(ISessionTokenProvider sessionTokenProvider, + String clientUrl, String typeId) { + String sessionToken = sessionTokenProvider.getSessionToken(); getSession(sessionToken); - ConversationalRmiClient client = - HttpInvokerUtils.createServiceStub(ConversationalRmiClient.class, clientUrl, 5000); + IConversationalRmiClient client = + HttpInvokerUtils.createServiceStub(IConversationalRmiClient.class, clientUrl, 5000); String clientId = sessionToken; server.addClientResponseTransport(clientId, client); return server.startConversation(typeId, clientId); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java index 45f758b29460fb492c3436f3d5035dc702f8e5d3..96958bec39244e918109e78d0ff1d006fe97dbc6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java @@ -26,6 +26,7 @@ import ch.systemsx.cisd.authentication.ISessionManager; import ch.systemsx.cisd.common.collections.CollectionUtils; import ch.systemsx.cisd.common.conversation.IProgressListener; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.common.server.ISessionTokenProvider; import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO; import ch.systemsx.cisd.common.serviceconversation.ServiceMessage; import ch.systemsx.cisd.common.spring.IInvocationLoggerContext; @@ -91,8 +92,8 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLLIMSSe } @Override - public ServiceConversationDTO startConversation(String sessionToken, String clientUrl, - String typeId) + public ServiceConversationDTO startConversation(ISessionTokenProvider sessionTokenProvider, + String clientUrl, String typeId) { logTracking(typeId, "startConversation", ""); return null; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java index fbe5fc9175d6cf55c3a60f7705a231c1d591cd38..03924674ed4777ca063290c73b704bf8b151fd48 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java @@ -22,7 +22,7 @@ import java.util.List; import org.springframework.transaction.annotation.Transactional; -import ch.systemsx.cisd.common.conversation.ConversationalRmiServer; +import ch.systemsx.cisd.common.conversation.IConversationalRmiServer; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria; import ch.systemsx.cisd.openbis.generic.shared.authorization.ISessionProvider; @@ -97,7 +97,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; * * @author Christian Ribeaud */ -public interface IETLLIMSService extends IServer, ISessionProvider, ConversationalRmiServer +public interface IETLLIMSService extends IServer, ISessionProvider, IConversationalRmiServer { /** * Returns the home database instance. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSServiceConversational.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSServiceConversational.java index 5e4bed8746132d25e4317b713ab1a1fee0451851..2030ae3acd286c2674d387b4bf41ba068bfe743b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSServiceConversational.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSServiceConversational.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.openbis.generic.shared; import org.springframework.transaction.annotation.Transactional; -import ch.systemsx.cisd.common.conversation.ConversationalRmiServer; +import ch.systemsx.cisd.common.conversation.IConversationalRmiServer; import ch.systemsx.cisd.common.conversation.IProgressListener; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.AuthorizationGuard; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed; @@ -31,7 +31,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; /** * @author anttil */ -public interface IETLLIMSServiceConversational extends IETLLIMSService, ConversationalRmiServer +public interface IETLLIMSServiceConversational extends IETLLIMSService, IConversationalRmiServer { @Transactional @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER)