diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java index 8a638b5135..2073ef2d14 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java @@ -182,13 +182,7 @@ public class CDOBranchImpl extends Container<CDOBranch> implements InternalCDOBr if (branches == null && loadOnDemand) { - SubBranchInfo[] infos = branchManager.getBranchLoader().loadSubBranches(id); - branches = new InternalCDOBranch[infos.length]; - for (int i = 0; i < infos.length; i++) - { - SubBranchInfo info = infos[i]; - branches[i] = branchManager.getBranch(info.getID(), info.getName(), this, info.getBaseTimeStamp()); - } + loadBranches(); } return branches; @@ -281,7 +275,7 @@ public class CDOBranchImpl extends Container<CDOBranch> implements InternalCDOBr { if (branches == null) { - branches = new InternalCDOBranch[] { branch }; + loadBranches(); } else { @@ -333,6 +327,17 @@ public class CDOBranchImpl extends Container<CDOBranch> implements InternalCDOBr base = baseBranch.getPoint(branchInfo.getBaseTimeStamp()); } + private synchronized void loadBranches() + { + SubBranchInfo[] infos = branchManager.getBranchLoader().loadSubBranches(id); + branches = new InternalCDOBranch[infos.length]; + for (int i = 0; i < infos.length; i++) + { + SubBranchInfo info = infos[i]; + branches[i] = branchManager.getBranch(info.getID(), info.getName(), this, info.getBaseTimeStamp()); + } + } + /** * @author Eike Stepper */ |