Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-10-11 09:51:11 +0000
committerEike Stepper2010-10-11 09:51:11 +0000
commit8cacdcabf8607d1448b747def3f3d3bbf76dc50f (patch)
treeb82f9f671aa7d17bc9180fc1c470ed2ccdb82925 /plugins/org.eclipse.emf.cdo.workspace
parent9c6efd9c1485e130836f73c3ee55a641e805bd24 (diff)
downloadcdo-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')
-rw-r--r--plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/FolderCDOWorkspaceBaseline.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/InternalCDOWorkspaceBaseline.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/workspace/CDOWorkspace.java8
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();
}

Back to the top