diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common')
4 files changed, 131 insertions, 36 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF index f43900e3b2..3c0340ef51 100644 --- a/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.emf.cdo.common -Bundle-Version: 4.3.100.qualifier +Bundle-Version: 4.4.0.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -14,21 +14,21 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibili org.eclipse.emf.ecore.change;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, org.eclipse.emf.ecore.xmi;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)";visibility:=reexport -Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", - org.eclipse.emf.cdo.common.admin;version="4.3.100", - org.eclipse.emf.cdo.common.branch;version="4.3.100", - org.eclipse.emf.cdo.common.commit;version="4.3.100", - org.eclipse.emf.cdo.common.commit.handler;version="4.3.100", - org.eclipse.emf.cdo.common.id;version="4.3.100", - org.eclipse.emf.cdo.common.lob;version="4.3.100", - org.eclipse.emf.cdo.common.lock;version="4.3.100", - org.eclipse.emf.cdo.common.model;version="4.3.100", - org.eclipse.emf.cdo.common.protocol;version="4.3.100", - org.eclipse.emf.cdo.common.revision;version="4.3.100", - org.eclipse.emf.cdo.common.revision.delta;version="4.3.100", - org.eclipse.emf.cdo.common.security;version="4.3.100", - org.eclipse.emf.cdo.common.util;version="4.3.100", - org.eclipse.emf.cdo.internal.common;version="4.3.100"; +Export-Package: org.eclipse.emf.cdo.common;version="4.4.0", + org.eclipse.emf.cdo.common.admin;version="4.4.0", + org.eclipse.emf.cdo.common.branch;version="4.4.0", + org.eclipse.emf.cdo.common.commit;version="4.4.0", + org.eclipse.emf.cdo.common.commit.handler;version="4.4.0", + org.eclipse.emf.cdo.common.id;version="4.4.0", + org.eclipse.emf.cdo.common.lob;version="4.4.0", + org.eclipse.emf.cdo.common.lock;version="4.4.0", + org.eclipse.emf.cdo.common.model;version="4.4.0", + org.eclipse.emf.cdo.common.protocol;version="4.4.0", + org.eclipse.emf.cdo.common.revision;version="4.4.0", + org.eclipse.emf.cdo.common.revision.delta;version="4.4.0", + org.eclipse.emf.cdo.common.security;version="4.4.0", + org.eclipse.emf.cdo.common.util;version="4.4.0", + org.eclipse.emf.cdo.internal.common;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.common, org.eclipse.emf.cdo.common.db, org.eclipse.emf.cdo, @@ -38,11 +38,11 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.tests, org.eclipse.emf.cdo.server.hibernate", - org.eclipse.emf.cdo.internal.common.branch;version="4.3.100"; + org.eclipse.emf.cdo.internal.common.branch;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.tests, org.eclipse.emf.cdo.server.hibernate", - org.eclipse.emf.cdo.internal.common.bundle;version="4.3.100";x-internal:=true, - org.eclipse.emf.cdo.internal.common.commit;version="4.3.100"; + org.eclipse.emf.cdo.internal.common.bundle;version="4.4.0";x-internal:=true, + org.eclipse.emf.cdo.internal.common.commit;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.common, org.eclipse.emf.cdo.common.db, org.eclipse.emf.cdo, @@ -51,7 +51,7 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", org.eclipse.emf.cdo.server.net4j, org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.tests", - org.eclipse.emf.cdo.internal.common.id;version="4.3.100"; + org.eclipse.emf.cdo.internal.common.id;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.common, org.eclipse.emf.cdo.common.db, org.eclipse.emf.cdo, @@ -62,9 +62,9 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", org.eclipse.emf.cdo.tests, org.eclipse.emf.cdo.admin, org.eclipse.emf.cdo.server.admin", - org.eclipse.emf.cdo.internal.common.lock;version="4.3.100";x-internal:=true, - org.eclipse.emf.cdo.internal.common.messages;version="4.3.100";x-internal:=true, - org.eclipse.emf.cdo.internal.common.model;version="4.3.100"; + org.eclipse.emf.cdo.internal.common.lock;version="4.4.0";x-internal:=true, + org.eclipse.emf.cdo.internal.common.messages;version="4.4.0";x-internal:=true, + org.eclipse.emf.cdo.internal.common.model;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.common, org.eclipse.emf.cdo.common.db, org.eclipse.emf.cdo, @@ -73,7 +73,7 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", org.eclipse.emf.cdo.server.net4j, org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.tests", - org.eclipse.emf.cdo.internal.common.revision;version="4.3.100"; + org.eclipse.emf.cdo.internal.common.revision;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.common, org.eclipse.emf.cdo.common.db, org.eclipse.emf.cdo, @@ -82,7 +82,7 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", org.eclipse.emf.cdo.server.net4j, org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.tests", - org.eclipse.emf.cdo.internal.common.revision.delta;version="4.3.100"; + org.eclipse.emf.cdo.internal.common.revision.delta;version="4.4.0"; x-friends:="org.eclipse.emf.cdo.common, org.eclipse.emf.cdo.common.db, org.eclipse.emf.cdo, @@ -91,12 +91,12 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.3.100", org.eclipse.emf.cdo.server.net4j, org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.tests", - org.eclipse.emf.cdo.spi.common;version="4.3.100", - org.eclipse.emf.cdo.spi.common.admin;version="4.3.100", - org.eclipse.emf.cdo.spi.common.branch;version="4.3.100", - org.eclipse.emf.cdo.spi.common.commit;version="4.3.100", - org.eclipse.emf.cdo.spi.common.id;version="4.3.100", - org.eclipse.emf.cdo.spi.common.lock;version="4.3.100", - org.eclipse.emf.cdo.spi.common.model;version="4.3.100", - org.eclipse.emf.cdo.spi.common.protocol;version="4.3.100", - org.eclipse.emf.cdo.spi.common.revision;version="4.3.100" + org.eclipse.emf.cdo.spi.common;version="4.4.0", + org.eclipse.emf.cdo.spi.common.admin;version="4.4.0", + org.eclipse.emf.cdo.spi.common.branch;version="4.4.0", + org.eclipse.emf.cdo.spi.common.commit;version="4.4.0", + org.eclipse.emf.cdo.spi.common.id;version="4.4.0", + org.eclipse.emf.cdo.spi.common.lock;version="4.4.0", + org.eclipse.emf.cdo.spi.common.model;version="4.4.0", + org.eclipse.emf.cdo.spi.common.protocol;version="4.4.0", + org.eclipse.emf.cdo.spi.common.revision;version="4.4.0" diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionManager.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionManager.java index 6c8fe226ae..b87b81e235 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionManager.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionManager.java @@ -18,6 +18,8 @@ import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.branch.CDOBranchVersion; import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.net4j.util.event.INotifier; + import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; @@ -51,7 +53,7 @@ import java.util.List; * @apiviz.has {@link CDORevisionCache} * @apiviz.uses {@link CDORevision} - - loads */ -public interface CDORevisionManager +public interface CDORevisionManager extends INotifier { /** * Returns the {@link CDORevision#getEClass() type} of an object if a revision for that object is in the revision diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionsLoadedEvent.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionsLoadedEvent.java new file mode 100644 index 0000000000..a0a83b63e9 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionsLoadedEvent.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2004-2014 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Esteban Dugueperoux - initial API and implementation + */ +package org.eclipse.emf.cdo.common.revision; + +import org.eclipse.net4j.util.event.IEvent; + +import java.util.List; + +/** + * An {@link IEvent event} fired from a {@link CDORevisionManager revision manager} when a new {@link CDORevision revision} has + * been loaded. + * + * @author Esteban Dugueperoux + * @since 4.4 + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + */ +public interface CDORevisionsLoadedEvent extends IEvent +{ + public CDORevisionManager getSource(); + + public List<? extends CDORevision> getPrimaryLoadedRevisions(); + + public List<? extends CDORevision> getAdditionalLoadedRevisions(); +} diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java index c4be7fc240..5e7007a3b5 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java @@ -21,7 +21,9 @@ import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.common.revision.CDORevisionCache; import org.eclipse.emf.cdo.common.revision.CDORevisionFactory; import org.eclipse.emf.cdo.common.revision.CDORevisionHandler; +import org.eclipse.emf.cdo.common.revision.CDORevisionManager; import org.eclipse.emf.cdo.common.revision.CDORevisionUtil; +import org.eclipse.emf.cdo.common.revision.CDORevisionsLoadedEvent; import org.eclipse.emf.cdo.internal.common.bundle.OM; import org.eclipse.emf.cdo.spi.common.branch.CDOBranchUtil; import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision; @@ -33,6 +35,7 @@ import org.eclipse.emf.cdo.spi.common.revision.RevisionInfo; import org.eclipse.emf.cdo.spi.common.revision.SyntheticCDORevision; import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump; +import org.eclipse.net4j.util.event.Event; import org.eclipse.net4j.util.lifecycle.Lifecycle; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.net4j.util.om.trace.ContextTracer; @@ -290,7 +293,27 @@ public class CDORevisionManagerImpl extends Lifecycle implements InternalCDORevi List<RevisionInfo> infosToLoad = createRevisionInfos(ids, branchPoint, prefetchDepth, loadOnDemand, infos); if (infosToLoad != null) { - loadRevisions(infosToLoad, branchPoint, referenceChunk, prefetchDepth); + List<? extends CDORevision> additionalLoadedRevisions // + = loadRevisions(infosToLoad, branchPoint, referenceChunk, prefetchDepth); + + List<? extends CDORevision> primaryLoadedRevisions // + = getResultsAndSynthetics(infosToLoad.toArray(new RevisionInfo[infosToLoad.size()]), null); + + if (primaryLoadedRevisions != null && !primaryLoadedRevisions.isEmpty() || additionalLoadedRevisions != null + && !additionalLoadedRevisions.isEmpty()) + { + if (primaryLoadedRevisions == null) + { + primaryLoadedRevisions = Collections.emptyList(); + } + + if (additionalLoadedRevisions == null) + { + additionalLoadedRevisions = Collections.emptyList(); + } + + fireEvent(new RevisionsLoadedEvent(this, primaryLoadedRevisions, additionalLoadedRevisions)); + } } return getResultsAndSynthetics(infos, synthetics); @@ -554,4 +577,41 @@ public class CDORevisionManagerImpl extends Lifecycle implements InternalCDORevi // Reached main branch return null; } + + /** + * @author Esteban Dugueperoux + */ + private static class RevisionsLoadedEvent extends Event implements CDORevisionsLoadedEvent + { + private static final long serialVersionUID = 1L; + + private List<? extends CDORevision> primaryLoadedRevisions; + + private List<? extends CDORevision> additionalLoadedRevisions; + + public RevisionsLoadedEvent(CDORevisionManager revisionManager, List<? extends CDORevision> primaryLoadedRevisions, + List<? extends CDORevision> additionalLoadedRevisions) + { + super(revisionManager); + this.primaryLoadedRevisions = primaryLoadedRevisions; + this.additionalLoadedRevisions = additionalLoadedRevisions; + } + + @Override + public CDORevisionManager getSource() + { + return (CDORevisionManager)super.getSource(); + } + + public List<? extends CDORevision> getPrimaryLoadedRevisions() + { + return primaryLoadedRevisions; + } + + public List<? extends CDORevision> getAdditionalLoadedRevisions() + { + return additionalLoadedRevisions; + } + } + } |