Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2009-12-21 18:55:18 +0000
committerEike Stepper2009-12-21 18:55:18 +0000
commitba58afdffaec50ebdf4a0b7ac09b1e0f8b278224 (patch)
treec4a9aa60071a8c375b1247e3a46cdfaa6c468206 /plugins/org.eclipse.emf.cdo/src/org/eclipse
parent4f757606dc745842dc0cebf44a0dc2905589e97e (diff)
downloadcdo-ba58afdffaec50ebdf4a0b7ac09b1e0f8b278224.tar.gz
cdo-ba58afdffaec50ebdf4a0b7ac09b1e0f8b278224.tar.xz
cdo-ba58afdffaec50ebdf4a0b7ac09b1e0f8b278224.zip
[298335] [UI] Let the CDOEditor override the transaction used during resource.save()
https://bugs.eclipse.org/bugs/show_bug.cgi?id=298335
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java8
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java34
2 files changed, 35 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java
index 5a47c5689c..88ca726cf3 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResource.java
@@ -10,6 +10,8 @@
*/
package org.eclipse.emf.cdo.eresource;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
@@ -49,6 +51,12 @@ public interface CDOResource extends CDOResourceNode, Resource
public static final String OPTION_SAVE_PROGRESS_MONITOR = IProgressMonitor.class.getName();
/**
+ * @ADDED
+ * @since 3.0
+ */
+ public static final String OPTION_SAVE_OVERRIDE_TRANSACTION = CDOTransaction.class.getName();
+
+ /**
* Returns the value of the '<em><b>Resource Set</b></em>' attribute. <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Resource Set</em>' attribute isn't clear, there really should be more of a description
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
index 3e5935ae4b..ceef6da16f 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
@@ -708,15 +708,35 @@ public class CDOResourceImpl extends CDOResourceNodeImpl implements CDOResource,
*/
public void save(Map<?, ?> options) throws IOException
{
- CDOView view = cdoView();
- if (view instanceof CDOTransaction)
+ CDOTransaction transaction = getTransaction(options);
+ IProgressMonitor progressMonitor = options != null ? (IProgressMonitor)options
+ .get(CDOResource.OPTION_SAVE_PROGRESS_MONITOR) : null;
+ transaction.commit(progressMonitor);
+ setModified(false);
+ }
+
+ /**
+ * @ADDED
+ */
+ private CDOTransaction getTransaction(Map<?, ?> options)
+ {
+ CDOTransaction transaction = options != null ? (CDOTransaction)options.get(CDOResource.OPTION_SAVE_OVERRIDE_TRANSACTION)
+ : null;
+
+ if (transaction == null)
{
- CDOTransaction transaction = (CDOTransaction)view;
- IProgressMonitor progressMonitor = options != null ? (IProgressMonitor)options
- .get(CDOResource.OPTION_SAVE_PROGRESS_MONITOR) : null;
- transaction.commit(progressMonitor);
- setModified(false);
+ CDOView view = cdoView();
+ if (view instanceof CDOTransaction)
+ {
+ transaction = (CDOTransaction)view;
+ }
+ else
+ {
+ throw new IllegalStateException("No transaction available");
+ }
}
+
+ return transaction;
}
/**

Back to the top