diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java index 001924f26f59a7c6ad3fa856b2c0c216bc6198f3..4936235a46c19907e3ca6df00a27e8c0a464783b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java @@ -385,12 +385,14 @@ public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Co @Transient public SamplePE getTop() { - SamplePE parentPE = getGeneratedFrom(); - if (parentPE != null) + // traverse through parent relationship graph and stops on first sample that doesn't + // have parents or has more than one parent + final List<SamplePE> parents = getParents(); + if (parents.size() == 1) { - return parentPE.getTop() == null ? parentPE : parentPE.getTop(); + return parents.get(0).getTop(); } - return null; + return this; } @Transient