diff options
Diffstat (limited to 'plugins')
22 files changed, 234 insertions, 100 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java index a8df0d93cd..db826a35e9 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java @@ -34,6 +34,7 @@ import org.eclipse.emf.ecore.impl.EClassImpl; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.util.FeatureMapUtil; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; @@ -410,6 +411,12 @@ public final class CDOClassInfoImpl implements InternalCDOClassInfo, Adapter.Int { return null; } + + @Override + public String toString() + { + return MessageFormat.format("RevisionWithoutID[{0}]", getClassInfo()); + } } /** @@ -452,5 +459,11 @@ public final class CDOClassInfoImpl implements InternalCDOClassInfo, Adapter.Int { return null; } + + @Override + public String toString() + { + return MessageFormat.format("RevisionWithoutID[{0}, {1}]", getClassInfo(), id); + } } } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java index a95435cca5..65c93e1e9f 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java @@ -367,6 +367,6 @@ public class StubCDORevision extends AbstractCDORevision private String getExceptionMessage() { - return "Unsupported operation in " + this; + return "Unsupported operation in " + getClass().getSimpleName(); } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_417483_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_417483_Test.java index 5522ab811c..9f18fe2559 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_417483_Test.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_417483_Test.java @@ -11,7 +11,9 @@ package org.eclipse.emf.cdo.tests.bugzilla; import org.eclipse.emf.cdo.CDODeltaNotification; +import org.eclipse.emf.cdo.CDOObject; import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode; +import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.common.security.CDOPermission; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.security.Access; @@ -395,6 +397,8 @@ public class Bugzilla_417483_Test extends AbstractCDOTest private boolean isWritable(EObject object) { - return CDOUtil.getCDOObject(object).cdoRevision().isWritable(); + CDOObject cdoObject = CDOUtil.getCDOObject(object); + CDORevision revision = cdoObject.cdoRevision(true); + return revision.isWritable(); } } diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java index a924b66083..0947772ea8 100644 --- a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java +++ b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java @@ -15,11 +15,12 @@ import org.eclipse.emf.cdo.CDOObject; import org.eclipse.emf.cdo.common.branch.CDOBranch; import org.eclipse.emf.cdo.common.branch.CDOBranchCreatedEvent; import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.internal.ui.actions.OpenTransactionAction; import org.eclipse.emf.cdo.internal.ui.actions.RemoveResourceActionDelegate; +import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.team.IRepositoryManager; import org.eclipse.emf.cdo.team.IRepositoryProject; import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.transaction.CDOTransactionCommentator; import org.eclipse.emf.cdo.ui.CDOEditorInput; import org.eclipse.emf.cdo.ui.CDOEditorUtil; import org.eclipse.emf.cdo.ui.CDOEventHandler; @@ -493,8 +494,8 @@ public class RepositoryContentProvider extends StructuredContentProvider<IWorksp if (selection instanceof CDOResource) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - CDOTransaction transaction = ((CDOResource)selection).cdoView().getSession().openTransaction(); - new CDOTransactionCommentator(transaction); + CDOSession session = ((CDOResource)selection).cdoView().getSession(); + CDOTransaction transaction = OpenTransactionAction.openTransaction(session); try { diff --git a/plugins/org.eclipse.emf.cdo.ui.team/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui.team/META-INF/MANIFEST.MF index dbf17b2b08..6ea8366a80 100644 --- a/plugins/org.eclipse.emf.cdo.ui.team/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.ui.team/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.emf.cdo.ui.team;singleton:=true -Bundle-Version: 4.2.0.qualifier +Bundle-Version: 4.2.100.qualifier Bundle-Activator: org.eclipse.emf.cdo.ui.internal.team.bundle.OM$Activator Bundle-Vendor: %providerName Bundle-ClassPath: . @@ -13,6 +13,6 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)", org.eclipse.team.ui;bundle-version="[3.5.0,4.0.0)", org.eclipse.emf.cdo.ui;bundle-version="[4.2.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.ui.shared;bundle-version="[4.0.0,5.0.0)" -Export-Package: org.eclipse.emf.cdo.ui.internal.team.actions;version="4.2.0";x-internal:=true, - org.eclipse.emf.cdo.ui.internal.team.bundle;version="4.2.0";x-internal:=true, - org.eclipse.emf.cdo.ui.internal.team.history;version="4.2.0";x-internal:=true +Export-Package: org.eclipse.emf.cdo.ui.internal.team.actions;version="4.2.100";x-internal:=true, + org.eclipse.emf.cdo.ui.internal.team.bundle;version="4.2.100";x-internal:=true, + org.eclipse.emf.cdo.ui.internal.team.history;version="4.2.100";x-internal:=true diff --git a/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java b/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java index eb74631672..b7746e3192 100644 --- a/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java +++ b/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java @@ -15,9 +15,9 @@ import org.eclipse.emf.cdo.common.commit.CDOCommitInfo; import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler; import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager; import org.eclipse.emf.cdo.eresource.CDOResourceFolder; +import org.eclipse.emf.cdo.internal.ui.actions.OpenTransactionAction; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.transaction.CDOTransactionCommentator; import org.eclipse.emf.cdo.ui.widgets.CommitHistoryComposite; import org.eclipse.emf.cdo.ui.widgets.CommitHistoryComposite.Input; import org.eclipse.emf.cdo.ui.widgets.CommitHistoryComposite.LabelProvider; @@ -132,7 +132,7 @@ public class CDOHistoryPage extends HistoryPage } transaction = session.openTransaction(branch); - new CDOTransactionCommentator(transaction); + OpenTransactionAction.configureTransaction(transaction); CDOResourceFolder folder = transaction.getOrCreateResourceFolder("test"); folder.addResource("resource-" + folder.getNodes().size()); diff --git a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF index 0ead766298..18a4b28d15 100644 --- a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF @@ -23,7 +23,17 @@ Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";reso org.eclipse.emf.cdo.transfer.ui;bundle-version="[4.2.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.transfer.repository;bundle-version="[4.2.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.ui.shared;bundle-version="[4.0.0,5.0.0)" -Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.3.0"; +Export-Package: org.eclipse.emf.cdo.internal.ui.bundle;version="4.3.0";x-internal:=true, + org.eclipse.emf.cdo.internal.ui.messages;version="4.3.0"; + x-friends:="org.eclipse.emf.cdo.ui.defs, + org.eclipse.emf.cdo.ui.ide, + org.eclipse.emf.cdo.ui.location, + org.eclipse.emf.cdo.tests.ui, + org.eclipse.emf.cdo.dawn.ui, + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", + org.eclipse.emf.cdo.internal.ui;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, @@ -38,8 +48,9 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.3.0"; org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.bundle;version="4.3.0";x-internal:=true, + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.dialogs;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, @@ -47,6 +58,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.3.0"; org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.dnd;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, @@ -54,50 +66,71 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.3.0"; org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.editor;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.filters;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.history;version="4.3.0";x-internal:=true, - org.eclipse.emf.cdo.internal.ui.messages;version="4.3.0";x-friends:="org.eclipse.emf.cdo.tests.ui", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", + org.eclipse.emf.cdo.internal.ui.history;version="4.3.0"; + x-friends:="org.eclipse.emf.cdo.ui.defs, + org.eclipse.emf.cdo.ui.ide, + org.eclipse.emf.cdo.ui.location, + org.eclipse.emf.cdo.tests.ui, + org.eclipse.emf.cdo.dawn.ui, + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.perspectives;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.preferences;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.transfer;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.internal.ui.views;version="4.3.0"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, - org.eclipse.emf.cdo.explorer", + org.eclipse.emf.cdo.explorer, + org.eclipse.emf.cdo.ui.team, + org.eclipse.emf.cdo.ui.compare", org.eclipse.emf.cdo.ui;version="4.3.0", org.eclipse.emf.cdo.ui.widgets;version="4.3.0" diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenDurableViewAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenDurableViewAction.java index 9ac41c0cc8..aae78eb29e 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenDurableViewAction.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenDurableViewAction.java @@ -16,7 +16,6 @@ import org.eclipse.emf.cdo.internal.ui.dialogs.OpenDurableViewDialog; import org.eclipse.emf.cdo.internal.ui.messages.Messages; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.transaction.CDOTransactionCommentator; import org.eclipse.emf.cdo.ui.shared.SharedIcons; import org.eclipse.core.runtime.IProgressMonitor; @@ -59,7 +58,7 @@ public final class OpenDurableViewAction extends AbstractOpenViewAction { CDOSession session = getSession(); CDOTransaction transaction = session.openTransaction(areaID); - new CDOTransactionCommentator(transaction); + OpenTransactionAction.configureTransaction(transaction); } catch (IllegalStateException ex) { diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenTransactionAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenTransactionAction.java index 61317f6d32..5123c5cd5b 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenTransactionAction.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenTransactionAction.java @@ -17,6 +17,8 @@ import org.eclipse.emf.cdo.transaction.CDOTransaction; import org.eclipse.emf.cdo.transaction.CDOTransactionCommentator; import org.eclipse.emf.cdo.ui.shared.SharedIcons; +import org.eclipse.emf.spi.cdo.CDOMergingConflictResolver; + import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IWorkbenchPage; @@ -37,10 +39,20 @@ public final class OpenTransactionAction extends AbstractOpenViewAction @Override protected void doRun(IProgressMonitor progressMonitor) throws Exception { - CDOTransaction transaction = getSession().openTransaction(); - new CDOTransactionCommentator(transaction); + CDOSession session = getSession(); + openTransaction(session); + } + + public static CDOTransaction openTransaction(CDOSession session) + { + CDOTransaction transaction = session.openTransaction(); + configureTransaction(transaction); + return transaction; + } - // CDOTransaction transaction = getSession().openTransaction(); - // transaction.options().getConflictResolvers().add(new CDOObjectConflictResolver.MergeLocalChangesPerFeature()); + public static void configureTransaction(CDOTransaction transaction) + { + transaction.options().addConflictResolver(new CDOMergingConflictResolver()); + new CDOTransactionCommentator(transaction); } } diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveResourceActionDelegate.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveResourceActionDelegate.java index 8d21334bef..3450b46141 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveResourceActionDelegate.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/RemoveResourceActionDelegate.java @@ -15,10 +15,10 @@ import org.eclipse.emf.cdo.CDOObject; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.eresource.CDOResourceFolder; import org.eclipse.emf.cdo.eresource.CDOResourceNode; -import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.transaction.CDOTransactionCommentator; import org.eclipse.emf.cdo.internal.ui.bundle.OM; import org.eclipse.emf.cdo.internal.ui.messages.Messages; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.transaction.CDOTransaction; import org.eclipse.net4j.util.ui.UIUtil; @@ -78,12 +78,12 @@ public class RemoveResourceActionDelegate implements IObjectActionDelegate Map<Integer, CDOTransaction> repositoryToTransaction = new HashMap<Integer, CDOTransaction>(); for (CDOResourceNode node : nodes) { - int sessionID = node.cdoView().getSession().getSessionID(); + CDOSession session = node.cdoView().getSession(); + int sessionID = session.getSessionID(); CDOTransaction transaction = repositoryToTransaction.get(sessionID); if (transaction == null) { - transaction = node.cdoView().getSession().openTransaction(); - new CDOTransactionCommentator(transaction); + transaction = OpenTransactionAction.openTransaction(session); repositoryToTransaction.put(sessionID, transaction); } diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundActionDelegate.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundActionDelegate.java index a2d5fddd07..53bb077505 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundActionDelegate.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/TransactionalBackgroundActionDelegate.java @@ -12,9 +12,9 @@ package org.eclipse.emf.cdo.internal.ui.actions; import org.eclipse.emf.cdo.CDOObject; -import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.transaction.CDOTransactionCommentator; import org.eclipse.emf.cdo.internal.ui.messages.Messages; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.transaction.CDOTransaction; import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.net4j.util.AdapterUtil; @@ -104,8 +104,8 @@ public abstract class TransactionalBackgroundActionDelegate extends LongRunningA */ protected CDOObject preRun(CDOObject object) { - CDOTransaction transaction = object.cdoView().getSession().openTransaction(); - new CDOTransactionCommentator(transaction); + CDOSession session = object.cdoView().getSession(); + CDOTransaction transaction = OpenTransactionAction.openTransaction(session); CDOObject transactionalObject = transaction.getObject(object); return transactionalObject; diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java index bf4f0a519d..d970fa7e10 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java @@ -17,6 +17,7 @@ import org.eclipse.emf.cdo.ui.widgets.SessionComposite; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; @@ -29,6 +30,10 @@ public class OpenSessionDialog extends TitleAreaDialog { public static final String TITLE = Messages.getString("OpenSessionDialog.0"); //$NON-NLS-1$ + private static final int WIDTH = 380; + + private static final int HEIGHT = 240; + private IWorkbenchPage page; private SessionComposite sessionComposite; @@ -55,7 +60,11 @@ public class OpenSessionDialog extends TitleAreaDialog { super.configureShell(newShell); newShell.setText(TITLE); - newShell.setSize(380, 240); + + Rectangle bounds = page.getWorkbenchWindow().getShell().getBounds(); + int x = bounds.x + (bounds.width - WIDTH) / 2; + int y = bounds.y + (bounds.height - HEIGHT) / 2; + newShell.setBounds(x, y, WIDTH, HEIGHT); } @Override diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java index 407b9618a0..3a171e1b5a 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java @@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.internal.ui.views; import org.eclipse.emf.cdo.eresource.CDOResourceLeaf; import org.eclipse.emf.cdo.internal.ui.actions.OpenSessionAction; +import org.eclipse.emf.cdo.internal.ui.actions.OpenTransactionAction; import org.eclipse.emf.cdo.internal.ui.transfer.RepositoryTransferDragListener; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.transfer.ui.TransferDropAdapter; @@ -100,7 +101,7 @@ public class CDOSessionsView extends ContainerView CDOSession session = (CDOSession)object; if (session.getViews().length == 0) { - session.openTransaction(); + OpenTransactionAction.openTransaction(session); return; } } diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java index 2c12579932..48527278e6 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOItemProvider.java @@ -678,9 +678,12 @@ public class CDOItemProvider extends ContainerItemProvider<IContainer<Object>> { super.elementAdded(element, parent); + // TODO Remove listeners? + if (element instanceof CDOSession) { - ((CDOSession)element).addListener(new IListener() + CDOSession session = (CDOSession)element; + session.addListener(new IListener() { public void notifyEvent(IEvent event) { @@ -694,7 +697,8 @@ public class CDOItemProvider extends ContainerItemProvider<IContainer<Object>> if (element instanceof CDOView) { - ((CDOView)element).addListener(new IListener() + final CDOView view = (CDOView)element; + view.addListener(new IListener() { public void notifyEvent(IEvent event) { 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 3ac5c5c9b5..b3d5b02813 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 @@ -347,7 +347,6 @@ public class CDOResourceImpl extends CDOResourceLeafImpl implements InternalCDOR setPath(newPath); } - @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { @@ -355,7 +354,7 @@ public class CDOResourceImpl extends CDOResourceLeafImpl implements InternalCDOR { case EresourcePackage.CDO_RESOURCE__URI: return getURI(); - + default: return super.eGet(featureID, resolve, coreType); } @@ -369,7 +368,7 @@ public class CDOResourceImpl extends CDOResourceLeafImpl implements InternalCDOR case EresourcePackage.CDO_RESOURCE__URI: setURI((URI)newValue); break; - + default: super.eSet(featureID, newValue); } @@ -1085,17 +1084,20 @@ public class CDOResourceImpl extends CDOResourceLeafImpl implements InternalCDOR } } - String query = initialURI.query(); - if (query != null && query.length() != 0) + if (initialURI != null) { - Map<String, String> parameters = CDOURIUtil.getParameters(query); - String value = parameters.get(CDOResource.PREFETCH_PARAMETER); - if (value != null) + String query = initialURI.query(); + if (query != null && query.length() != 0) { - boolean prefetch = Boolean.parseBoolean(value); - if (prefetch) + Map<String, String> parameters = CDOURIUtil.getParameters(query); + String value = parameters.get(CDOResource.PREFETCH_PARAMETER); + if (value != null) { - cdoPrefetch(CDORevision.DEPTH_INFINITE); + boolean prefetch = Boolean.parseBoolean(value); + if (prefetch) + { + cdoPrefetch(CDORevision.DEPTH_INFINITE); + } } } } diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java index 18fd7c1073..00a6bb8779 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java @@ -167,12 +167,13 @@ public class CDOObjectImpl extends MinimalEStoreEObjectImpl implements InternalC */ public final InternalCDORevision cdoRevision(boolean loadOnDemand) { - if (loadOnDemand) + InternalCDORevision revision = cdoRevision(); + if (revision == null && loadOnDemand) { - CDOStateMachine.INSTANCE.read(this); + revision = CDOStateMachine.INSTANCE.read(this); } - return cdoRevision(); + return revision; } /** diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java index 3193e5008e..1f03338766 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java @@ -789,15 +789,9 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa } conflict -= resolved; - if (conflict == 0) - { - setDirty(false); - } - else - { - Map<CDOID, CDOObject> dirtyObjects = getLastSavepoint().getDirtyObjects(); - setDirty(!dirtyObjects.isEmpty()); - } + + Map<CDOID, CDOObject> dirtyObjects = getLastSavepoint().getDirtyObjects(); + setDirty(!dirtyObjects.isEmpty()); } /** diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java index 73f451b239..116905abeb 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java @@ -58,6 +58,7 @@ import org.eclipse.emf.cdo.util.DanglingReferenceException; import org.eclipse.emf.cdo.util.InvalidURIException; import org.eclipse.emf.cdo.util.ObjectNotFoundException; import org.eclipse.emf.cdo.util.ReadOnlyException; +import org.eclipse.emf.cdo.view.CDOAdapterPolicy; import org.eclipse.emf.cdo.view.CDOObjectHandler; import org.eclipse.emf.cdo.view.CDOQuery; import org.eclipse.emf.cdo.view.CDOView; @@ -75,6 +76,7 @@ import org.eclipse.net4j.util.CheckUtil; import org.eclipse.net4j.util.ImplementationError; import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump; import org.eclipse.net4j.util.StringUtil; +import org.eclipse.net4j.util.WrappedException; import org.eclipse.net4j.util.collection.CloseableIterator; import org.eclipse.net4j.util.collection.ConcurrentArray; import org.eclipse.net4j.util.collection.Pair; @@ -111,6 +113,7 @@ import org.eclipse.emf.spi.cdo.InternalCDOViewSet; import org.eclipse.core.runtime.Platform; +import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; @@ -331,6 +334,15 @@ public abstract class AbstractCDOView extends CDOCommitHistoryProviderImpl<CDOOb rootResource = resource; rootResource.setRoot(true); registerObject(rootResource); + + try + { + rootResource.load(null); + } + catch (IOException ex) + { + throw WrappedException.wrap(ex); + } } public synchronized boolean isEmpty() @@ -365,7 +377,7 @@ public abstract class AbstractCDOView extends CDOCommitHistoryProviderImpl<CDOOb return elements.toArray(new CDOResourceNode[elements.size()]); } - private void ensureContainerAdapter(CDOResource rootResource) + private void ensureContainerAdapter(final CDOResource rootResource) { EList<Adapter> adapters = rootResource.eAdapters(); ContainerAdapter adapter = getContainerAdapter(adapters); @@ -373,6 +385,14 @@ public abstract class AbstractCDOView extends CDOCommitHistoryProviderImpl<CDOOb { adapter = new ContainerAdapter(); adapters.add(adapter); + + options().addChangeSubscriptionPolicy(new CDOAdapterPolicy() + { + public boolean isValid(EObject eObject, Adapter adapter) + { + return eObject == rootResource; + } + }); } } @@ -1987,10 +2007,6 @@ public abstract class AbstractCDOView extends CDOCommitHistoryProviderImpl<CDOOb // TODO break; - case Notification.SET: - // TODO - break; - case Notification.UNSET: // TODO break; 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 9faa309394..e09c8f12c7 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 @@ -1020,9 +1020,9 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent newRevision = (InternalCDORevision)cache.getRevisionByVersion(newKey.getID(), newKey); } + object.cdoInternalSetRevision(newRevision); if (newRevision != null) { - object.cdoInternalSetRevision(newRevision); changeState(object, CDOState.CLEAN); object.cdoInternalPostLoad(); } @@ -1032,6 +1032,7 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent CDOInvalidationPolicy policy = view.options().getInvalidationPolicy(); policy.handleInvalidation(object, key); + object.cdoInternalPostInvalidate(); } } diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOMergingConflictResolver.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOMergingConflictResolver.java index debb6d3035..82df8c422a 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOMergingConflictResolver.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOMergingConflictResolver.java @@ -120,30 +120,15 @@ public class CDOMergingConflictResolver extends AbstractChangeSetsConflictResolv InternalCDOObject object = (InternalCDOObject)transaction.getObject(id, false); if (object != null) { - // Compute new version - InternalCDORevision localRevision = object.cdoRevision(); - int newVersion = localRevision.getVersion() + 1; - - // Compute new local revision - InternalCDORevision cleanRevision = cleanRevisions.get(object); - if (cleanRevision == null) - { - // In this case the object revision *is clean* - cleanRevision = object.cdoRevision(); - } - - InternalCDORevision newLocalRevision = cleanRevision.copy(); - newLocalRevision.setVersion(newVersion); - resultDelta.apply(newLocalRevision); + int newVersion = computeNewVersion(object); + InternalCDORevision cleanRevision = computeOldCleanRevision(object, cleanRevisions); + InternalCDORevision newLocalRevision = computeNewLocalRevision(resultDelta, newVersion, cleanRevision); // Adjust local object object.cdoInternalSetRevision(newLocalRevision); - // Compute new clean revision - CDORevisionDelta remoteDelta = remoteDeltas.get(id); - final InternalCDORevision newCleanRevision = cleanRevision.copy(); - newCleanRevision.setVersion(newVersion); - remoteDelta.apply(newCleanRevision); + final InternalCDORevision newCleanRevision = computeNewCleanRevision(remoteDeltas, id, newVersion, + cleanRevision); // Compute new local delta InternalCDORevisionDelta newLocalDelta = newLocalRevision.compare(newCleanRevision); @@ -225,6 +210,49 @@ public class CDOMergingConflictResolver extends AbstractChangeSetsConflictResolv } } + private int computeNewVersion(InternalCDOObject object) + { + InternalCDORevision localRevision = object.cdoRevision(); + int newVersion = localRevision.getVersion() + 1; + return newVersion; + } + + private InternalCDORevision computeOldCleanRevision(InternalCDOObject object, + Map<InternalCDOObject, InternalCDORevision> cleanRevisions) + { + InternalCDORevision cleanRevision = cleanRevisions.get(object); + if (cleanRevision == null) + { + // In this case the object revision *is clean* + cleanRevision = object.cdoRevision(); + } + return cleanRevision; + } + + private InternalCDORevision computeNewLocalRevision(InternalCDORevisionDelta resultDelta, int newVersion, + InternalCDORevision cleanRevision) + { + InternalCDORevision newLocalRevision = cleanRevision.copy(); + newLocalRevision.setVersion(newVersion); + resultDelta.apply(newLocalRevision); + return newLocalRevision; + } + + private InternalCDORevision computeNewCleanRevision(Map<CDOID, CDORevisionDelta> remoteDeltas, CDOID id, + int newVersion, InternalCDORevision cleanRevision) + { + CDORevisionDelta remoteDelta = remoteDeltas.get(id); + if (remoteDelta != null) + { + InternalCDORevision newCleanRevision = cleanRevision.copy(); + newCleanRevision.setVersion(newVersion); + remoteDelta.apply(newCleanRevision); + return newCleanRevision; + } + + return cleanRevision; + } + private Map<CDOID, CDORevisionDelta> getRemoteDeltas(CDOChangeSet remoteChangeSet) { Map<CDOID, CDORevisionDelta> remoteDeltas = CDOIDUtil.createMap(); diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java index 761376d867..d80ea4dde8 100644 --- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java +++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerItemProvider.java @@ -122,14 +122,18 @@ public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends } } - @Override - public void dispose() + /** + * @since 3.4 + */ + public void clearNodesCache() { - super.dispose(); + disposeRoot(); + + CONTAINER input = getInput(); + initRoot(input); } - @Override - protected void connectInput(CONTAINER input) + private void initRoot(CONTAINER input) { root = createNode(null, input); if (root != null) @@ -138,14 +142,25 @@ public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends } } - @Override - protected void disconnectInput(CONTAINER input) + private void disposeRoot() { - root.dispose(); + root.dispose(); // Also disposes of all children root = null; nodes.clear(); } + @Override + protected void connectInput(CONTAINER input) + { + initRoot(input); + } + + @Override + protected void disconnectInput(CONTAINER input) + { + disposeRoot(); + } + /** * @since 2.0 */ @@ -620,8 +635,8 @@ public class ContainerItemProvider<CONTAINER extends IContainer<Object>> extends if (!isDisposed()) { container.removeListener(containerListener); - container = null; super.dispose(); + container = null; } } diff --git a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java index d1d46f218a..d752c16839 100644 --- a/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java +++ b/plugins/org.eclipse.net4j.util.ui/src/org/eclipse/net4j/util/ui/views/ContainerView.java @@ -463,6 +463,7 @@ public abstract class ContainerView extends ViewPart implements ISelectionProvid */ protected void refreshPressed() { + itemProvider.clearNodesCache(); UIUtil.refreshViewer(viewer); } |