Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-03-02 18:42:50 +0000
committerEike Stepper2015-03-02 18:42:50 +0000
commitbf71608ba0912a067c4e9f5eb16aaafac85f8e68 (patch)
tree2438f77ae85258b9b1edac526bf12e703860ac82
parentb4c27cde2cd092c670044fa9d6464b51cedbc161 (diff)
downloadcdo-bf71608ba0912a067c4e9f5eb16aaafac85f8e68.tar.gz
cdo-bf71608ba0912a067c4e9f5eb16aaafac85f8e68.tar.xz
cdo-bf71608ba0912a067c4e9f5eb16aaafac85f8e68.zip
[458349] Consolidate UI
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458349
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/.settings/.api_filters16
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java60
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/CDOCheckoutDashboard.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java165
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/AbstractNewWizard.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java93
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundAction.java7
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStateMachine.java3
12 files changed, 298 insertions, 115 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.explorer.ui/.settings/.api_filters
index fb5a265ed5..ea3ca7fa39 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/.settings/.api_filters
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/.settings/.api_filters
@@ -8,4 +8,20 @@
</message_arguments>
</filter>
</resource>
+ <resource path="src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java" type="org.eclipse.emf.cdo.explorer.ui.checkouts.actions.NewActionProvider$WizardDescriptorWrapper">
+ <filter id="574619656">
+ <message_arguments>
+ <message_argument value="IWizardDescriptor"/>
+ <message_argument value="WizardDescriptorWrapper"/>
+ </message_arguments>
+ </filter>
+ </resource>
+ <resource path="src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java" type="org.eclipse.emf.cdo.explorer.ui.checkouts.actions.NewActionProvider$WizardRegistryWrapper">
+ <filter id="574619656">
+ <message_arguments>
+ <message_argument value="IWizardRegistry"/>
+ <message_argument value="WizardRegistryWrapper"/>
+ </message_arguments>
+ </filter>
+ </resource>
</component>
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java
index f03b7bd1a5..44c49eb4c3 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java
@@ -11,7 +11,6 @@
package org.eclipse.emf.cdo.explorer.ui.checkouts;
import org.eclipse.emf.cdo.CDOElement;
-import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.eresource.CDOResource;
@@ -372,7 +371,7 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
@Override
protected IStatus run(IProgressMonitor monitor)
{
- monitor.beginTask(title, 110 + (copy ? objects.length + 1 : 0));
+ monitor.beginTask(title, 111 + objects.length);
CDOCheckout checkout = CDOExplorerUtil.getCheckout(objects[0]);
CDOTransaction transaction = checkout.openTransaction();
@@ -395,10 +394,14 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
if (copier != null)
{
transactionalObject = copier.copy(transactionalObject);
- monitor.worked(1);
+ }
+ else
+ {
+ EcoreUtil.remove(transactionalObject);
}
transactionalObjects.add(transactionalObject);
+ monitor.worked(1);
}
if (copier != null)
@@ -409,12 +412,13 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
T transactionalTarget = transaction.getObject(target);
- insert(transactionalObjects, transactionalTarget, new SubProgressMonitor(monitor, 10));
+ insert(transactionalObjects, transactionalTarget, copy, new SubProgressMonitor(monitor, 10));
transaction.commit(new SubProgressMonitor(monitor, 100));
}
catch (Exception ex)
{
OM.LOG.error(ex);
+ return new Status(IStatus.ERROR, OM.BUNDLE_ID, "The operation did not complete sucessfully.", ex);
}
finally
{
@@ -427,7 +431,7 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
}.schedule();
}
- protected abstract void insert(List<? extends EObject> objects, T target, IProgressMonitor monitor);
+ protected abstract void insert(List<? extends EObject> objects, T target, boolean copy, IProgressMonitor monitor);
@SuppressWarnings("unchecked")
public static <T extends EObject> Operation<T> getFor(Object target, TransferData transferType)
@@ -502,17 +506,18 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
return null;
}
- private static void setUniqueName(CDOResourceNode resourceNode, EList<? extends EObject> contents)
+ private static void setUniqueName(CDOResourceNode resourceNode, EList<? extends EObject> targetContents,
+ boolean copy)
{
boolean nameConflict = false;
String resourceName = resourceNode.getName();
Set<String> names = new HashSet<String>();
- for (Object object : contents)
+ for (Object existingChild : targetContents)
{
- if (object != resourceNode)
+ if (existingChild != resourceNode)
{
- String name = ((CDOResourceNode)object).getName();
+ String name = ((CDOResourceNode)existingChild).getName();
if (ObjectUtil.equals(name, resourceName))
{
nameConflict = true;
@@ -524,10 +529,10 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
if (nameConflict)
{
- String copyName = resourceName + "-copy";
+ String renamed = resourceName + (copy ? "-copy" : "-renamed");
for (int i = 0; i < Integer.MAX_VALUE; i++)
{
- String name = copyName;
+ String name = renamed;
if (i != 0)
{
name += i;
@@ -553,7 +558,7 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
}
@Override
- protected void insert(List<? extends EObject> objects, CDOResource target, IProgressMonitor monitor)
+ protected void insert(List<? extends EObject> objects, CDOResource target, boolean copy, IProgressMonitor monitor)
{
target.getContents().addAll(objects);
}
@@ -647,7 +652,7 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
}
@Override
- protected void insert(List<? extends EObject> objects, EObject target, IProgressMonitor monitor)
+ protected void insert(List<? extends EObject> objects, EObject target, boolean copy, IProgressMonitor monitor)
{
for (EObject object : objects)
{
@@ -694,24 +699,14 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
* TODO Consolidate with {@link ResourceNodeToFolder#insert(List, CDOResourceFolder, IProgressMonitor)}.
*/
@Override
- protected void insert(List<? extends EObject> objects, CDOResource target, IProgressMonitor monitor)
+ protected void insert(List<? extends EObject> objects, CDOResource target, boolean copy, IProgressMonitor monitor)
{
EList<EObject> contents = target.getContents();
for (EObject object : objects)
{
CDOResourceNode resourceNode = (CDOResourceNode)object;
- boolean copy = resourceNode.cdoState() == CDOState.TRANSIENT;
+ setUniqueName(resourceNode, contents, copy);
contents.add(resourceNode);
- // resourceNode.setFolder(null);
-
- if (copy)
- {
- // The object must be attached before getParent() is called!
- if (CDOExplorerUtil.getParent(object) == target)
- {
- setUniqueName(resourceNode, contents);
- }
- }
}
}
}
@@ -727,24 +722,15 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
}
@Override
- protected void insert(List<? extends EObject> objects, CDOResourceFolder target, IProgressMonitor monitor)
+ protected void insert(List<? extends EObject> objects, CDOResourceFolder target, boolean copy,
+ IProgressMonitor monitor)
{
EList<CDOResourceNode> nodes = target.getNodes();
for (EObject object : objects)
{
CDOResourceNode resourceNode = (CDOResourceNode)object;
- boolean copy = resourceNode.cdoState() == CDOState.TRANSIENT;
+ setUniqueName(resourceNode, nodes, copy);
nodes.add(resourceNode);
- // ((InternalCDOObject)resourceNode).eSetResource(null, null);
-
- if (copy)
- {
- // The resourceNode must be attached before getParent() is called!
- if (CDOExplorerUtil.getParent(resourceNode) == target)
- {
- setUniqueName(resourceNode, nodes);
- }
- }
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/CDOCheckoutDashboard.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/CDOCheckoutDashboard.java
index f46351fc6a..245cb649a8 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/CDOCheckoutDashboard.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/CDOCheckoutDashboard.java
@@ -356,7 +356,7 @@ public class CDOCheckoutDashboard extends Composite implements ISelectionListene
protected void viewChanged(CDOView oldView, CDOView newView)
{
super.viewChanged(oldView, newView);
- // timeSlider.connect(newView, null);
+ timeSlider.connect(newView, null);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java
index 6df0419c57..bf1d676175 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/NewActionProvider.java
@@ -36,6 +36,7 @@ import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.ui.action.CreateChildAction;
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
@@ -52,6 +53,7 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWizard;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.navigator.CommonActionProvider;
@@ -103,38 +105,8 @@ public class NewActionProvider extends CommonActionProvider implements ISelectio
showDlgAction = ActionFactory.NEW.create(window);
- final CDOCheckoutContentProvider contentProvider = getContentProvider();
- final IWizardRegistry wizardRegistry = PlatformUI.getWorkbench().getNewWizardRegistry();
-
- IWizardRegistry wrapperRegistry = new IWizardRegistry()
- {
- public IWizardCategory getRootCategory()
- {
- return wizardRegistry.getRootCategory();
- }
-
- public IWizardDescriptor[] getPrimaryWizards()
- {
- return wizardRegistry.getPrimaryWizards();
- }
-
- public IWizardDescriptor findWizard(String id)
- {
- IWizardDescriptor wizard = wizardRegistry.findWizard(id);
- if (wizard instanceof AbstractNewWizard)
- {
- AbstractNewWizard newWizard = (AbstractNewWizard)wizard;
- newWizard.setContentProvider(contentProvider);
- }
-
- return wizard;
- }
-
- public IWizardCategory findCategory(String id)
- {
- return wizardRegistry.findCategory(id);
- }
- };
+ CDOCheckoutContentProvider contentProvider = getContentProvider();
+ IWizardRegistry wrapperRegistry = new WizardRegistryWrapper(contentProvider);
newWizardActionGroup = new WizardActionGroup(window, wrapperRegistry, WizardActionGroup.TYPE_NEW,
extensionSite.getContentService());
@@ -317,6 +289,135 @@ public class NewActionProvider extends CommonActionProvider implements ISelectio
/**
* @author Eike Stepper
*/
+ private static final class WizardRegistryWrapper implements IWizardRegistry
+ {
+ private static final IWizardRegistry DELEGATE = PlatformUI.getWorkbench().getNewWizardRegistry();
+
+ private final CDOCheckoutContentProvider contentProvider;
+
+ private WizardRegistryWrapper(CDOCheckoutContentProvider contentProvider)
+ {
+ this.contentProvider = contentProvider;
+ }
+
+ public IWizardCategory getRootCategory()
+ {
+ return DELEGATE.getRootCategory();
+ }
+
+ public IWizardDescriptor[] getPrimaryWizards()
+ {
+ return DELEGATE.getPrimaryWizards();
+ }
+
+ public IWizardDescriptor findWizard(String id)
+ {
+ final IWizardDescriptor delegate = DELEGATE.findWizard(id);
+ if (delegate != null)
+ {
+ return new WizardDescriptorWrapper(delegate, contentProvider);
+ }
+
+ return delegate;
+ }
+
+ public IWizardCategory findCategory(String id)
+ {
+ return DELEGATE.findCategory(id);
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ private static final class WizardDescriptorWrapper implements IWizardDescriptor
+ {
+ private final IWizardDescriptor delegate;
+
+ private final CDOCheckoutContentProvider contentProvider;
+
+ private WizardDescriptorWrapper(IWizardDescriptor delegate, CDOCheckoutContentProvider contentProvider)
+ {
+ this.delegate = delegate;
+ this.contentProvider = contentProvider;
+ }
+
+ public String getId()
+ {
+ return delegate.getId();
+ }
+
+ public ImageDescriptor getImageDescriptor()
+ {
+ return delegate.getImageDescriptor();
+ }
+
+ public IStructuredSelection adaptedSelection(IStructuredSelection selection)
+ {
+ return delegate.adaptedSelection(selection);
+ }
+
+ public String getLabel()
+ {
+ return delegate.getLabel();
+ }
+
+ public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter)
+ {
+ return delegate.getAdapter(adapter);
+ }
+
+ public String getDescription()
+ {
+ return delegate.getDescription();
+ }
+
+ public String[] getTags()
+ {
+ return delegate.getTags();
+ }
+
+ public IWorkbenchWizard createWizard() throws CoreException
+ {
+ IWorkbenchWizard wizard = delegate.createWizard();
+ if (wizard instanceof AbstractNewWizard)
+ {
+ AbstractNewWizard newWizard = (AbstractNewWizard)wizard;
+ newWizard.setContentProvider(contentProvider);
+ }
+
+ return wizard;
+ }
+
+ public ImageDescriptor getDescriptionImage()
+ {
+ return delegate.getDescriptionImage();
+ }
+
+ public String getHelpHref()
+ {
+ return delegate.getHelpHref();
+ }
+
+ public IWizardCategory getCategory()
+ {
+ return delegate.getCategory();
+ }
+
+ public boolean canFinishEarly()
+ {
+ return delegate.canFinishEarly();
+ }
+
+ public boolean hasPages()
+ {
+ return delegate.hasPages();
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
private abstract class AbstractNewAction extends TransactionalBackgroundAction
{
private CDOCheckout checkout;
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java
index 712f50f665..03bbba19e5 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/ShowInActionProvider.java
@@ -138,11 +138,12 @@ public class ShowInActionProvider extends AbstractActionProvider<Object>
CDOCheckout checkout = (CDOCheckout)selectedElement;
if (checkout.isOpen())
{
- if (viewer != null)
- {
- menu.add(new ShowInDashboardAction(viewer, page));
- filled = true;
- }
+ // TODO
+ // if (viewer != null)
+ // {
+ // menu.add(new ShowInDashboardAction(viewer, page));
+ // filled = true;
+ // }
if (checkout.isOffline())
{
@@ -340,6 +341,7 @@ public class ShowInActionProvider extends AbstractActionProvider<Object>
/**
* @author Eike Stepper
*/
+ @SuppressWarnings("unused")
private static final class ShowInDashboardAction extends Action
{
private final StructuredViewer viewer;
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/AbstractNewWizard.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/AbstractNewWizard.java
index aab9a5a268..58f2cc7282 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/AbstractNewWizard.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/AbstractNewWizard.java
@@ -22,6 +22,8 @@ import org.eclipse.emf.cdo.explorer.ui.checkouts.CDOCheckoutContentProvider;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.net4j.util.ui.UIUtil;
+
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -110,21 +112,21 @@ public abstract class AbstractNewWizard extends Wizard implements INewWizard
CDOTransaction transaction = checkout.openTransaction();
- CDOResourceNode txParent = transaction.getObject(parentResourceNode);
- if (txParent instanceof CDOResourceFolder)
- {
- ((CDOResourceFolder)txParent).getNodes().add(newResourceNode);
- }
- else
- {
- transaction.getRootResource().getContents().add(newResourceNode);
- }
-
CDOCommitInfo commitInfo = null;
CDOID newID = null;
try
{
+ CDOResourceNode txParent = transaction.getObject(parentResourceNode);
+ if (txParent instanceof CDOResourceFolder)
+ {
+ ((CDOResourceFolder)txParent).getNodes().add(newResourceNode);
+ }
+ else
+ {
+ transaction.getRootResource().getContents().add(newResourceNode);
+ }
+
commitInfo = transaction.commit();
newID = newResourceNode.cdoID();
}
@@ -132,9 +134,21 @@ public abstract class AbstractNewWizard extends Wizard implements INewWizard
{
OM.LOG.error(ex);
- IStatus status = new Status(IStatus.ERROR, OM.BUNDLE_ID, ex.getMessage(), ex);
- ErrorDialog.openError(getShell(), "Error",
- "An error occured while creating the " + title.toLowerCase() + ".", status);
+ final IStatus status = new Status(IStatus.ERROR, OM.BUNDLE_ID, ex.getMessage(), ex);
+ UIUtil.getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ ErrorDialog.openError(getShell(), "Error", "An error occured while creating the " + title.toLowerCase()
+ + ".", status);
+ }
+ });
+
+ return Status.OK_STATUS;
+ }
+ finally
+ {
+ transaction.close();
}
if (commitInfo != null && contentProvider != null)
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
index a1d710c790..5658d26d4f 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
@@ -445,6 +445,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping, I
{
CDOID folderID = (CDOID)revision.data().getContainerID();
String name = (String)revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0);
+
CDOID existingID = accessor.readResourceID(folderID, name, revision.getBranch().getHead());
if (existingID != null && !existingID.equals(revision.getID()))
{
@@ -498,7 +499,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping, I
try
{
async = monitor.forkAsync();
- if (revision.isResourceFolder() || revision.isResource())
+ if (revision.isResourceNode())
{
checkDuplicateResources(accessor, revision);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
index a0f2454eaa..417a25d507 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/HorizontalBranchingClassMapping.java
@@ -352,7 +352,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
IIDHandler idHandler = getMappingStrategy().getStore().getIDHandler();
IDBPreparedStatement stmt = null;
boolean success = false;
-
+
try
{
if (timeStamp != CDOBranchPoint.UNSPECIFIED_DATE)
@@ -381,7 +381,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
{
DBUtil.close(stmt);
}
-
+
// Read multival tables only if revision exists
if (success && revision.getVersion() >= CDOBranchVersion.FIRST_VERSION)
{
@@ -397,7 +397,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
IDBPreparedStatement stmt = accessor.getDBConnection().prepareStatement(sqlSelectAttributesByVersion,
ReuseProbability.HIGH);
boolean success = false;
-
+
try
{
idHandler.setCDOID(stmt, 1, revision.getID());
@@ -415,7 +415,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
{
DBUtil.close(stmt);
}
-
+
// Read multival tables only if revision exists
if (success)
{
@@ -742,7 +742,7 @@ public class HorizontalBranchingClassMapping extends AbstractHorizontalClassMapp
try
{
async = monitor.forkAsync();
- if (revision.isResourceFolder() || revision.isResource())
+ if (revision.isResourceNode())
{
checkDuplicateResources(accessor, revision);
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java
index 8117d5b968..06aabd86ba 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/mem/MEMStore.java
@@ -1226,7 +1226,7 @@ public class MEMStore extends LongIDStore implements IMEMStore, BranchLoader3, D
private void addRevision(List<InternalCDORevision> list, InternalCDORevision revision, boolean raw)
{
- boolean resource = !(revision instanceof SyntheticCDORevision) && revision.isResource();
+ boolean resource = !(revision instanceof SyntheticCDORevision) && revision.isResourceNode();
if (resource && resourceNameFeature == null)
{
resourceNameFeature = revision.getEClass().getEStructuralFeature(CDOModelConstants.RESOURCE_NODE_NAME_ATTRIBUTE);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java
index 906a03690d..bdf2e83812 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java
@@ -299,11 +299,26 @@ public class LockingManagerTest extends AbstractLockingTest
readLock(company);
CDOTransaction transaction2 = session.openTransaction();
- Company company2 = (Company)transaction2.getResource(getResourcePath("/res1")).getContents().get(0);
+ final Company company2 = (Company)transaction2.getResource(getResourcePath("/res1")).getContents().get(0);
- CDOObject cdoCompany2 = CDOUtil.getCDOObject(company2);
- assertEquals(false, cdoCompany2.cdoWriteLock().isLockedByOthers());
- assertEquals(true, cdoCompany2.cdoReadLock().isLockedByOthers());
+ new PollingTimeOuter()
+ {
+ @Override
+ protected boolean successful()
+ {
+ try
+ {
+ CDOObject cdoCompany2 = CDOUtil.getCDOObject(company2);
+ assertEquals(false, cdoCompany2.cdoWriteLock().isLockedByOthers());
+ assertEquals(true, cdoCompany2.cdoReadLock().isLockedByOthers());
+ return true;
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
+ }
+ }.assertNoTimeOut();
}
public void testDetachedObjects() throws Exception
@@ -317,7 +332,7 @@ public class LockingManagerTest extends AbstractLockingTest
transaction.commit();
CDOTransaction transaction2 = session.openTransaction();
- Company company2 = (Company)transaction2.getResource(getResourcePath("/res1")).getContents().get(0);
+ final Company company2 = (Company)transaction2.getResource(getResourcePath("/res1")).getContents().get(0);
res.getContents().remove(0);
transaction.commit();
@@ -332,7 +347,23 @@ public class LockingManagerTest extends AbstractLockingTest
}
assertReadLock(false, company2);
- assertEquals(false, CDOUtil.getCDOObject(company2).cdoReadLock().isLockedByOthers());
+
+ new PollingTimeOuter()
+ {
+ @Override
+ protected boolean successful()
+ {
+ try
+ {
+ assertEquals(false, CDOUtil.getCDOObject(company2).cdoReadLock().isLockedByOthers());
+ return true;
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
+ }
+ }.assertNoTimeOut();
}
public void testWriteLockByOthers() throws Exception
@@ -348,11 +379,26 @@ public class LockingManagerTest extends AbstractLockingTest
writeLock(company);
CDOTransaction transaction2 = session.openTransaction();
- Company company2 = (Company)transaction2.getResource(getResourcePath("/res1")).getContents().get(0);
+ final Company company2 = (Company)transaction2.getResource(getResourcePath("/res1")).getContents().get(0);
- CDOObject cdoCompany2 = CDOUtil.getCDOObject(company2);
- assertEquals(true, cdoCompany2.cdoWriteLock().isLockedByOthers());
- assertEquals(false, cdoCompany2.cdoReadLock().isLockedByOthers());
+ new PollingTimeOuter()
+ {
+ @Override
+ protected boolean successful()
+ {
+ try
+ {
+ CDOObject cdoCompany2 = CDOUtil.getCDOObject(company2);
+ assertEquals(true, cdoCompany2.cdoWriteLock().isLockedByOthers());
+ assertEquals(false, cdoCompany2.cdoReadLock().isLockedByOthers());
+ return true;
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
+ }
+ }.assertNoTimeOut();
}
public void testWriteLock() throws Exception
@@ -1085,9 +1131,9 @@ public class LockingManagerTest extends AbstractLockingTest
controlView.options().setLockNotificationEnabled(true);
CDOResource r = controlView.getResource(getResourcePath("/res1"));
- CDOObject category1cv = CDOUtil.getCDOObject(r.getContents().get(0));
- CDOObject category2cv = CDOUtil.getCDOObject(r.getContents().get(1));
- CDOObject category3cv = CDOUtil.getCDOObject(r.getContents().get(2));
+ final CDOObject category1cv = CDOUtil.getCDOObject(r.getContents().get(0));
+ final CDOObject category2cv = CDOUtil.getCDOObject(r.getContents().get(1));
+ final CDOObject category3cv = CDOUtil.getCDOObject(r.getContents().get(2));
assertEquals(true, category1cv.cdoReadLock().isLockedByOthers());
assertEquals(true, category2cv.cdoWriteLock().isLockedByOthers());
@@ -1097,9 +1143,24 @@ public class LockingManagerTest extends AbstractLockingTest
writeUnlock(category2);
writeUnoption(category3);
- assertEquals(false, category1cv.cdoReadLock().isLockedByOthers());
- assertEquals(false, category2cv.cdoReadLock().isLockedByOthers());
- assertEquals(false, category3cv.cdoReadLock().isLockedByOthers());
+ new PollingTimeOuter()
+ {
+ @Override
+ protected boolean successful()
+ {
+ try
+ {
+ assertEquals(false, category1cv.cdoReadLock().isLockedByOthers());
+ assertEquals(false, category2cv.cdoReadLock().isLockedByOthers());
+ assertEquals(false, category3cv.cdoReadLock().isLockedByOthers());
+ return true;
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
+ }
+ }.assertNoTimeOut();
session1.close();
session2.close();
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundAction.java
index d8fbe28991..6424c9dd66 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundAction.java
@@ -57,13 +57,14 @@ public abstract class TransactionalBackgroundAction extends LongRunningAction
progressMonitor.beginTask(Messages.getString("TransactionalBackgroundAction_1"), 100); //$NON-NLS-1$
CDOTransaction transaction = openTransaction(object);
- CDOObject transactionalObject = transaction.getObject(object);
- progressMonitor.worked(5);
-
+ CDOObject transactionalObject = null;
CDOCommitInfo commitInfo = null;
try
{
+ transactionalObject = transaction.getObject(object);
+ progressMonitor.worked(5);
+
doRun(transaction, transactionalObject, new SubProgressMonitor(progressMonitor, 5));
commitInfo = transaction.commit(new SubProgressMonitor(progressMonitor, 90));
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStateMachine.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStateMachine.java
index 8251ac740f..4804bf4b0c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStateMachine.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOStateMachine.java
@@ -507,13 +507,14 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent
object.cdoInternalPostAttach();
// Compute a revision delta and register it with the tx
- CDORevisionDelta revisionDelta = revision.compare(cleanRevision);
+ InternalCDORevisionDelta revisionDelta = revision.compare(cleanRevision);
if (revisionDelta.isEmpty())
{
changeState(object, CDOState.CLEAN);
}
else
{
+ revisionDelta.setTarget(null);
transaction.registerRevisionDelta(revisionDelta);
transaction.registerDirty(object, (CDOFeatureDelta)null);
changeState(object, CDOState.DIRTY);

Back to the top