diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java index 41286a9b56f1332f09bc7c701c3a7d0b086cad0e..99bbb7ea8d1a4271ca553f92634cbfd8858d875a 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java @@ -304,6 +304,7 @@ public class OperationsExecutor implements IOperationsExecutor resultMap.putAll(internalOperationExecutor.execute(context, operations)); flushCurrentSession(); + clearCurrentSession(); verify(operations, resultMap, context); @@ -401,13 +402,13 @@ public class OperationsExecutor implements IOperationsExecutor Map<IOperation, IOperationResult> resultMap, IOperationContext context) { resultMap.putAll(createVocabularyTermsExecutor.execute(context, operations)); - resultMap.putAll(createTagsExecutor.execute(context, operations)); resultMap.putAll(createMaterialsExecutor.execute(context, operations)); resultMap.putAll(createSpacesExecutor.execute(context, operations)); resultMap.putAll(createProjectsExecutor.execute(context, operations)); resultMap.putAll(createExperimentsExecutor.execute(context, operations)); resultMap.putAll(createSamplesExecutor.execute(context, operations)); resultMap.putAll(createDataSetsExecutor.execute(context, operations)); + resultMap.putAll(createTagsExecutor.execute(context, operations)); } private void executeDeletions(List<? extends IOperation> operations, diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteOperationsTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteOperationsTest.java index 7c41cc0f7b1389e6d8481787af81fb48efc9cd4a..73e604568179991bd24386f1b0de10c43fe504ba 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteOperationsTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteOperationsTest.java @@ -53,6 +53,12 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.CreationId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperationResult; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.UpdateDataSetsOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.history.PropertyHistoryEntry; import ch.ethz.sis.openbis.generic.asapi.v3.dto.operation.AsynchronousOperationExecutionOptions; @@ -406,6 +412,47 @@ public class ExecuteOperationsTest extends AbstractOperationExecutionTest assertEquals(historyEntry.getPropertyName(), "COMMENT"); assertEquals(historyEntry.getPropertyValue(), "created"); } + + @Test + public void testUpdateDataSetAndRelatedSample() + { + String sessionToken = v3api.login(TEST_USER, PASSWORD); + DataSetUpdate dataSetUpdate = new DataSetUpdate(); + DataSetPermId dataSetId = new DataSetPermId("20081105092159111-1"); + dataSetUpdate.setDataSetId(dataSetId); + dataSetUpdate.setProperty("COMMENT", "test data set"); + SampleUpdate sampleUpdate = new SampleUpdate(); + SamplePermId sampleId = new SamplePermId("200902091219327-1025"); + sampleUpdate.setSampleId(sampleId); + sampleUpdate.setProperty("COMMENT", "test comment"); + List<? extends IOperation> operations = Arrays.asList(new UpdateDataSetsOperation(dataSetUpdate), new UpdateSamplesOperation(sampleUpdate)); + SynchronousOperationExecutionOptions options = new SynchronousOperationExecutionOptions(); + + SynchronousOperationExecutionResults results = (SynchronousOperationExecutionResults) v3api.executeOperations(sessionToken, + operations, options); + + assertEquals(results.getResults().size(), 2); + DataSetFetchOptions dataSetFetchOptions = new DataSetFetchOptions(); + dataSetFetchOptions.withProperties(); + dataSetFetchOptions.withHistory(); + Map<IDataSetId, DataSet> dataSets = v3api.getDataSets(sessionToken, Arrays.asList(dataSetId), dataSetFetchOptions); + assertEquals(dataSets.size(), 1); + DataSet dataSet = dataSets.get(dataSetId); + assertEquals(dataSet.getProperty("COMMENT"), "test data set"); + PropertyHistoryEntry historyEntry = (PropertyHistoryEntry) dataSet.getHistory().get(0); + assertEquals(historyEntry.getPropertyName(), "COMMENT"); + assertEquals(historyEntry.getPropertyValue(), "no comment"); + SampleFetchOptions sampleFetchOptions = new SampleFetchOptions(); + sampleFetchOptions.withProperties(); + sampleFetchOptions.withHistory(); + Map<ISampleId, Sample> samples = v3api.getSamples(sessionToken, Arrays.asList(sampleId), sampleFetchOptions); + assertEquals(samples.size(), 1); + Sample updatedSample = samples.get(sampleId); + assertEquals(updatedSample.getProperty("COMMENT"), "test comment"); + historyEntry = (PropertyHistoryEntry) updatedSample.getHistory().get(0); + assertEquals(historyEntry.getPropertyName(), "COMMENT"); + assertEquals(historyEntry.getPropertyValue(), "very advanced stuff"); + } @Test public void testExecuteWithSynchronousOperationThatSucceedsAndExecutionIdNull()