diff options
author | Eike Stepper | 2010-10-11 09:51:11 +0000 |
---|---|---|
committer | Eike Stepper | 2010-10-11 09:51:11 +0000 |
commit | 8cacdcabf8607d1448b747def3f3d3bbf76dc50f (patch) | |
tree | b82f9f671aa7d17bc9180fc1c470ed2ccdb82925 /plugins/org.eclipse.emf.cdo.workspace | |
parent | 9c6efd9c1485e130836f73c3ee55a641e805bd24 (diff) | |
download | cdo-8cacdcabf8607d1448b747def3f3d3bbf76dc50f.tar.gz cdo-8cacdcabf8607d1448b747def3f3d3bbf76dc50f.tar.xz cdo-8cacdcabf8607d1448b747def3f3d3bbf76dc50f.zip |
[327405] Provide an offline CDOWorkspace with Checkout/Update/Commit workflows
https://bugs.eclipse.org/bugs/show_bug.cgi?id=327405
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.workspace')
4 files changed, 46 insertions, 10 deletions
diff --git a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java index 8cf146aaab..45d0d29f93 100644 --- a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java +++ b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java @@ -247,7 +247,14 @@ public class CDOWorkspaceImpl implements CDOWorkspace transaction.applyChangeSetData(changes, baseline, this, null); transaction.setCommitComment(comment); - return transaction.commit(); + + CDOCommitInfo info = transaction.commit(); + + baseline.clear(); + baseline.setBranchPath(info.getBranch().getPathName()); + baseline.setTimeStamp(info.getTimeStamp()); + + return info; } finally { diff --git a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/FolderCDOWorkspaceBaseline.java b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/FolderCDOWorkspaceBaseline.java index cfc063664c..76ee4c5cb9 100644 --- a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/FolderCDOWorkspaceBaseline.java +++ b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/FolderCDOWorkspaceBaseline.java @@ -44,6 +44,13 @@ public class FolderCDOWorkspaceBaseline extends AbstractCDOWorkspaceBaseline return folder; } + public void clear() + { + IOUtil.delete(folder); + checkExists(folder, false); + createFolder(); + } + public Set<CDOID> getIDs() { Set<CDOID> ids = new HashSet<CDOID>(); @@ -142,11 +149,7 @@ public class FolderCDOWorkspaceBaseline extends AbstractCDOWorkspaceBaseline { File file = getFile(id); file.delete(); - - if (file.exists()) - { - throw new IllegalStateException("Could not delete " + file.getAbsolutePath()); - } + checkExists(file, false); } protected CDOID getCDOID(String filename) @@ -166,4 +169,28 @@ public class FolderCDOWorkspaceBaseline extends AbstractCDOWorkspaceBaseline String key = getKey(id); return new File(folder, key); } + + private void createFolder() + { + IOUtil.mkdirs(folder); + checkExists(folder, true); + } + + private void checkExists(File file, boolean exists) + { + if (exists) + { + if (!file.exists()) + { + throw new IllegalStateException("File does not exist: " + file.getAbsolutePath()); + } + } + else + { + if (file.exists()) + { + throw new IllegalStateException("File does still exist: " + file.getAbsolutePath()); + } + } + } } diff --git a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/InternalCDOWorkspaceBaseline.java b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/InternalCDOWorkspaceBaseline.java index ba8dbce800..8302d94999 100644 --- a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/InternalCDOWorkspaceBaseline.java +++ b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/InternalCDOWorkspaceBaseline.java @@ -26,4 +26,6 @@ public interface InternalCDOWorkspaceBaseline extends CDOWorkspaceBaseline public void setTimeStamp(long timeStamp); public void updateAfterCommit(CDOTransaction transaction); + + public void clear(); } diff --git a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/workspace/CDOWorkspace.java b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/workspace/CDOWorkspace.java index 0fe534f0d9..42b50a5e99 100644 --- a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/workspace/CDOWorkspace.java +++ b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/workspace/CDOWorkspace.java @@ -44,10 +44,6 @@ public interface CDOWorkspace extends CDORevisionProvider, Closeable public CDOTransaction update(CDOMerger merger, String branchPath, long timeStamp); - public void revert(); - - public void replace(String branchPath, long timeStamp); - public CDOCommitInfo commit() throws CommitException; public CDOCommitInfo commit(String comment) throws CommitException; @@ -55,4 +51,8 @@ public interface CDOWorkspace extends CDORevisionProvider, Closeable public CDOChangeSetData getLocalChanges(); public IRepository getLocalRepository(); + + public void replace(String branchPath, long timeStamp); + + public void revert(); } |