diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java index 452982a7351f2fa70d9bbae41bf0686df495d8bb..38de735ff84f9a137c32f090466dffe78b96e889 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java @@ -567,6 +567,7 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO updateSample(data, updates.getSampleIdentifierOrNull()); } else { + data.setSample(null); updateExperiment(data, updates.getExperimentIdentifierOrNull()); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToSampleTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToSampleTest.java index 93267bcab1c1a86cbd9b090df29324022bd91f68..1612093c9b15915847083546f82545de9515b8e0 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToSampleTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToSampleTest.java @@ -196,6 +196,17 @@ public class AssignDataSetToSampleTest extends BaseTest assertThat(component, is(inSample(sourceSample))); } + @Test + public void dataSetCanBeUnassignedFromSample() throws Exception + { + ExternalData data = create(aDataSet().inSample(sourceSample)); + + perform(anUpdateOf(data).removingSample()); + + assertThat(data, hasNoSample()); + assertThat(data, is(inExperiment(sourceExperiment))); + } + Space unrelatedAdmin; Space unrelatedObserver; diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/builder/DataSetUpdateBuilder.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/builder/DataSetUpdateBuilder.java index 4a277035ced6f644a260191c5b927044c74b40b8..4f6e33371111842c8fabfa67605316ec896bf605 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/builder/DataSetUpdateBuilder.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/builder/DataSetUpdateBuilder.java @@ -102,6 +102,12 @@ public class DataSetUpdateBuilder extends UpdateBuilder<DataSetUpdatesDTO> return this; } + public DataSetUpdateBuilder removingSample() + { + this.sampleIdentifier = null; + return this; + } + public DataSetUpdateBuilder withContainer(ExternalData dataSet) { this.containerCode = dataSet.getCode();