diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifier.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifier.java index 04ee3d71bd881628032fe027d77b86ef476b7020..a94442d9396e56dabe30ff1472d5e3ccde9b4fe5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifier.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifier.java @@ -35,6 +35,7 @@ public class NormalizedSampleIdentifier private String space; private String project; private String code; + private boolean codeOnly; private void extractPartsFrom(String identifier) { @@ -57,6 +58,7 @@ public class NormalizedSampleIdentifier } else { code = identifier; + codeOnly = true; } } @@ -123,19 +125,22 @@ public class NormalizedSampleIdentifier String identifier = sample.getIdentifier().toUpperCase(); identifierParts.extractPartsFrom(identifier); - if (identifierParts.space == null) + if (identifierParts.codeOnly) { - identifierParts.space = normalizeSpaceCode(sample.getDefaultSpaceIdentifier()); - } - - if (identifierParts.space == null) - { - identifierParts.space = normalizeSpaceCode(homeSpace); - } - - if (identifierParts.space == null) - { -// throw UserFailureException.fromTemplate("Cannot determine space for sample " + sample); + if (identifierParts.space == null) + { + identifierParts.space = normalizeSpaceCode(sample.getDefaultSpaceIdentifier()); + } + + if (identifierParts.space == null) + { + identifierParts.space = normalizeSpaceCode(homeSpace); + } + + if (identifierParts.space == null) + { + throw UserFailureException.fromTemplate("Cannot determine space for sample " + sample); + } } if (identifierParts.code.contains(":")) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifierTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifierTest.java index ce4bb2614c6d71092c00a2355f3493c8daf07856..d56c5e89323bcb35d916fe6e3557c43b3fce1709 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifierTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/NormalizedSampleIdentifierTest.java @@ -57,6 +57,21 @@ public class NormalizedSampleIdentifierTest assertEquals(identifier.getContainerCode(), null); } + @Test + public void testNewSharedSampleWithCodeNoHomeSpaceNoDefaultSpace() + { + newSample.setIdentifier("a"); + newSample.setDefaultSpaceIdentifier(null); + + try + { + new NormalizedSampleIdentifier(newSample, null); + } catch (UserFailureException ex) + { + assertEquals(ex.getMessage(), "Cannot determine space for sample A"); + } + } + @Test public void testNewSharedSampleComponent() {