diff options
author | Eike Stepper | 2009-12-21 18:55:18 +0000 |
---|---|---|
committer | Eike Stepper | 2009-12-21 18:55:18 +0000 |
commit | ba58afdffaec50ebdf4a0b7ac09b1e0f8b278224 (patch) | |
tree | c4a9aa60071a8c375b1247e3a46cdfaa6c468206 /plugins/org.eclipse.emf.cdo/src/org/eclipse | |
parent | 4f757606dc745842dc0cebf44a0dc2905589e97e (diff) | |
download | cdo-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.java | 8 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java | 34 |
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; } /** |