Revert "[$387563] $Generalize the "lock of new objects on commit" feature to the "lock/unlock objects on commit" "
This reverts commit 6dc966a83269a207a5538850648ea23697c682bc.
diff --git a/features/org.eclipse.emf.cdo-feature/feature.xml b/features/org.eclipse.emf.cdo-feature/feature.xml
index 9799634..03d6062 100644
--- a/features/org.eclipse.emf.cdo-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo-feature/feature.xml
@@ -13,7 +13,7 @@
<feature
id="org.eclipse.emf.cdo"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.emf.cdo.defs-feature/feature.xml b/features/org.eclipse.emf.cdo.defs-feature/feature.xml
index 2b8f3a2..2d0a3ee 100644
--- a/features/org.eclipse.emf.cdo.defs-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.defs-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.defs"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.emf.cdo.epp-feature/feature.xml b/features/org.eclipse.emf.cdo.epp-feature/feature.xml
index 709e38f..32f3677 100644
--- a/features/org.eclipse.emf.cdo.epp-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.epp-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.epp"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.emf.cdo.explorer-feature/feature.xml b/features/org.eclipse.emf.cdo.explorer-feature/feature.xml
index 4b0a638..8482d22 100644
--- a/features/org.eclipse.emf.cdo.explorer-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.explorer-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.explorer"
label="%featureName"
- version="4.5.0.qualifier"
+ version="4.4.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg">
diff --git a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml
index 7177707..37de3f7 100644
--- a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.sdk"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.emf.cdo.server-feature/feature.xml b/features/org.eclipse.emf.cdo.server-feature/feature.xml
index afc8747..579b725 100644
--- a/features/org.eclipse.emf.cdo.server-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.server-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.server"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.emf.cdo.server.hibernate-feature/feature.xml b/features/org.eclipse.emf.cdo.server.hibernate-feature/feature.xml
index 9a8ece9..1e15b7a 100644
--- a/features/org.eclipse.emf.cdo.server.hibernate-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.server.hibernate-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.server.hibernate"
label="%featureName"
- version="4.2.400.qualifier"
+ version="4.2.300.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.emf.cdo.tests-feature/feature.xml b/features/org.eclipse.emf.cdo.tests-feature/feature.xml
index c7288c7..ff9e97c 100644
--- a/features/org.eclipse.emf.cdo.tests-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.tests-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.tests"
label="%featureName"
- version="4.2.400.qualifier"
+ version="4.2.300.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.net4j-feature/feature.xml b/features/org.eclipse.net4j-feature/feature.xml
index 0891d32..7c97421 100644
--- a/features/org.eclipse.net4j-feature/feature.xml
+++ b/features/org.eclipse.net4j-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j.db-feature/feature.xml b/features/org.eclipse.net4j.db-feature/feature.xml
index 15fe440..c65973c 100644
--- a/features/org.eclipse.net4j.db-feature/feature.xml
+++ b/features/org.eclipse.net4j.db-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.db"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.net4j.defs-feature/feature.xml b/features/org.eclipse.net4j.defs-feature/feature.xml
index b907cce..c08b74a 100644
--- a/features/org.eclipse.net4j.defs-feature/feature.xml
+++ b/features/org.eclipse.net4j.defs-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.defs"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/features/org.eclipse.net4j.sdk-feature/feature.xml b/features/org.eclipse.net4j.sdk-feature/feature.xml
index 4ead21b..e538401 100644
--- a/features/org.eclipse.net4j.sdk-feature/feature.xml
+++ b/features/org.eclipse.net4j.sdk-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.sdk"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j.util-feature/feature.xml b/features/org.eclipse.net4j.util-feature/feature.xml
index 090cf7b..db78136 100644
--- a/features/org.eclipse.net4j.util-feature/feature.xml
+++ b/features/org.eclipse.net4j.util-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.util"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
diff --git a/features/org.eclipse.net4j.util.ui-feature/feature.xml b/features/org.eclipse.net4j.util.ui-feature/feature.xml
index 897cc10..2e65446 100644
--- a/features/org.eclipse.net4j.util.ui-feature/feature.xml
+++ b/features/org.eclipse.net4j.util.ui-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.net4j.util.ui"
label="%featureName"
- version="4.6.0.qualifier"
+ version="4.5.0.qualifier"
provider-name="%providerName"
image="eclipse_update_120.jpg"
license-feature="org.eclipse.emf.cdo.license"
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 05e58ab..f9852b9 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.6.0.qualifier
+Bundle-Version: 4.5.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -14,21 +14,21 @@
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.6.0",
- org.eclipse.emf.cdo.common.admin;version="4.6.0",
- org.eclipse.emf.cdo.common.branch;version="4.6.0",
- org.eclipse.emf.cdo.common.commit;version="4.6.0",
- org.eclipse.emf.cdo.common.commit.handler;version="4.6.0",
- org.eclipse.emf.cdo.common.id;version="4.6.0",
- org.eclipse.emf.cdo.common.lob;version="4.6.0",
- org.eclipse.emf.cdo.common.lock;version="4.6.0",
- org.eclipse.emf.cdo.common.model;version="4.6.0",
- org.eclipse.emf.cdo.common.protocol;version="4.6.0",
- org.eclipse.emf.cdo.common.revision;version="4.6.0",
- org.eclipse.emf.cdo.common.revision.delta;version="4.6.0",
- org.eclipse.emf.cdo.common.security;version="4.6.0",
- org.eclipse.emf.cdo.common.util;version="4.6.0",
- org.eclipse.emf.cdo.internal.common;version="4.6.0";
+Export-Package: org.eclipse.emf.cdo.common;version="4.5.0",
+ org.eclipse.emf.cdo.common.admin;version="4.5.0",
+ org.eclipse.emf.cdo.common.branch;version="4.5.0",
+ org.eclipse.emf.cdo.common.commit;version="4.5.0",
+ org.eclipse.emf.cdo.common.commit.handler;version="4.5.0",
+ org.eclipse.emf.cdo.common.id;version="4.5.0",
+ org.eclipse.emf.cdo.common.lob;version="4.5.0",
+ org.eclipse.emf.cdo.common.lock;version="4.5.0",
+ org.eclipse.emf.cdo.common.model;version="4.5.0",
+ org.eclipse.emf.cdo.common.protocol;version="4.5.0",
+ org.eclipse.emf.cdo.common.revision;version="4.5.0",
+ org.eclipse.emf.cdo.common.revision.delta;version="4.5.0",
+ org.eclipse.emf.cdo.common.security;version="4.5.0",
+ org.eclipse.emf.cdo.common.util;version="4.5.0",
+ org.eclipse.emf.cdo.internal.common;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.common,
org.eclipse.emf.cdo.common.db,
org.eclipse.emf.cdo,
@@ -38,11 +38,11 @@
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.6.0";
+ org.eclipse.emf.cdo.internal.common.branch;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.server.hibernate",
- org.eclipse.emf.cdo.internal.common.bundle;version="4.6.0";x-internal:=true,
- org.eclipse.emf.cdo.internal.common.commit;version="4.6.0";
+ org.eclipse.emf.cdo.internal.common.bundle;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.common.commit;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.common,
org.eclipse.emf.cdo.common.db,
org.eclipse.emf.cdo,
@@ -51,7 +51,7 @@
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.6.0";
+ org.eclipse.emf.cdo.internal.common.id;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.common,
org.eclipse.emf.cdo.common.db,
org.eclipse.emf.cdo,
@@ -62,9 +62,9 @@
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.6.0";x-internal:=true,
- org.eclipse.emf.cdo.internal.common.messages;version="4.6.0";x-internal:=true,
- org.eclipse.emf.cdo.internal.common.model;version="4.6.0";
+ org.eclipse.emf.cdo.internal.common.lock;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.common.messages;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.common.model;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.common,
org.eclipse.emf.cdo.common.db,
org.eclipse.emf.cdo,
@@ -73,7 +73,7 @@
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.6.0";
+ org.eclipse.emf.cdo.internal.common.revision;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.common,
org.eclipse.emf.cdo.common.db,
org.eclipse.emf.cdo,
@@ -82,7 +82,7 @@
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.6.0";
+ org.eclipse.emf.cdo.internal.common.revision.delta;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.common,
org.eclipse.emf.cdo.common.db,
org.eclipse.emf.cdo,
@@ -91,12 +91,12 @@
org.eclipse.emf.cdo.server.net4j,
org.eclipse.emf.cdo.ui,
org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.spi.common;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.admin;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.branch;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.commit;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.id;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.lock;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.model;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.protocol;version="4.6.0",
- org.eclipse.emf.cdo.spi.common.revision;version="4.6.0"
+ org.eclipse.emf.cdo.spi.common;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.admin;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.branch;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.commit;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.id;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.lock;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.model;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.protocol;version="4.5.0",
+ org.eclipse.emf.cdo.spi.common.revision;version="4.5.0"
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/lock/InternalCDOLockState.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/lock/InternalCDOLockState.java
index cb0dac0..4d5b8bd 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/lock/InternalCDOLockState.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/lock/InternalCDOLockState.java
@@ -10,10 +10,8 @@
*/
package org.eclipse.emf.cdo.spi.common.lock;
-import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.lock.CDOLockOwner;
import org.eclipse.emf.cdo.common.lock.CDOLockState;
-import org.eclipse.emf.cdo.internal.common.lock.CDOLockStateImpl;
/**
* If the meaning of this type isn't clear, there really should be more of a description here...
@@ -25,11 +23,6 @@
*/
public interface InternalCDOLockState extends CDOLockState
{
- /**
- * @since 4.6
- */
- public static final CDOLockState UNLOCKED = new CDOLockStateImpl(CDOID.NULL);
-
public void addReadLockOwner(CDOLockOwner lockOwner);
public boolean removeReadLockOwner(CDOLockOwner lockOwner);
diff --git a/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF
index 6d13a12..32eca96 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.cdo.net4j; singleton:=true
-Bundle-Version: 4.1.500.qualifier
+Bundle-Version: 4.1.400.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,17 +10,17 @@
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo.internal.net4j;version="4.1.500";
+Export-Package: org.eclipse.emf.cdo.internal.net4j;version="4.1.400";
x-friends:="org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui,
org.eclipse.emf.cdo.examples",
- org.eclipse.emf.cdo.internal.net4j.bundle;version="4.1.500";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.internal.net4j.messages;version="4.1.500";x-internal:=true,
- org.eclipse.emf.cdo.internal.net4j.protocol;version="4.1.500";
+ org.eclipse.emf.cdo.internal.net4j.bundle;version="4.1.400";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.internal.net4j.messages;version="4.1.400";x-internal:=true,
+ org.eclipse.emf.cdo.internal.net4j.protocol;version="4.1.400";
x-friends:="org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui,
org.eclipse.emf.cdo.examples",
- org.eclipse.emf.cdo.net4j;version="4.1.500"
+ org.eclipse.emf.cdo.net4j;version="4.1.400"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
index 3f84e0d..acf0b46 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
@@ -69,24 +69,26 @@
private static long sleepMillisForTesting = 0L;
- private final int commitNumber;
+ private CDOIDProvider idProvider; // CDOTransaction
- private final String commitComment;
+ private int commitNumber;
- private final CDOCommitData commitData;
+ private String commitComment;
- private final Collection<CDOLob<?>> lobs;
+ private boolean releaseLocks;
- private final Collection<CDOLockState> locksOnNewObjects;
+ private CDOCommitData commitData;
- private final Collection<CDOID> idsToUnlock;
+ private Collection<CDOLob<?>> lobs;
- private final int viewID;
+ private Collection<CDOLockState> locksOnNewObjects;
+
+ private int viewID;
/**
* Is <code>null</code> in {@link CommitDelegationRequest}.
*/
- private final InternalCDOTransaction transaction;
+ private InternalCDOTransaction transaction;
private boolean clearResourcePathCache;
@@ -98,23 +100,20 @@
public CommitTransactionRequest(CDOClientProtocol protocol, short signalID, InternalCDOCommitContext context)
{
super(protocol, signalID);
- transaction = context.getTransaction();
+ transaction = context.getTransaction();
CommitToken commitToken = transaction.getCommitToken();
if (commitToken != null)
{
commitNumber = commitToken.getCommitNumber();
}
- else
- {
- commitNumber = 0;
- }
commitComment = context.getCommitComment();
+ releaseLocks = context.isAutoReleaseLocks();
+ idProvider = context.getTransaction();
commitData = context.getCommitData();
lobs = context.getLobs();
locksOnNewObjects = context.getLocksOnNewObjects();
- idsToUnlock = context.getIDsToUnlock();
viewID = context.getViewID();
}
@@ -128,7 +127,7 @@
@Override
protected CDOIDProvider getIDProvider()
{
- return transaction;
+ return idProvider;
}
@Override
@@ -151,37 +150,17 @@
List<CDOIDAndVersion> detachedObjects = commitData.getDetachedObjects();
out.writeLong(getLastUpdateTime());
+ out.writeBoolean(releaseLocks);
out.writeInt(commitNumber);
out.writeString(commitComment);
- out.writeInt(locksOnNewObjects.size());
- out.writeInt(idsToUnlock.size());
out.writeInt(newPackageUnits.size());
+ out.writeInt(locksOnNewObjects.size());
out.writeInt(newObjects.size());
out.writeInt(changedObjects.size());
out.writeInt(detachedObjects.size());
if (TRACER.isEnabled())
{
- TRACER.format("Writing {0} locks on new objects", locksOnNewObjects.size()); //$NON-NLS-1$
- }
-
- for (CDOLockState lockState : locksOnNewObjects)
- {
- out.writeCDOLockState(lockState);
- }
-
- if (TRACER.isEnabled())
- {
- TRACER.format("Writing {0} unlocks on changed objects", idsToUnlock.size()); //$NON-NLS-1$
- }
-
- for (CDOID id : idsToUnlock)
- {
- out.writeCDOID(id);
- }
-
- if (TRACER.isEnabled())
- {
TRACER.format("Writing {0} new package units", newPackageUnits.size()); //$NON-NLS-1$
}
@@ -192,6 +171,16 @@
if (TRACER.isEnabled())
{
+ TRACER.format("Writing {0} locks on new objects", locksOnNewObjects.size()); //$NON-NLS-1$
+ }
+
+ for (CDOLockState lockState : locksOnNewObjects)
+ {
+ out.writeCDOLockState(lockState);
+ }
+
+ if (TRACER.isEnabled())
+ {
TRACER.format("Writing {0} new objects", newObjects.size()); //$NON-NLS-1$
}
@@ -330,7 +319,7 @@
}
CommitTransactionResult result = new CommitTransactionResult();
- result.setIDProvider(transaction);
+ result.setIDProvider(idProvider);
result.setClearResourcePathCache(clearResourcePathCache);
result.setRollbackReason(in.readByte());
result.setRollbackMessage(in.readString());
@@ -356,7 +345,7 @@
protected CommitTransactionResult confirmingResult(CDODataInput in) throws IOException
{
CommitTransactionResult result = new CommitTransactionResult();
- result.setIDProvider(transaction);
+ result.setIDProvider(idProvider);
result.setClearResourcePathCache(clearResourcePathCache);
result.setBranchPoint(in.readCDOBranchPoint());
result.setPreviousTimeStamp(in.readLong());
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF
index be3924e..bdab554 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.server.hibernate;singleton:=true
-Bundle-Version: 4.2.400.qualifier
+Bundle-Version: 4.2.300.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -14,11 +14,11 @@
org.eclipse.emf.cdo.common;bundle-version="[4.0.0,5.0.0)",
org.eclipse.emf.cdo.server;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
org.eclipse.net4j.db;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo.server.hibernate;version="4.2.400",
- org.eclipse.emf.cdo.server.internal.hibernate;version="4.2.400";x-friends:="org.eclipse.emf.cdo.server.hibernate.teneo,org.eclipse.emf.cdo.tests.hibernate",
- org.eclipse.emf.cdo.server.internal.hibernate.bundle;version="4.2.400";x-internal:=true,
- org.eclipse.emf.cdo.server.internal.hibernate.info;version="4.2.400";x-friends:="org.eclipse.emf.cdo.server.hibernate.teneo,org.eclipse.emf.cdo.tests.hibernate",
- org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;version="4.2.400";x-friends:="org.eclipse.emf.cdo.server.hibernate.teneo,org.eclipse.emf.cdo.tests.hibernate"
+Export-Package: org.eclipse.emf.cdo.server.hibernate;version="4.2.300",
+ org.eclipse.emf.cdo.server.internal.hibernate;version="4.2.300";x-friends:="org.eclipse.emf.cdo.server.hibernate.teneo,org.eclipse.emf.cdo.tests.hibernate",
+ org.eclipse.emf.cdo.server.internal.hibernate.bundle;version="4.2.300";x-internal:=true,
+ org.eclipse.emf.cdo.server.internal.hibernate.info;version="4.2.300";x-friends:="org.eclipse.emf.cdo.server.hibernate.teneo,org.eclipse.emf.cdo.tests.hibernate",
+ org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;version="4.2.300";x-friends:="org.eclipse.emf.cdo.server.hibernate.teneo,org.eclipse.emf.cdo.tests.hibernate"
Import-Package: org.apache.log4j;version="[1.2.0,2.0.0)",
org.eclipse.emf.teneo;version="[2.0.1,3.0.0)",
org.eclipse.emf.teneo.annotations.mapper;version="[2.0.1,3.0.0)",
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateRawCommitContext.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateRawCommitContext.java
index 6692fb2..ee8b86b 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateRawCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateRawCommitContext.java
@@ -125,7 +125,6 @@
{
}
- @Deprecated
public boolean isAutoReleaseLocksEnabled()
{
return false;
@@ -161,11 +160,6 @@
return null;
}
- public CDOID[] getIDsToUnlock()
- {
- return null;
- }
-
public InternalCDORevision[] getNewObjects()
{
return newObjects.toArray(new InternalCDORevision[0]);
@@ -309,10 +303,6 @@
{
}
- public void setIDsToUnlock(CDOID[] idsToUnlock)
- {
- }
-
public void setNewObjects(InternalCDORevision[] newObjects)
{
}
@@ -337,7 +327,6 @@
{
}
- @Deprecated
public void setAutoReleaseLocksEnabled(boolean on)
{
}
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF
index 9254099..048d55a 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.server.net4j;singleton:=true
-Bundle-Version: 4.1.400.qualifier
+Bundle-Version: 4.1.300.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,6 +12,6 @@
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
org.eclipse.emf.cdo.server;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo.server.internal.net4j.bundle;version="4.1.400";x-internal:=true,
- org.eclipse.emf.cdo.server.internal.net4j.protocol;version="4.1.400";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.server.net4j;version="4.1.400"
+Export-Package: org.eclipse.emf.cdo.server.internal.net4j.bundle;version="4.1.300";x-internal:=true,
+ org.eclipse.emf.cdo.server.internal.net4j.protocol;version="4.1.300";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.server.net4j;version="4.1.300"
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java
index facc99b..0b38c44 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java
@@ -126,44 +126,19 @@
commitContext.preWrite();
long lastUpdateTime = in.readLong();
+ boolean autoReleaseLocksEnabled = in.readBoolean();
int commitNumber = in.readInt();
String commitComment = in.readString();
- CDOLockState[] locksOnNewObjects = new CDOLockState[in.readInt()];
- CDOID[] idsToUnlock = new CDOID[in.readInt()];
InternalCDOPackageUnit[] newPackageUnits = new InternalCDOPackageUnit[in.readInt()];
+ CDOLockState[] locksOnNewObjects = new CDOLockState[in.readInt()];
InternalCDORevision[] newObjects = new InternalCDORevision[in.readInt()];
InternalCDORevisionDelta[] dirtyObjectDeltas = new InternalCDORevisionDelta[in.readInt()];
CDOID[] detachedObjects = new CDOID[in.readInt()];
- monitor.begin(locksOnNewObjects.length + idsToUnlock.length + newPackageUnits.length + newObjects.length
- + dirtyObjectDeltas.length + detachedObjects.length);
+ monitor.begin(newPackageUnits.length + newObjects.length + dirtyObjectDeltas.length + detachedObjects.length);
try
{
- // Locks on new objects
- if (TRACER.isEnabled())
- {
- TRACER.format("Reading {0} locks on new objects", locksOnNewObjects.length); //$NON-NLS-1$
- }
-
- for (int i = 0; i < locksOnNewObjects.length; i++)
- {
- locksOnNewObjects[i] = in.readCDOLockState();
- monitor.worked();
- }
-
- // Unlocks on changed objects
- if (TRACER.isEnabled())
- {
- TRACER.format("Reading {0} IDs to unlock", idsToUnlock.length); //$NON-NLS-1$
- }
-
- for (int i = 0; i < idsToUnlock.length; i++)
- {
- idsToUnlock[i] = in.readCDOID();
- monitor.worked();
- }
-
// New package units
if (TRACER.isEnabled())
{
@@ -186,6 +161,18 @@
EMFUtil.safeResolveAll(resourceSet);
}
+ // Locks on new objects
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Reading {0} locks on new objects", locksOnNewObjects.length); //$NON-NLS-1$
+ }
+
+ for (int i = 0; i < locksOnNewObjects.length; i++)
+ {
+ locksOnNewObjects[i] = in.readCDOLockState();
+ monitor.worked();
+ }
+
// New objects
if (TRACER.isEnabled())
{
@@ -287,6 +274,7 @@
commitContext.setCommitNumber(commitNumber);
commitContext.setLastUpdateTime(lastUpdateTime);
+ commitContext.setAutoReleaseLocksEnabled(autoReleaseLocksEnabled);
commitContext.setClearResourcePathCache(clearResourcePathCache);
commitContext.setUsingEcore(usingEcore);
commitContext.setUsingEtypes(usingEtypes);
@@ -299,8 +287,6 @@
commitContext.setDetachedObjectVersions(detachedObjectVersions);
commitContext.setCommitComment(commitComment);
commitContext.setLobs(getIndicationStream());
- commitContext.setLocksOnNewObjects(locksOnNewObjects);
- commitContext.setIDsToUnlock(idsToUnlock);
}
finally
{
diff --git a/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF
index 3e0cb2e..8a287f1 100644
--- a/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.server/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.server;singleton:=true
-Bundle-Version: 4.6.0.qualifier
+Bundle-Version: 4.5.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,18 +10,18 @@
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ClassPath: .
Require-Bundle: org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo.internal.server;version="4.6.0";
+Export-Package: org.eclipse.emf.cdo.internal.server;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.server.db,
org.eclipse.emf.cdo.server.net4j,
org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.workspace,
org.eclipse.emf.cdo.server.hibernate",
- org.eclipse.emf.cdo.internal.server.bundle;version="4.6.0";x-internal:=true,
- org.eclipse.emf.cdo.internal.server.embedded;version="4.6.0";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.internal.server.mem;version="4.6.0";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.internal.server.messages;version="4.6.0";x-internal:=true,
- org.eclipse.emf.cdo.internal.server.syncing;version="4.6.0";x-friends:="org.eclipse.emf.cdo.tests",
- org.eclipse.emf.cdo.server;version="4.6.0",
- org.eclipse.emf.cdo.server.embedded;version="4.6.0",
- org.eclipse.emf.cdo.server.mem;version="4.6.0",
- org.eclipse.emf.cdo.spi.server;version="4.6.0"
+ org.eclipse.emf.cdo.internal.server.bundle;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.server.embedded;version="4.5.0";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.internal.server.mem;version="4.5.0";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.internal.server.messages;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.server.syncing;version="4.5.0";x-friends:="org.eclipse.emf.cdo.tests",
+ org.eclipse.emf.cdo.server;version="4.5.0",
+ org.eclipse.emf.cdo.server.embedded;version="4.5.0",
+ org.eclipse.emf.cdo.server.mem;version="4.5.0",
+ org.eclipse.emf.cdo.spi.server;version="4.5.0"
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingCommitContext.java
index bf696c8..a6872ff 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingCommitContext.java
@@ -61,6 +61,11 @@
return getDelegate().getCommitComment();
}
+ public boolean isAutoReleaseLocksEnabled()
+ {
+ return getDelegate().isAutoReleaseLocksEnabled();
+ }
+
public InternalCDOPackageRegistry getPackageRegistry()
{
return getDelegate().getPackageRegistry();
@@ -131,22 +136,11 @@
return getDelegate().isUsingEtypes();
}
- @Deprecated
- public boolean isAutoReleaseLocksEnabled()
- {
- return getDelegate().isAutoReleaseLocksEnabled();
- }
-
public CDOLockState[] getLocksOnNewObjects()
{
return getDelegate().getLocksOnNewObjects();
}
- public CDOID[] getIDsToUnlock()
- {
- return getDelegate().getIDsToUnlock();
- }
-
public CDOBranchVersion[] getDetachedObjectVersions()
{
return getDelegate().getDetachedObjectVersions();
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java
index b20e5a3..5163a45 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java
@@ -78,7 +78,6 @@
import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.collection.IndexedList;
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
-import org.eclipse.net4j.util.concurrent.RWOLockManager;
import org.eclipse.net4j.util.concurrent.RWOLockManager.LockState;
import org.eclipse.net4j.util.io.ExtendedDataInputStream;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
@@ -93,6 +92,7 @@
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -147,6 +147,8 @@
private InternalCDOPackageUnit[] newPackageUnits = new InternalCDOPackageUnit[0];
+ private CDOLockState[] locksOnNewObjects = new CDOLockState[0];
+
private InternalCDORevision[] newObjects = new InternalCDORevision[0];
private InternalCDORevisionDelta[] dirtyObjectDeltas = new InternalCDORevisionDelta[0];
@@ -177,7 +179,7 @@
private List<CDOIDReference> xRefs;
- private final List<LockState<Object, IView>> postCommitLockStates = new ArrayList<LockState<Object, IView>>();
+ private List<LockState<Object, IView>> postCommitLockStates;
private boolean hasChanges;
@@ -185,12 +187,10 @@
private boolean ensuringReferentialIntegrity;
+ private boolean autoReleaseLocksEnabled;
+
private ExtendedDataInputStream lobs;
- private CDOLockState[] locksOnNewObjects = new CDOLockState[0];
-
- private CDOID[] idsToUnlock = new CDOID[0];
-
private Map<Object, Object> data;
private CommitNotificationInfo commitNotificationInfo = new CommitNotificationInfo();
@@ -238,6 +238,11 @@
return lastUpdateTime;
}
+ public boolean isAutoReleaseLocksEnabled()
+ {
+ return autoReleaseLocksEnabled;
+ }
+
public byte getRollbackReason()
{
return rollbackReason;
@@ -289,6 +294,11 @@
return newPackageUnits;
}
+ public CDOLockState[] getLocksOnNewObjects()
+ {
+ return locksOnNewObjects;
+ }
+
public InternalCDORevision[] getNewObjects()
{
return newObjects;
@@ -516,6 +526,11 @@
this.newPackageUnits = newPackageUnits;
}
+ public void setLocksOnNewObjects(CDOLockState[] locksOnNewObjects)
+ {
+ this.locksOnNewObjects = locksOnNewObjects;
+ }
+
public void setNewObjects(InternalCDORevision[] newObjects)
{
this.newObjects = newObjects;
@@ -546,6 +561,11 @@
this.lastUpdateTime = lastUpdateTime;
}
+ public void setAutoReleaseLocksEnabled(boolean on)
+ {
+ autoReleaseLocksEnabled = on;
+ }
+
public void setCommitNumber(int commitNumber)
{
this.commitNumber = commitNumber;
@@ -566,38 +586,6 @@
lobs = in;
}
- @Deprecated
- public boolean isAutoReleaseLocksEnabled()
- {
- return false;
- }
-
- @Deprecated
- public void setAutoReleaseLocksEnabled(boolean on)
- {
- // Do nothing.
- }
-
- public CDOLockState[] getLocksOnNewObjects()
- {
- return locksOnNewObjects;
- }
-
- public void setLocksOnNewObjects(CDOLockState[] locksOnNewObjects)
- {
- this.locksOnNewObjects = locksOnNewObjects;
- }
-
- public CDOID[] getIDsToUnlock()
- {
- return idsToUnlock;
- }
-
- public void setIDsToUnlock(CDOID[] idsToUnlock)
- {
- this.idsToUnlock = idsToUnlock;
- }
-
public <T> T getData(Object key)
{
if (data == null)
@@ -1119,6 +1107,50 @@
}
}
+ protected synchronized void unlockObjects()
+ {
+ // Unlock objects locked during commit
+ if (!lockedObjects.isEmpty())
+ {
+ lockManager.unlock2(LockType.WRITE, transaction, lockedObjects);
+ lockedObjects.clear();
+ }
+
+ // Release durable locks that have been acquired on detached objects
+ if (detachedObjects.length > 0)
+ {
+ boolean branching = repository.isSupportingBranches();
+ Collection<? extends Object> unlockables;
+ if (branching)
+ {
+ List<CDOIDAndBranch> keys = new ArrayList<CDOIDAndBranch>(detachedObjects.length);
+ for (CDOID id : detachedObjects)
+ {
+ CDOIDAndBranch idAndBranch = CDOIDUtil.createIDAndBranch(id, branch);
+ keys.add(idAndBranch);
+ }
+
+ unlockables = keys;
+ }
+ else
+ {
+ unlockables = Arrays.asList(detachedObjects);
+ }
+
+ // We only need to consider detached objects that have been explicitly locked
+ Collection<Object> detachedObjectsToUnlock = new ArrayList<Object>();
+ for (Object unlockable : unlockables)
+ {
+ if (lockManager.hasLock(LockType.WRITE, transaction, unlockable))
+ {
+ detachedObjectsToUnlock.add(unlockable);
+ }
+ }
+
+ lockManager.unlock2(true, LockType.WRITE, transaction, detachedObjectsToUnlock, false);
+ }
+ }
+
protected void computeDirtyObjects(OMMonitor monitor)
{
try
@@ -1323,7 +1355,7 @@
}
}
- releaseImplicitLocks();
+ unlockObjects();
}
}
@@ -1342,22 +1374,24 @@
addRevisions(dirtyObjects, monitor.fork());
reviseDetachedObjects(monitor.fork());
- releaseImplicitLocks();
+ unlockObjects();
monitor.worked();
- acquireLocksOnNewObjects();
+ applyLocksOnNewObjects();
monitor.worked();
- autoReleaseExplicitLocks();
- monitor.worked();
-
- if (!postCommitLockStates.isEmpty())
+ if (autoReleaseLocksEnabled)
{
- // TODO (CD) Does doing this here make sense?
- // The commit notifications get sent later, from postCommit.
- sendLockNotifications(postCommitLockStates);
+ postCommitLockStates = lockManager.unlock2(true, transaction);
+ if (!postCommitLockStates.isEmpty())
+ {
+ // TODO (CD) Does doing this here make sense?
+ // The commit notifications get sent later, from postCommit.
+ sendLockNotifications(postCommitLockStates);
+ }
}
+ monitor.worked();
repository.notifyWriteAccessHandlers(transaction, this, false, monitor.fork());
}
catch (Throwable t)
@@ -1370,26 +1404,15 @@
}
}
- protected synchronized void releaseImplicitLocks()
- {
- // Unlock objects locked during commit
- if (!lockedObjects.isEmpty())
- {
- lockManager.unlock2(LockType.WRITE, transaction, lockedObjects);
- lockedObjects.clear();
- }
- }
-
- protected void acquireLocksOnNewObjects() throws InterruptedException
+ protected void applyLocksOnNewObjects() throws InterruptedException
{
final CDOLockOwner owner = CDOLockUtil.createLockOwner(transaction);
- final boolean mapIDs = transaction.getRepository().getIDGenerationLocation() == IDGenerationLocation.STORE;
for (CDOLockState lockState : locksOnNewObjects)
{
Object target = lockState.getLockedObject();
- if (mapIDs)
+ if (transaction.getRepository().getIDGenerationLocation() == IDGenerationLocation.STORE)
{
CDOIDAndBranch idAndBranch = target instanceof CDOIDAndBranch ? (CDOIDAndBranch)target : null;
CDOID id = idAndBranch != null ? ((CDOIDAndBranch)target).getID() : (CDOID)target;
@@ -1399,60 +1422,13 @@
target = idAndBranch != null ? CDOIDUtil.createIDAndBranch(newID, idAndBranch.getBranch()) : newID;
}
- LockState<Object, IView> postCommitLockState = null;
for (LockType type : LockType.values())
{
if (lockState.isLocked(type, owner, false))
{
- List<LockState<Object, IView>> lockStates = lockManager.lock2(type, transaction,
- Collections.singleton(target), 0);
- postCommitLockState = lockStates.get(0);
+ lockManager.lock2(type, transaction, Collections.singleton(target), 0);
}
}
-
- if (postCommitLockState != null)
- {
- postCommitLockStates.add(postCommitLockState);
- }
- }
- }
-
- protected void autoReleaseExplicitLocks() throws InterruptedException
- {
- List<Object> targets = new ArrayList<Object>();
-
- // Release locks that have been sent from the client.
- for (CDOID id : idsToUnlock)
- {
- Object target = lockManager.getLockKey(id, branch);
- targets.add(target);
- }
-
- // Release durable locks that have been acquired on detached objects.
- for (CDOID id : detachedObjects)
- {
- Object target = lockManager.getLockKey(id, branch);
- if (lockManager.hasLock(LockType.WRITE, transaction, target))
- {
- // We only need to consider detached objects that have been explicitly locked
- targets.add(target);
- }
- }
-
- try
- {
- RWOLockManager.setUnlockAll(true);
-
- List<LockState<Object, IView>> lockStates = lockManager.unlock2(true, LockType.WRITE, transaction, targets,
- false);
- if (lockStates != null)
- {
- postCommitLockStates.addAll(lockStates);
- }
- }
- finally
- {
- RWOLockManager.setUnlockAll(false);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java
index 2ddb48c..0151075 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java
@@ -1022,6 +1022,13 @@
throw new UnsupportedOperationException();
}
+ public Collection<CDOLockState> getLocksOnNewObjects()
+ {
+ CDOLockState[] locksOnNewObjectsArr = WriteThroughCommitContext.this.getLocksOnNewObjects();
+ Collection<CDOLockState> locksOnNewObjects = Arrays.asList(locksOnNewObjectsArr);
+ return locksOnNewObjects;
+ }
+
public Collection<CDOLob<?>> getLobs()
{
return Collections.emptySet(); // TODO (CD) Did we forget to support this earlier?
@@ -1067,24 +1074,11 @@
return WriteThroughCommitContext.this.getUserID();
}
- @Deprecated
public boolean isAutoReleaseLocks()
{
return WriteThroughCommitContext.this.isAutoReleaseLocksEnabled();
}
- public Collection<CDOLockState> getLocksOnNewObjects()
- {
- CDOLockState[] locksOnNewObjectsArray = WriteThroughCommitContext.this.getLocksOnNewObjects();
- return Arrays.asList(locksOnNewObjectsArray);
- }
-
- public Collection<CDOID> getIDsToUnlock()
- {
- CDOID[] idsToUnlockArray = WriteThroughCommitContext.this.getIDsToUnlock();
- return Arrays.asList(idsToUnlockArray);
- }
-
public String getCommitComment()
{
return WriteThroughCommitContext.this.getCommitComment();
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
index 1d4f132..332a01f 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IStoreAccessor.java
@@ -312,6 +312,11 @@
public long getLastUpdateTime();
/**
+ * @since 3.0
+ */
+ public boolean isAutoReleaseLocksEnabled();
+
+ /**
* Returns the temporary, transactional package manager associated with the commit operation represented by this
* <code>CommitContext</code>. In addition to the packages registered with the session this package manager also
* contains the new packages that are part of this commit operation.
@@ -345,6 +350,14 @@
public InternalCDOPackageUnit[] getNewPackageUnits();
/**
+ * Returns an array of the locks on the new objects that are part of the commit operation represented by this
+ * <code>CommitContext</code>.
+ *
+ * @since 4.1
+ */
+ public CDOLockState[] getLocksOnNewObjects();
+
+ /**
* Returns an array of the new objects that are part of the commit operation represented by this
* <code>CommitContext</code>.
*/
@@ -407,27 +420,6 @@
public ExtendedDataInputStream getLobs();
/**
- *
- * @since 3.0
- * @deprecated As of 4.5 no longer supported. See {@link #getIDsToUnlock()}.
- */
- @Deprecated
- public boolean isAutoReleaseLocksEnabled();
-
- /**
- * Returns an array of the locks on the new objects that are part of the commit operation represented by this
- * <code>CommitContext</code>.
- *
- * @since 4.1
- */
- public CDOLockState[] getLocksOnNewObjects();
-
- /**
- * @since 4.6
- */
- public CDOID[] getIDsToUnlock();
-
- /**
* Returns an unmodifiable map from all temporary IDs to their persistent counter parts.
*/
public Map<CDOID, CDOID> getIDMappings();
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalCommitContext.java
index fd885b8..786f3af 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/InternalCommitContext.java
@@ -118,6 +118,11 @@
public void setNewPackageUnits(InternalCDOPackageUnit[] newPackageUnits);
+ /**
+ * @since 4.1
+ */
+ public void setLocksOnNewObjects(CDOLockState[] locksOnNewObjects);
+
public void setNewObjects(InternalCDORevision[] newObjects);
public void setDirtyObjectDeltas(InternalCDORevisionDelta[] dirtyObjectDeltas);
@@ -139,23 +144,9 @@
*/
public void setLastUpdateTime(long lastUpdateTime);
- /**
- * @deprecated As of 4.5 no longer supported. See {@link #setIDsToUnlock(CDOID[])}.
- */
- @Deprecated
public void setAutoReleaseLocksEnabled(boolean on);
/**
- * @since 4.1
- */
- public void setLocksOnNewObjects(CDOLockState[] locksOnNewObjects);
-
- /**
- * @since 4.6
- */
- public void setIDsToUnlock(CDOID[] idsToUnlock);
-
- /**
* @since 4.5
*/
public void setCommitNumber(int commitNumber);
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
index 79959cf..51fdfbf 100644
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.tests;singleton:=true
-Bundle-Version: 4.0.600.qualifier
+Bundle-Version: 4.0.500.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -47,18 +47,18 @@
interface_;version="4.0.200",
interface_.impl;version="4.0.200",
interface_.util;version="4.0.200",
- org.eclipse.emf.cdo.tests;version="4.0.600",
- org.eclipse.emf.cdo.tests.bugzilla;version="4.0.600",
- org.eclipse.emf.cdo.tests.bundle;version="4.0.600";x-internal:=true,
- org.eclipse.emf.cdo.tests.config;version="4.0.600",
- org.eclipse.emf.cdo.tests.config.impl;version="4.0.600",
- org.eclipse.emf.cdo.tests.defs;version="4.0.600",
- org.eclipse.emf.cdo.tests.extra;version="4.0.600",
- org.eclipse.emf.cdo.tests.offline;version="4.0.600",
- org.eclipse.emf.cdo.tests.performance;version="4.0.600",
- org.eclipse.emf.cdo.tests.performance.framework;version="4.0.600",
- org.eclipse.emf.cdo.tests.revisioncache;version="4.0.600",
- org.eclipse.emf.cdo.tests.util;version="4.0.600",
+ org.eclipse.emf.cdo.tests;version="4.0.500",
+ org.eclipse.emf.cdo.tests.bugzilla;version="4.0.500",
+ org.eclipse.emf.cdo.tests.bundle;version="4.0.500";x-internal:=true,
+ org.eclipse.emf.cdo.tests.config;version="4.0.500",
+ org.eclipse.emf.cdo.tests.config.impl;version="4.0.500",
+ org.eclipse.emf.cdo.tests.defs;version="4.0.500",
+ org.eclipse.emf.cdo.tests.extra;version="4.0.500",
+ org.eclipse.emf.cdo.tests.offline;version="4.0.500",
+ org.eclipse.emf.cdo.tests.performance;version="4.0.500",
+ org.eclipse.emf.cdo.tests.performance.framework;version="4.0.500",
+ org.eclipse.emf.cdo.tests.revisioncache;version="4.0.500",
+ org.eclipse.emf.cdo.tests.util;version="4.0.500",
reference;version="4.0.200",
reference.impl;version="4.0.200";
x-friends:="org.eclipse.emf.cdo.dawn.tests,
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 775239a..0746b51 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
@@ -1255,7 +1255,7 @@
assertEquals(false, CDOUtil.getCDOObject(category2).cdoWriteLock().isLocked()); // Implicit locks always released
}
- public void testAutoReleaseExplicitLocks() throws Exception
+ public void testAutoReleaseLocksOnChangedObject() throws Exception
{
Company company = getModel1Factory().createCompany();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingNotificationsTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingNotificationsTest.java
index c484fbc..d5a46ec 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingNotificationsTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingNotificationsTest.java
@@ -309,10 +309,8 @@
CDOTransaction tx1 = session1.openTransaction();
tx1.options().setAutoReleaseLocksEnabled(true);
-
CDOResource res1 = tx1.getOrCreateResource(getResourcePath("r1"));
res1.getContents().clear();
-
Company company = getModel1Factory().createCompany();
res1.getContents().add(company);
tx1.commit();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java
index 6721079..bdebdba 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java
@@ -63,14 +63,6 @@
private static final char[] PASSWORD2 = "invalid".toCharArray(); //$NON-NLS-1$
- @Override
- public void setUp() throws Exception
- {
- super.setUp();
- enableConsole();
-
- }
-
public void testIsSupportingAudits() throws Exception
{
CDOSession session = openSession();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_355045_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_355045_Test.java
deleted file mode 100644
index fad9c66..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_355045_Test.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 2004 - 2012 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.tests.bugzilla;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.CDOState;
-import org.eclipse.emf.cdo.common.CDOCommonSession.Options.LockNotificationMode;
-import org.eclipse.emf.cdo.common.lock.CDOLockState;
-import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.tests.AbstractCDOTest;
-import org.eclipse.emf.cdo.tests.model1.Category;
-import org.eclipse.emf.cdo.tests.model1.Company;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CDOUtil;
-
-import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
-
-import org.junit.Assert;
-
-import java.util.Collections;
-
-/**
- * @author Esteban Dugueperoux
- */
-public class Bugzilla_355045_Test extends AbstractCDOTest
-{
- private static final String RESOURCE_PATH = "/test1";
-
- private CDOTransaction transaction;
-
- private Company company;
-
- private Category category1;
-
- @Override
- public void setUp() throws Exception
- {
- super.setUp();
- CDOSession cdoSession = openSession();
- cdoSession.options().setLockNotificationMode(LockNotificationMode.ALWAYS);
- transaction = cdoSession.openTransaction();
- // cdoTransaction.options().setAutoReleaseLocksEnabled(false);
- CDOResource cdoResource = transaction.createResource(getResourcePath(RESOURCE_PATH));
-
- company = getModel1Factory().createCompany();
- category1 = getModel1Factory().createCategory();
- company.getCategories().add(category1);
-
- cdoResource.getContents().add(company);
- cdoResource.save(Collections.emptyMap());
- }
-
- public void testLockOnCommitOfSingleNewObject() throws Exception
- {
- Category category2 = getModel1Factory().createCategory();
- category2.setName("category2");
- category1.getCategories().add(category2);
-
- transaction.lockObjects(CDOUtil.getCDOObjects(category2), LockType.WRITE, DEFAULT_TIMEOUT);
- transaction.options().addAutoReleaseLocksExemptions(true, category2);
- assertLockStatus(category2, true, false);
-
- transaction.commit();
- assertEquals(CDOState.CLEAN, CDOUtil.getCDOObject(category2).cdoState());
- assertLockStatus(category2, true, false);
- }
-
- public void testRecursiveLockOnCommitOfNewObjectsTree() throws Exception
- {
- Category category2 = getModel1Factory().createCategory();
- category2.setName("category2");
- Category category4 = getModel1Factory().createCategory();
- category4.setName("category4");
- Category category5 = getModel1Factory().createCategory();
- category5.setName("category5");
- Category category6 = getModel1Factory().createCategory();
- category6.setName("category6");
- Category category7 = getModel1Factory().createCategory();
- category7.setName("category7");
-
- category2.getCategories().add(category4);
- category2.getCategories().add(category5);
- category4.getCategories().add(category6);
- category5.getCategories().add(category7);
- category1.getCategories().add(category2);
-
- Category category3 = getModel1Factory().createCategory();
- category3.setName("category3");
- Category category8 = getModel1Factory().createCategory();
- category8.setName("category8");
- Category category9 = getModel1Factory().createCategory();
- category9.setName("category9");
- Category category10 = getModel1Factory().createCategory();
- category10.setName("category10");
- Category category11 = getModel1Factory().createCategory();
- category11.setName("category11");
-
- category3.getCategories().add(category8);
- category3.getCategories().add(category9);
- category8.getCategories().add(category10);
- category9.getCategories().add(category11);
- category1.getCategories().add(category3);
-
- transaction.lockObjects(CDOUtil.getCDOObjects(category2), LockType.WRITE, DEFAULT_TIMEOUT, true);
- transaction.options().addAutoReleaseLocksExemptions(true, category2);
-
- assertLockStatus(category1, false, false);
- assertLockStatus(category2, true, true);
- assertLockStatus(category3, false, true);
-
- transaction.lockObjects(CDOUtil.getCDOObjects(category3), LockType.WRITE, DEFAULT_TIMEOUT, true);
- transaction.options().addAutoReleaseLocksExemptions(true, category3);
-
- assertLockStatus(category1, false, false);
- assertLockStatus(category2, true, true);
- assertLockStatus(category3, true, true);
-
- transaction.unlockObjects(CDOUtil.getCDOObjects(category3), LockType.WRITE);
-
- assertLockStatus(category1, false, false);
- assertLockStatus(category2, true, true);
- assertLockStatus(category3, false, false);
- assertLockStatus(category8, true, true);
- assertLockStatus(category9, true, true);
-
- transaction.commit();
-
- assertLockStatus(category1, false, false);
- assertLockStatus(category2, true, true);
- assertLockStatus(category3, false, false);
- assertLockStatus(category8, true, true);
- assertLockStatus(category9, true, true);
- }
-
- public void testRecursiveLockOfObjectsTreeContainingASubTreeOfNewObjects() throws Exception
- {
- Category category2 = getModel1Factory().createCategory();
- category2.setName("category2");
- Category category4 = getModel1Factory().createCategory();
- category4.setName("category4");
- Category category5 = getModel1Factory().createCategory();
- category5.setName("category5");
- Category category6 = getModel1Factory().createCategory();
- category6.setName("category6");
- Category category7 = getModel1Factory().createCategory();
- category7.setName("category7");
-
- category2.getCategories().add(category4);
- category2.getCategories().add(category5);
- category4.getCategories().add(category6);
- category5.getCategories().add(category7);
- category1.getCategories().add(category2);
-
- Category category3 = getModel1Factory().createCategory();
- category3.setName("category3");
- Category category8 = getModel1Factory().createCategory();
- category8.setName("category8");
- Category category9 = getModel1Factory().createCategory();
- category9.setName("category9");
- Category category10 = getModel1Factory().createCategory();
- category10.setName("category10");
- Category category11 = getModel1Factory().createCategory();
- category11.setName("category11");
-
- category3.getCategories().add(category8);
- category3.getCategories().add(category9);
- category8.getCategories().add(category10);
- category9.getCategories().add(category11);
- category1.getCategories().add(category3);
-
- transaction.lockObjects(CDOUtil.getCDOObjects(category1), LockType.WRITE, DEFAULT_TIMEOUT, true);
- transaction.options().addAutoReleaseLocksExemptions(false, category1);
- assertLockStatus(category1, true, false);
-
- transaction.commit();
- assertLockStatus(category1, true, false);
- }
-
- private void assertLockStatus(Category category, boolean lockedByMe, boolean recursive)
- {
- CDOObject categoryCDOObject = CDOUtil.getCDOObject(category);
- CDOLockState cdoLockState = categoryCDOObject.cdoLockState();
- Assert.assertEquals(
- "new object " + category.getName()
- + (lockedByMe ? " should be locally locked" : " shouldn't be locally locked"),
- lockedByMe, cdoLockState.isLocked(LockType.WRITE, transaction, false));
-
- if (recursive)
- {
- for (Category subCategory : category.getCategories())
- {
- assertLockStatus(subCategory, lockedByMe, recursive);
- }
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_387563_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_387563_Test.java
deleted file mode 100644
index 2a93570..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_387563_Test.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2004 - 2012 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.tests.bugzilla;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.CDOCommonSession.Options.LockNotificationMode;
-import org.eclipse.emf.cdo.common.lock.CDOLockState;
-import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.tests.AbstractCDOTest;
-import org.eclipse.emf.cdo.tests.model1.Category;
-import org.eclipse.emf.cdo.tests.model1.Company;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CDOUtil;
-
-import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
-import org.eclipse.net4j.util.io.IOUtil;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Esteban Dugueperoux
- */
-public class Bugzilla_387563_Test extends AbstractCDOTest
-{
- private CDOTransaction transaction;
-
- private Company company;
-
- private Category category1;
-
- private Category category2;
-
- private Category category3;
-
- private Category category4;
-
- private Category category5;
-
- @Override
- protected void doSetUp() throws Exception
- {
- super.doSetUp();
-
- CDOSession session = openSession();
- session.options().setLockNotificationMode(LockNotificationMode.ALWAYS);
-
- transaction = session.openTransaction();
- // transaction.options().setAutoReleaseLocksEnabled(false);
-
- CDOResource resource = transaction.createResource(getResourcePath("test1"));
-
- category1 = getModel1Factory().createCategory();
- category1.setName("category1");
-
- category2 = getModel1Factory().createCategory();
- category2.setName("category2");
-
- category3 = getModel1Factory().createCategory();
- category3.setName("category3");
-
- category4 = getModel1Factory().createCategory();
- category4.setName("category4");
-
- category5 = getModel1Factory().createCategory();
- category5.setName("category5");
-
- Category category6 = getModel1Factory().createCategory();
- category6.setName("category6");
-
- Category category7 = getModel1Factory().createCategory();
- category7.setName("category7");
-
- Category category8 = getModel1Factory().createCategory();
- category8.setName("category8");
-
- Category category9 = getModel1Factory().createCategory();
- category9.setName("category9");
-
- Category category10 = getModel1Factory().createCategory();
- category10.setName("category10");
-
- Category category11 = getModel1Factory().createCategory();
- category11.setName("category11");
-
- category1.getCategories().add(category2);
- category1.getCategories().add(category3);
- category2.getCategories().add(category4);
- category2.getCategories().add(category5);
- category3.getCategories().add(category8);
- category3.getCategories().add(category9);
- category4.getCategories().add(category6);
- category5.getCategories().add(category7);
- category8.getCategories().add(category10);
- category9.getCategories().add(category11);
-
- company = getModel1Factory().createCompany();
- company.getCategories().add(category1);
-
- resource.getContents().add(company);
-
- log("", Collections.singletonList(category1));
- }
-
- public void testPartialLockOnCommit() throws Exception
- {
- transaction.lockObjects(CDOUtil.getCDOObjects(category1), LockType.WRITE, DEFAULT_TIMEOUT, true);
-
- // Mark all objects to stay locked on commit
- transaction.options().addAutoReleaseLocksExemptions(true, category1);
- assertLockStatus(category1, true, true);
-
- // Mark category2 to be unlocked on commit
- transaction.options().removeAutoReleaseLocksExemptions(false, category2);
- assertLockStatus(category1, true, true);
-
- // Mark category3 and its descendants to be unlocked on commit
- transaction.options().removeAutoReleaseLocksExemptions(true, category3);
- assertLockStatus(category1, true, true);
-
- transaction.commit();
- assertLockStatus(category1, true, false);
- assertLockStatus(category2, false, false);
- assertLockStatus(category3, false, true);
- assertLockStatus(category4, true, true);
- assertLockStatus(category5, true, true);
- }
-
- public void testPartialUnlockOnCommit() throws Exception
- {
- transaction.lockObjects(CDOUtil.getCDOObjects(category1), LockType.WRITE, DEFAULT_TIMEOUT, true);
-
- // Mark category1 and its descendants to stay locked on commit
- transaction.options().addAutoReleaseLocksExemptions(true, category1);
- assertLockStatus(category1, true, true);
-
- transaction.unlockObjects(CDOUtil.getCDOObjects(category3), LockType.WRITE, true);
- assertLockStatus(category3, false, true);
-
- transaction.commit();
- assertLockStatus(category1, true, false);
- assertLockStatus(category2, true, true);
- assertLockStatus(category3, false, true);
- }
-
- private static void assertLockStatus(Category category, boolean expected, boolean recursive)
- {
- CDOObject cdoObject = CDOUtil.getCDOObject(category);
- CDOLockState lockState = cdoObject.cdoLockState();
-
- assertEquals(
- "new object " + category.getName() + (expected ? " should be locally locked" : " shouldn't be locally locked."),
- expected, lockState.isLocked(LockType.WRITE, cdoObject.cdoView(), false));
-
- if (recursive)
- {
- for (Category subCategory : category.getCategories())
- {
- assertLockStatus(subCategory, expected, recursive);
- }
- }
- }
-
- private static void log(String indent, List<Category> categories)
- {
- for (Category category : categories)
- {
- IOUtil.OUT().println(indent + category.getName() + " --> " + CDOUtil.getCDOObject(category).cdoID());
- log(indent + " ", category.getCategories());
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_387563b_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_387563b_Test.java
deleted file mode 100644
index 31baf15..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_387563b_Test.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2016 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.tests.bugzilla;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.lock.CDOLockState;
-import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.session.CDOSession;
-import org.eclipse.emf.cdo.tests.AbstractLockingTest;
-import org.eclipse.emf.cdo.tests.model1.Company;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CDOUtil;
-
-/**
- * @author Eike Stepper
- */
-public class Bugzilla_387563b_Test extends AbstractLockingTest
-{
- public void testNoImplicitLockingOfNewObject() throws Exception
- {
- Company company = getModel1Factory().createCompany();
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- transaction.options().setAutoReleaseLocksEnabled(true);
-
- CDOResource resource = transaction.createResource(getResourcePath("test1"));
- resource.getContents().add(company);
-
- CDOObject cdoObject = CDOUtil.getCDOObject(company);
- CDOLockState lockState = cdoObject.cdoLockState();
- assertNull(lockState.getWriteLockOwner());
-
- transaction.commit();
- assertWriteLock(false, company);
- }
-
- public void testExplicitLockingOfNewObject() throws Exception
- {
- Company company = getModel1Factory().createCompany();
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- transaction.options().setAutoReleaseLocksEnabled(true);
-
- CDOResource resource = transaction.createResource(getResourcePath("test1"));
- resource.getContents().add(company);
-
- CDOObject cdoObject = CDOUtil.getCDOObject(company);
- cdoObject.cdoWriteLock().lock();
-
- CDOLockState lockState = cdoObject.cdoLockState();
- assertEquals(transaction, lockState.getWriteLockOwner());
-
- transaction.commit();
- assertWriteLock(false, company);
- }
-
- public void testExplicitLockingOfNewObjectExemption() throws Exception
- {
- Company company = getModel1Factory().createCompany();
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- transaction.options().setAutoReleaseLocksEnabled(true);
- transaction.options().addAutoReleaseLocksExemptions(false, company);
-
- CDOResource resource = transaction.createResource(getResourcePath("test1"));
- resource.getContents().add(company);
-
- CDOObject cdoObject = CDOUtil.getCDOObject(company);
- cdoObject.cdoWriteLock().lock();
-
- CDOLockState lockState = cdoObject.cdoLockState();
- assertEquals(transaction, lockState.getWriteLockOwner());
-
- transaction.commit();
- assertWriteLock(true, company);
- }
-
- public void testExplicitLockingAndUnlockingOfNewObject() throws Exception
- {
- Company company = getModel1Factory().createCompany();
-
- CDOSession session = openSession();
- CDOTransaction transaction = session.openTransaction();
- transaction.options().setAutoReleaseLocksEnabled(true);
- transaction.options().addAutoReleaseLocksExemptions(false, company);
-
- CDOResource resource = transaction.createResource(getResourcePath("test1"));
- resource.getContents().add(company);
-
- CDOObject cdoObject = CDOUtil.getCDOObject(company);
- cdoObject.cdoWriteLock().lock();
-
- CDOLockState lockState = cdoObject.cdoLockState();
- assertEquals(transaction, lockState.getWriteLockOwner());
-
- cdoObject.cdoWriteLock().unlock();
- lockState = cdoObject.cdoLockState();
- assertNull(lockState.getWriteLockOwner());
-
- transaction.commit();
- assertWriteLock(false, company);
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_466951_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_466951_Test.java
index a6fcb01..0957d57 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_466951_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_466951_Test.java
@@ -28,6 +28,8 @@
import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.junit.Assert;
+
import java.util.Collections;
/**
@@ -54,78 +56,77 @@
ISignalProtocol<?> protocol = ((org.eclipse.emf.cdo.net4j.CDONet4jSession)session1).options().getNet4jProtocol();
SignalCounter signalCounter = new SignalCounter(protocol);
+ int nbLockStateRequest = signalCounter.getCountFor(LockStateRequest.class);
+ assertEquals(0, nbLockStateRequest);
- try
+ CDOObject companyCDOObject = CDOUtil.getCDOObject(company);
+ CDOLockState lockState = companyCDOObject.cdoLockState();
+ Object expectedLockedObject = companyCDOObject.cdoID();
+ if (session1.getRepositoryInfo().isSupportingBranches())
{
- assertEquals(0, signalCounter.removeCountFor(LockStateRequest.class));
-
- CDOObject companyCDOObject = CDOUtil.getCDOObject(company);
- CDOLockState lockState = companyCDOObject.cdoLockState();
- Object expectedLockedObject = companyCDOObject.cdoID();
- if (session1.getRepositoryInfo().isSupportingBranches())
- {
- expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject.cdoID(), transaction1.getBranch());
- }
-
- assertEquals(expectedLockedObject, lockState.getLockedObject());
- assertTrue(lockState.getReadLockOwners().isEmpty());
- assertNull(lockState.getWriteLockOwner());
- assertNull(lockState.getWriteOptionOwner());
-
- transaction1.lockObjects(Collections.singleton(companyCDOObject), LockType.WRITE, -1);
-
- lockState = companyCDOObject.cdoLockState();
- expectedLockedObject = companyCDOObject.cdoID();
- if (session1.getRepositoryInfo().isSupportingBranches())
- {
- expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject.cdoID(), transaction1.getBranch());
- }
-
- assertEquals(expectedLockedObject, lockState.getLockedObject());
- assertTrue(lockState.getReadLockOwners().isEmpty());
- assertEquals(transaction1, lockState.getWriteLockOwner());
- assertNull(lockState.getWriteOptionOwner());
-
- EcoreUtil.delete(company);
- assertEquals(CDOState.TRANSIENT, companyCDOObject.cdoState());
- lockState = companyCDOObject.cdoLockState();
- assertNull(lockState);
-
- Company company2 = getModel1Factory().createCompany();
- resource1.getContents().add(company2);
-
- CDOObject companyCDOObject2 = CDOUtil.getCDOObject(company2);
- lockState = companyCDOObject2.cdoLockState();
- expectedLockedObject = companyCDOObject2.cdoID();
- if (session1.getRepositoryInfo().isSupportingBranches())
- {
- expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject2.cdoID(), transaction1.getBranch());
- }
-
- assertEquals(expectedLockedObject, lockState.getLockedObject());
- assertTrue(lockState.getReadLockOwners().isEmpty());
- assertNull(lockState.getWriteLockOwner());
- assertNull(lockState.getWriteOptionOwner());
- assertEquals(0, signalCounter.removeCountFor(LockStateRequest.class));
-
- transaction1.commit();
-
- lockState = companyCDOObject2.cdoLockState();
- expectedLockedObject = companyCDOObject2.cdoID();
- if (session1.getRepositoryInfo().isSupportingBranches())
- {
- expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject2.cdoID(), transaction1.getBranch());
- }
-
- assertEquals(expectedLockedObject, lockState.getLockedObject());
- assertTrue(lockState.getReadLockOwners().isEmpty());
- assertNull(lockState.getWriteLockOwner());
- assertNull(lockState.getWriteOptionOwner());
- assertEquals(0, signalCounter.removeCountFor(LockStateRequest.class));
+ expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject.cdoID(), transaction1.getBranch());
}
- finally
+
+ assertEquals(expectedLockedObject, lockState.getLockedObject());
+ Assert.assertTrue(lockState.getReadLockOwners().isEmpty());
+ assertNull(lockState.getWriteLockOwner());
+ assertNull(lockState.getWriteOptionOwner());
+
+ transaction1.lockObjects(Collections.singleton(companyCDOObject), LockType.WRITE, -1);
+
+ lockState = companyCDOObject.cdoLockState();
+ expectedLockedObject = companyCDOObject.cdoID();
+ if (session1.getRepositoryInfo().isSupportingBranches())
{
- signalCounter.dispose();
+ expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject.cdoID(), transaction1.getBranch());
}
+
+ assertEquals(expectedLockedObject, lockState.getLockedObject());
+ Assert.assertTrue(lockState.getReadLockOwners().isEmpty());
+ assertEquals(transaction1, lockState.getWriteLockOwner());
+ assertNull(lockState.getWriteOptionOwner());
+
+ EcoreUtil.delete(company);
+ assertEquals(CDOState.TRANSIENT, companyCDOObject.cdoState());
+ lockState = companyCDOObject.cdoLockState();
+ assertNull(lockState);
+
+ Company company2 = getModel1Factory().createCompany();
+ resource1.getContents().add(company2);
+
+ CDOObject companyCDOObject2 = CDOUtil.getCDOObject(company2);
+ lockState = companyCDOObject2.cdoLockState();
+ expectedLockedObject = companyCDOObject2.cdoID();
+ if (session1.getRepositoryInfo().isSupportingBranches())
+ {
+ expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject2.cdoID(), transaction1.getBranch());
+ }
+
+ assertEquals(expectedLockedObject, lockState.getLockedObject());
+ Assert.assertTrue(lockState.getReadLockOwners().isEmpty());
+ assertNull(lockState.getWriteLockOwner());
+ assertNull(lockState.getWriteOptionOwner());
+
+ nbLockStateRequest = signalCounter.getCountFor(LockStateRequest.class);
+ assertEquals(0, nbLockStateRequest);
+
+ transaction1.commit();
+
+ lockState = companyCDOObject2.cdoLockState();
+ expectedLockedObject = companyCDOObject2.cdoID();
+ if (session1.getRepositoryInfo().isSupportingBranches())
+ {
+ expectedLockedObject = CDOIDUtil.createIDAndBranch(companyCDOObject2.cdoID(), transaction1.getBranch());
+ }
+
+ assertEquals(expectedLockedObject, lockState.getLockedObject());
+ Assert.assertTrue(lockState.getReadLockOwners().isEmpty());
+ assertNull(lockState.getWriteLockOwner());
+ assertNull(lockState.getWriteOptionOwner());
+
+ nbLockStateRequest = signalCounter.getCountFor(LockStateRequest.class);
+ assertEquals(0, nbLockStateRequest);
+
+ protocol.removeListener(signalCounter);
}
}
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 575ed4c..fc258b6 100644
--- a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.cdo.ui;singleton:=true
-Bundle-Version: 4.5.100.qualifier
+Bundle-Version: 4.5.0.qualifier
Bundle-Activator: org.eclipse.emf.cdo.internal.ui.bundle.OM$Activator
Bundle-Vendor: %providerName
Bundle-ClassPath: .
@@ -27,7 +27,7 @@
org.eclipse.emf.ecp.edit;bundle-version="[1.5.0,2.0.0)";resolution:=optional,
org.eclipse.emf.ecp.edit.swt;bundle-version="[1.5.0,2.0.0)";resolution:=optional,
org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.5.0,2.0.0)";resolution:=optional
-Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.5.100";
+Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -37,7 +37,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.actions;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.actions;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -47,7 +47,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.handlers;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.handlers;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -57,9 +57,9 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.actions.delegates;version="4.5.100";x-internal:=true,
- org.eclipse.emf.cdo.internal.ui.bundle;version="4.5.100";x-internal:=true,
- org.eclipse.emf.cdo.internal.ui.dialogs;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.actions.delegates;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.ui.bundle;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.cdo.internal.ui.dialogs;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -69,7 +69,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.dnd;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.dnd;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -79,7 +79,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.editor;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.editor;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -89,7 +89,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.filters;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.filters;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -99,7 +99,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.history;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.history;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -109,7 +109,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.messages;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.messages;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -119,7 +119,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.perspectives;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.perspectives;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -129,7 +129,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.preferences;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.preferences;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -139,7 +139,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.transfer;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.transfer;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -149,7 +149,7 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.internal.ui.views;version="4.5.100";
+ org.eclipse.emf.cdo.internal.ui.views;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.ui.defs,
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.ui.location,
@@ -159,5 +159,5 @@
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.ui.team,
org.eclipse.emf.cdo.ui.compare",
- org.eclipse.emf.cdo.ui;version="4.5.100",
- org.eclipse.emf.cdo.ui.widgets;version="4.5.100"
+ org.eclipse.emf.cdo.ui;version="4.5.0",
+ org.eclipse.emf.cdo.ui.widgets;version="4.5.0"
diff --git a/plugins/org.eclipse.emf.cdo.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.ui/plugin.xml
index cdd6485..3f9cb46 100644
--- a/plugins/org.eclipse.emf.cdo.ui/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.ui/plugin.xml
@@ -411,6 +411,7 @@
</iterate>
</with>
</visibleWhen>
+
</command>
<command
commandId="org.eclipse.emf.cdo.ui.UnlockObject"
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AbstractLockObjectsAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AbstractLockObjectsAction.java
index 9966a07..0af9057 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AbstractLockObjectsAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AbstractLockObjectsAction.java
@@ -30,9 +30,7 @@
/**
* @author Simon McDuff
- * @deprecated As of 4.6 no longer supported.
*/
-@Deprecated
public abstract class AbstractLockObjectsAction extends EditingDomainAction
{
private List<InternalCDOObject> objects = new ArrayList<InternalCDOObject>();
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AutoReleaseLockExemptionAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AutoReleaseLockExemptionAction.java
deleted file mode 100644
index 794f1cf..0000000
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/AutoReleaseLockExemptionAction.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2016 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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.ui.actions;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.internal.ui.messages.Messages;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.util.CDOUtil;
-
-import org.eclipse.emf.ecore.EObject;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-
-/**
- * @author Eike Stepper
- */
-public class AutoReleaseLockExemptionAction extends EditingDomainAction
-{
- public static final String ID = "AutoReleaseLockExemption"; //$NON-NLS-1$
-
- private static final String TITLE = Messages.getString("AutoReleaseLockExemptionAction.1"); //$NON-NLS-1$
-
- private CDOObject selectedObject;
-
- public AutoReleaseLockExemptionAction()
- {
- super(TITLE);
- setId(ID);
- }
-
- public void selectionChanged(IStructuredSelection selection)
- {
- selectedObject = null;
-
- if (selection != null && selection.size() == 1)
- {
- Object element = selection.getFirstElement();
- if (element instanceof EObject)
- {
- EObject object = (EObject)element;
- selectedObject = CDOUtil.getCDOObject(object);
- }
- }
- }
-
- public boolean init()
- {
- if (selectedObject != null && selectedObject.cdoWriteLock().isLocked())
- {
- CDOTransaction transaction = (CDOTransaction)selectedObject.cdoView();
- setChecked(transaction.options().isAutoReleaseLocksExemption(selectedObject));
- return true;
- }
-
- return false;
- }
-
- @Override
- public void update()
- {
- setEnabled(true);
- }
-
- @Override
- protected void doRun(IProgressMonitor progressMonitor) throws Exception
- {
- if (selectedObject != null)
- {
- CDOTransaction transaction = (CDOTransaction)selectedObject.cdoView();
- if (transaction.options().isAutoReleaseLocksExemption(selectedObject))
- {
- transaction.options().removeAutoReleaseLocksExemptions(false, selectedObject);
- }
- else
- {
- transaction.options().addAutoReleaseLocksExemptions(false, selectedObject);
- }
- }
-
- update();
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ChangePassiveUpdateAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ChangePassiveUpdateAction.java
index ff5c911..b425969 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ChangePassiveUpdateAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ChangePassiveUpdateAction.java
@@ -24,9 +24,7 @@
* {@link CDOSession session}.
*
* @author Victor Roldan Betancort
- * @deprecated As of 4.6 no longer supported.
*/
-@Deprecated
public class ChangePassiveUpdateAction extends EditingDomainAction
{
public static final String ID = "change-passiveupdate"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ReadLockObjectsAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ReadLockObjectsAction.java
index 707ccb2..b2be9b7 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ReadLockObjectsAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/ReadLockObjectsAction.java
@@ -19,9 +19,7 @@
/**
* @author Simon McDuff
- * @deprecated As of 4.6 no longer supported.
*/
-@Deprecated
public class ReadLockObjectsAction extends AbstractLockObjectsAction
{
public static final String ID = "readlock-objects"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/WriteLockObjectsAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/WriteLockObjectsAction.java
index 3f418f7..a96f147 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/WriteLockObjectsAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/WriteLockObjectsAction.java
@@ -19,9 +19,7 @@
/**
* @author Simon McDuff
- * @deprecated As of 4.6 no longer supported.
*/
-@Deprecated
public class WriteLockObjectsAction extends AbstractLockObjectsAction
{
public static final String ID = "writelock-objects"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOActionBarContributor.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOActionBarContributor.java
index 2e6e898..f5977d7 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOActionBarContributor.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOActionBarContributor.java
@@ -12,8 +12,12 @@
package org.eclipse.emf.cdo.internal.ui.editor;
import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.internal.ui.actions.AutoReleaseLockExemptionAction;
+import org.eclipse.emf.cdo.internal.ui.actions.ChangePassiveUpdateAction;
import org.eclipse.emf.cdo.internal.ui.actions.ImportRootsAction;
+import org.eclipse.emf.cdo.internal.ui.actions.ReadLockObjectsAction;
+import org.eclipse.emf.cdo.internal.ui.actions.WriteLockObjectsAction;
+import org.eclipse.emf.cdo.internal.ui.messages.Messages;
+import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.common.ui.viewer.IViewerProvider;
import org.eclipse.emf.edit.domain.EditingDomain;
@@ -72,7 +76,17 @@
/**
* @ADDED
*/
- protected AutoReleaseLockExemptionAction autoReleaseLockExemptionAction;
+ protected ReadLockObjectsAction readLockObjectsAction;
+
+ /**
+ * @ADDED
+ */
+ protected WriteLockObjectsAction writeLockObjectsAction;
+
+ /**
+ * @ADDED
+ */
+ protected ChangePassiveUpdateAction changePassiveUpdateAction;
/**
* This keeps track of the active editor.
@@ -182,7 +196,12 @@
loadResourceAction.setId(LOAD_RESOURCE_ID);
importRootsAction = new ImportRootsAction();
- autoReleaseLockExemptionAction = new AutoReleaseLockExemptionAction();
+ importRootsAction.setId(ImportRootsAction.ID);
+
+ changePassiveUpdateAction = new ChangePassiveUpdateAction();
+
+ readLockObjectsAction = new ReadLockObjectsAction();
+ writeLockObjectsAction = new WriteLockObjectsAction();
validateAction = new ValidateAction();
controlAction = new ControlAction();
@@ -356,10 +375,18 @@
ISelection selection = event.getSelection();
if (selection instanceof IStructuredSelection)
{
+ if (readLockObjectsAction != null)
+ {
+ readLockObjectsAction.selectionChanged((IStructuredSelection)selection);
+ }
+
+ if (writeLockObjectsAction != null)
+ {
+ writeLockObjectsAction.selectionChanged((IStructuredSelection)selection);
+ }
+
if (((IStructuredSelection)selection).size() == 1)
{
- autoReleaseLockExemptionAction.selectionChanged((IStructuredSelection)selection);
-
Object object = ((IStructuredSelection)selection).getFirstElement();
EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
@@ -367,13 +394,16 @@
newChildDescriptors = domain.getNewChildDescriptors(object, null);
newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
- if (object instanceof CDOResource)
+ if (importRootsAction != null)
{
- importRootsAction.setTargetResource((CDOResource)object);
- }
- else
- {
- importRootsAction.setTargetResource(null);
+ if (object instanceof CDOResource)
+ {
+ importRootsAction.setTargetResource((CDOResource)object);
+ }
+ else
+ {
+ importRootsAction.setTargetResource(null);
+ }
}
}
}
@@ -548,21 +578,37 @@
refreshViewerAction.setId(REFRESH_VIEWER_ID);
menuManager.insertAfter("ui-actions", refreshViewerAction); //$NON-NLS-1$
- if (autoReleaseLockExemptionAction.init())
- {
- menuManager.insertAfter("additions", autoReleaseLockExemptionAction); //$NON-NLS-1$
- autoReleaseLockExemptionAction.update();
- }
+ MenuManager lockingSubMenu = new MenuManager(Messages.getString("CDOActionBarContributor_0")); //$NON-NLS-1$
+ lockingSubMenu.add(new Separator("ui-actions")); //$NON-NLS-1$
+
+ lockingSubMenu.insertAfter("ui-actions", writeLockObjectsAction); //$NON-NLS-1$
+ writeLockObjectsAction.update();
+
+ lockingSubMenu.insertAfter("ui-actions", readLockObjectsAction); //$NON-NLS-1$
+ readLockObjectsAction.update();
+
+ menuManager.insertAfter("ui-actions", lockingSubMenu); //$NON-NLS-1$
+
+ menuManager.insertAfter("ui-actions", changePassiveUpdateAction); //$NON-NLS-1$
+ changePassiveUpdateAction.update();
+ changePassiveUpdateAction.setEnabled(true);
super.addGlobalActions(menuManager);
if (loadResourceAction != null)
{
- menuManager.insertAfter(loadResourceAction.getId(), importRootsAction);
+ if (importRootsAction != null)
+ {
+ menuManager.insertAfter(loadResourceAction.getId(), importRootsAction);
+ }
}
else
{
- menuManager.insertBefore("additions-end", importRootsAction); //$NON-NLS-1$
+ if (importRootsAction != null)
+ {
+ menuManager.insertBefore("additions-end", importRootsAction); //$NON-NLS-1$
+ }
+
menuManager.insertBefore("additions-end", new Separator()); //$NON-NLS-1$
}
}
@@ -585,15 +631,28 @@
@Override
public void activate()
{
- importRootsAction.setActiveWorkbenchPart(activeEditor);
- Object input = ((CDOEditor)getActiveEditor()).getViewer().getInput();
- if (input instanceof CDOResource)
+ if (importRootsAction != null)
{
- importRootsAction.setTargetResource((CDOResource)input);
+ importRootsAction.setActiveWorkbenchPart(activeEditor);
+ Object input = ((CDOEditor)getActiveEditor()).getViewer().getInput();
+ if (input instanceof CDOResource)
+ {
+ importRootsAction.setTargetResource((CDOResource)input);
+ }
+ else
+ {
+ importRootsAction.setTargetResource(null);
+ }
}
- else
+
+ if (changePassiveUpdateAction != null)
{
- importRootsAction.setTargetResource(null);
+ Object input = ((CDOEditor)getActiveEditor()).getViewer().getInput();
+ if (input instanceof CDOResource)
+ {
+ CDOView view = ((CDOResource)input).cdoView();
+ changePassiveUpdateAction.setSession(view.getSession());
+ }
}
super.activate();
@@ -605,8 +664,11 @@
@Override
public void deactivate()
{
- importRootsAction.setActiveWorkbenchPart(null);
- importRootsAction.setTargetResource(null);
+ if (importRootsAction != null)
+ {
+ importRootsAction.setActiveWorkbenchPart(null);
+ importRootsAction.setTargetResource(null);
+ }
super.deactivate();
}
@@ -618,6 +680,9 @@
public void update()
{
super.update();
- importRootsAction.update();
+ if (importRootsAction != null)
+ {
+ importRootsAction.update();
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties
index 0c5302e..6f4045e 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/messages/messages.properties
@@ -91,7 +91,6 @@
CDOWatchListView.8=Reset Changes
CDOWatchListView.9=Reset all change notifications from the selected subscriptions
ChangePassiveUpdateAction.1=Passive Updates
-AutoReleaseLockExemptionAction.1=Auto Release Lock Exemption
ChangePasswordAction_0=Change Password...
ChangePasswordAction_1=Change the connected user's password
CloseSessionAction.0=Close
diff --git a/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF
index 175d5a6..f2978ba 100644
--- a/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.cdo; singleton:=true
-Bundle-Version: 4.6.0.qualifier
+Bundle-Version: 4.5.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -10,29 +10,29 @@
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
org.eclipse.emf.cdo.common;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
-Export-Package: org.eclipse.emf.cdo;version="4.6.0",
- org.eclipse.emf.cdo.eresource;version="4.6.0",
- org.eclipse.emf.cdo.eresource.impl;version="4.6.0",
- org.eclipse.emf.cdo.eresource.util;version="4.6.0",
- org.eclipse.emf.cdo.eresource.validation;version="4.6.0",
- org.eclipse.emf.cdo.etypes;version="4.6.0",
- org.eclipse.emf.cdo.etypes.impl;version="4.6.0",
- org.eclipse.emf.cdo.etypes.util;version="4.6.0",
- org.eclipse.emf.cdo.session;version="4.6.0",
- org.eclipse.emf.cdo.session.remote;version="4.6.0",
- org.eclipse.emf.cdo.transaction;version="4.6.0",
- org.eclipse.emf.cdo.util;version="4.6.0",
- org.eclipse.emf.cdo.view;version="4.6.0",
- org.eclipse.emf.internal.cdo;version="4.6.0",
- org.eclipse.emf.internal.cdo.analyzer;version="4.6.0";
+Export-Package: org.eclipse.emf.cdo;version="4.5.0",
+ org.eclipse.emf.cdo.eresource;version="4.5.0",
+ org.eclipse.emf.cdo.eresource.impl;version="4.5.0",
+ org.eclipse.emf.cdo.eresource.util;version="4.5.0",
+ org.eclipse.emf.cdo.eresource.validation;version="4.5.0",
+ org.eclipse.emf.cdo.etypes;version="4.5.0",
+ org.eclipse.emf.cdo.etypes.impl;version="4.5.0",
+ org.eclipse.emf.cdo.etypes.util;version="4.5.0",
+ org.eclipse.emf.cdo.session;version="4.5.0",
+ org.eclipse.emf.cdo.session.remote;version="4.5.0",
+ org.eclipse.emf.cdo.transaction;version="4.5.0",
+ org.eclipse.emf.cdo.util;version="4.5.0",
+ org.eclipse.emf.cdo.view;version="4.5.0",
+ org.eclipse.emf.internal.cdo;version="4.5.0",
+ org.eclipse.emf.internal.cdo.analyzer;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui",
- org.eclipse.emf.internal.cdo.bundle;version="4.6.0";x-friends:="org.eclipse.emf.cdo.ui",
- org.eclipse.emf.internal.cdo.messages;version="4.6.0";x-internal:=true,
- org.eclipse.emf.internal.cdo.object;version="4.6.0";
+ org.eclipse.emf.internal.cdo.bundle;version="4.5.0";x-friends:="org.eclipse.emf.cdo.ui",
+ org.eclipse.emf.internal.cdo.messages;version="4.5.0";x-internal:=true,
+ org.eclipse.emf.internal.cdo.object;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
@@ -42,14 +42,14 @@
org.eclipse.emf.cdo.explorer,
org.eclipse.emf.cdo.explorer.ui,
org.eclipse.emf.cdo.edit",
- org.eclipse.emf.internal.cdo.query;version="4.6.0";
+ org.eclipse.emf.internal.cdo.query;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui,
org.eclipse.emf.cdo.tests.objectivity",
- org.eclipse.emf.internal.cdo.session;version="4.6.0";
+ org.eclipse.emf.internal.cdo.session;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
@@ -60,26 +60,26 @@
org.eclipse.emf.cdo.security.ui,
org.eclipse.emf.cdo.explorer,
org.eclipse.emf.cdo.explorer.ui",
- org.eclipse.emf.internal.cdo.session.remote;version="4.6.0";
+ org.eclipse.emf.internal.cdo.session.remote;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui",
- org.eclipse.emf.internal.cdo.transaction;version="4.6.0";
+ org.eclipse.emf.internal.cdo.transaction;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui,
org.eclipse.emf.cdo.explorer.ui",
- org.eclipse.emf.internal.cdo.util;version="4.6.0";
+ org.eclipse.emf.internal.cdo.util;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
org.eclipse.emf.cdo.defs,
org.eclipse.emf.cdo.ui",
- org.eclipse.emf.internal.cdo.view;version="4.6.0";
+ org.eclipse.emf.internal.cdo.view;version="4.5.0";
x-friends:="org.eclipse.emf.cdo.net4j,
org.eclipse.emf.cdo.server,
org.eclipse.emf.cdo.tests,
@@ -88,5 +88,5 @@
org.eclipse.emf.cdo.ui.ide,
org.eclipse.emf.cdo.explorer,
org.eclipse.emf.cdo.explorer.ui",
- org.eclipse.emf.spi.cdo;version="4.6.0"
+ org.eclipse.emf.spi.cdo;version="4.5.0"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo/plugin.xml b/plugins/org.eclipse.emf.cdo/plugin.xml
index c8289c2..454a816 100644
--- a/plugins/org.eclipse.emf.cdo/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo/plugin.xml
@@ -59,19 +59,19 @@
id="org.eclipse.emf.cdo.view.properties"
type="org.eclipse.emf.cdo.view.CDOView"
namespace="org.eclipse.emf.cdo.view"
- properties="open,viewID,branchName,branch,timeStamp,lastUpdateTime,rootResourcePermission,readOnly,dirty,durable,sessionID,userID,userAuthenticated,historical,autoReleaseLocks"
+ properties="open,viewID,branchName,branch,timeStamp,lastUpdateTime,readOnly,dirty,durable,sessionID,userID,userAuthenticated,historical"
class="org.eclipse.emf.internal.cdo.view.ViewProperties$Tester"/>
<propertyTester
id="org.eclipse.emf.cdo.object.properties"
type="org.eclipse.emf.ecore.EObject"
namespace="org.eclipse.emf.cdo.object"
- properties="isCDO,id,version,branch,state,transactional,readable,writable,writableContainer,container,children,permission,permissionContainer,readLocks,readLocked,readLockedByOthers,writeLock,writeLocked,writeLockedByOthers,writeOption,writeOptioned,writeOptionedByOthers,autoReleaseLocksExemption,viewHistorical,uri"
+ properties="isCDO,id,version,branch,state,transactional,readable,writable,writableContainer,container,children,permission,permissionContainer,readLocks,readLocked,readLockedByOthers,writeLock,writeLocked,writeLockedByOthers,writeOption,writeOptioned,writeOptionedByOthers,viewHistorical,uri"
class="org.eclipse.emf.internal.cdo.object.ObjectProperties$Tester"/>
<propertyTester
id="org.eclipse.emf.cdo.object.properties"
type="org.eclipse.emf.cdo.CDOElement"
namespace="org.eclipse.emf.cdo.object"
- properties="isCDO,id,version,branch,state,transactional,readable,writable,writableContainer,container,children,permission,permissionContainer,readLocks,readLocked,readLockedByOthers,writeLock,writeLocked,writeLockedByOthers,writeOption,writeOptioned,writeOptionedByOthers,autoReleaseLocksExemption,viewHistorical,uri"
+ properties="isCDO,id,version,branch,state,transactional,readable,writable,writableContainer,container,children,permission,permissionContainer,readLocks,readLocked,readLockedByOthers,writeLock,writeLocked,writeLockedByOthers,writeOption,writeOptioned,writeOptionedByOthers,viewHistorical,uri"
class="org.eclipse.emf.internal.cdo.object.ObjectProperties$ElementTester"/>
</extension>
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java
index 7bada9a..4905d74 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOCommitContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009-2012, 2014 Eike Stepper (Berlin, Germany) and others.
+ * Copyright (c) 2009-2012, 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
@@ -55,6 +55,11 @@
public CDOTransaction getTransaction();
/**
+ * @since 4.1
+ */
+ public boolean isAutoReleaseLocks();
+
+ /**
* @since 4.0
*/
public boolean isPartialCommit();
@@ -75,6 +80,11 @@
public List<CDOPackageUnit> getNewPackageUnits();
/**
+ * @since 4.1
+ */
+ public Collection<CDOLockState> getLocksOnNewObjects();
+
+ /**
* Returns a map of the new {@link CDOObject objects} that are to be committed with this commit context.
*/
public Map<CDOID, CDOObject> getNewObjects();
@@ -98,21 +108,4 @@
* @since 4.0
*/
public Collection<CDOLob<?>> getLobs();
-
- /**
- * @since 4.1
- * @deprecated As of 4.5 no longer supported. See {@link #getIDsToUnlock()}.
- */
- @Deprecated
- public boolean isAutoReleaseLocks();
-
- /**
- * @since 4.1
- */
- public Collection<CDOLockState> getLocksOnNewObjects();
-
- /**
- * @since 4.6
- */
- public Collection<CDOID> getIDsToUnlock();
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java
index 2ed5ff4..95d4460 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOTransaction.java
@@ -292,93 +292,24 @@
public void setStaleReferenceCleaner(CDOStaleReferenceCleaner staleReferenceCleaner);
/**
- * Returns <code>true</code> if locks in this transaction will be released when {@link CDOTransaction#commit()} or
- * {@link CDOTransaction#rollback()} are called, <code>false</code> otherwise.
+ * Returns true if locks in this view will be removes when {@link CDOTransaction#commit()} or
+ * {@link CDOTransaction#rollback()} is called.
* <p>
- * The default value is <code>true</code>.
- *
- * @see #getAutoReleaseLocksExemptions()
+ * Default value is true.
*/
public boolean isAutoReleaseLocksEnabled();
/**
- * Specifies whether locks in this transaction will be released when {@link CDOTransaction#commit()} or
- * {@link CDOTransaction#rollback()} are called.
+ * Specifies whether locks in this view will be removed when {@link CDOTransaction#commit()} or
+ * {@link CDOTransaction#rollback()} is called.
* <p>
- * If set to <code>false</code> all locks will be kept when {@link CDOTransaction#commit()} or
- * {@link CDOTransaction#rollback()} are called.
+ * If false all locks are kept.
* <p>
- * The default value is <code>true</code>.
- *
- * @see #getAutoReleaseLocksExemptions()
+ * Default value is true.
*/
public void setAutoReleaseLocksEnabled(boolean on);
/**
- * Returns the set of {@link EObject objects} that are to be treated as exemptions to the {@link #isAutoReleaseLocksEnabled()} option.
- * <p>
- * That means:
- * <p>
- * <ul>
- * <li> If {@link #isAutoReleaseLocksEnabled()} returns <code>true</code>, the locks on the objects in this set are <b>not</b> released
- * when {@link CDOTransaction#commit()} or {@link CDOTransaction#rollback()} are called.
- * <li> If {@link #isAutoReleaseLocksEnabled()} returns <code>false</code>, the locks on the objects in this set <b>are</b> released nevertheless
- * when {@link CDOTransaction#commit()} or {@link CDOTransaction#rollback()} are called.
- * </ul>
- * <p>
- * The returned set is unmodifiable. To modify the set use the {@link #clearAutoReleaseLocksExemptions() clearAutoReleaseLocksExemptions()},
- * {@link #addAutoReleaseLocksExemptions(boolean, EObject...) addAutoReleaseLocksExemption()},
- * and {@link #removeAutoReleaseLocksExemptions(boolean, EObject...) removeAutoReleaseLocksExemption()} methods.
- * <p>
- * <b>Implementation note</b>: This set stores weak references to the contained objects.
- *
- * @see #clearAutoReleaseLocksExemptions()
- * @see #addAutoReleaseLocksExemptions(boolean, EObject...)
- * @see #removeAutoReleaseLocksExemptions(boolean, EObject...)
- * @since 4.6
- */
- public Set<? extends EObject> getAutoReleaseLocksExemptions();
-
- /**
- * Returns <code>true</code> if the given object is treated as an exemption to the {@link #isAutoReleaseLocksEnabled()} option,
- * <code>false</code> otherwise.
- *
- * @see #getAutoReleaseLocksExemptions()
- * @since 4.6
- */
- public boolean isAutoReleaseLocksExemption(EObject object);
-
- /**
- * Clears the set of {@link EObject objects} that are to be treated as exemptions to the {@link #isAutoReleaseLocksEnabled()} option.
- *
- * @see #getAutoReleaseLocksExemptions()
- * @see #addAutoReleaseLocksExemptions(boolean, EObject...)
- * @see #removeAutoReleaseLocksExemptions(boolean, EObject...)
- * @since 4.6
- */
- public void clearAutoReleaseLocksExemptions();
-
- /**
- * Adds the given {@link EObject object} to the set of objects that are to be treated as exemptions to the {@link #isAutoReleaseLocksEnabled()} option.
- *
- * @see #getAutoReleaseLocksExemptions()
- * @see #clearAutoReleaseLocksExemptions()
- * @see #removeAutoReleaseLocksExemptions(boolean, EObject...)
- * @since 4.6
- */
- public void addAutoReleaseLocksExemptions(boolean recursive, EObject... objects);
-
- /**
- * Removes the given {@link EObject object} from the set of objects that are to be treated as exemptions to the {@link #isAutoReleaseLocksEnabled()} option.
- *
- * @see #getAutoReleaseLocksExemptions()
- * @see #clearAutoReleaseLocksExemptions()
- * @see #addAutoReleaseLocksExemptions(boolean, EObject...)
- * @since 4.6
- */
- public void removeAutoReleaseLocksExemptions(boolean recursive, EObject... objects);
-
- /**
* Returns the number of milliseconds to wait for the transaction update when {@link CDOTransaction#commit()} is called.
* <p>
* Default value is 10000.
@@ -436,8 +367,7 @@
/**
* An {@link IOptionsEvent options event} fired from transaction {@link CDOTransaction#options() options} when the
- * {@link Options#setAutoReleaseLocksEnabled(boolean) auto release locks enabled} or
- * {@link Options#getAutoReleaseLocksExemptions() auto release locks exemptions} options have changed.
+ * {@link Options#setAutoReleaseLocksEnabled(boolean) auto release locks} option has changed.
*
* @author Eike Stepper
* @since 3.0
@@ -446,31 +376,6 @@
*/
public interface AutoReleaseLocksEvent extends IOptionsEvent
{
- /**
- * An {@link AutoReleaseLocksEvent auto release locks options event} fired from transaction {@link CDOTransaction#options() options} when the
- * {@link Options#setAutoReleaseLocksEnabled(boolean) auto release locks enabled} option has changed.
- *
- * @author Eike Stepper
- * @since 4.6
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
- public interface AutoReleaseLocksEnabledEvent extends AutoReleaseLocksEvent
- {
- }
-
- /**
- * An {@link AutoReleaseLocksEvent auto release locks options event} fired from transaction {@link CDOTransaction#options() options} when the
- * {@link Options#getAutoReleaseLocksExemptions() auto release locks exemptions} option has changed.
- *
- * @author Eike Stepper
- * @since 4.6
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
- public interface AutoReleaseLocksExemptionsEvent extends AutoReleaseLocksEvent
- {
- }
}
/**
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
index c6ec39b..41cd6b1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
@@ -88,10 +88,8 @@
import org.eclipse.emf.spi.cdo.InternalCDOObject;
import org.eclipse.emf.spi.cdo.InternalCDOView;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.Lock;
@@ -594,20 +592,6 @@
}
/**
- * @since 4.6
- */
- public static List<? extends CDOObject> getCDOObjects(EObject... objects)
- {
- List<CDOObject> result = new ArrayList<CDOObject>();
- for (EObject object : objects)
- {
- result.add(getCDOObject(object));
- }
-
- return result;
- }
-
- /**
* @since 4.4
*/
public static boolean isCDOObject(EObject object)
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 ff9c2cf..2a6dc0f 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
@@ -1635,7 +1635,7 @@
* @author Eike Stepper
* @since 4.1
*/
- private final class CDOStoreEcoreEMap extends EcoreEMap<Object, Object> implements InternalCDOLoadable
+ private final class CDOStoreEcoreEMap extends EcoreEMap<Object, Object>implements InternalCDOLoadable
{
private static final long serialVersionUID = 1L;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java
index 2cd24d3..9f726b2 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java
@@ -19,7 +19,6 @@
import org.eclipse.emf.cdo.common.lock.CDOLockState;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.security.CDOPermission;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
@@ -520,28 +519,6 @@
}
});
- add(new Property<EObject>("autoReleaseLocksExemption")//$NON-NLS-1$
- {
- @Override
- protected Object eval(EObject object)
- {
- CDOObject cdoObject = getCDOObject(object);
- if (cdoObject == null)
- {
- return false;
- }
-
- CDOView view = cdoObject.cdoView();
- if (view instanceof CDOTransaction)
- {
- CDOTransaction transaction = (CDOTransaction)view;
- return transaction.options().isAutoReleaseLocksExemption(cdoObject);
- }
-
- return false;
- }
- });
-
add(new Property<EObject>("viewHistorical") //$NON-NLS-1$
{
@Override
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 8c475d9..c80de5c 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
@@ -96,8 +96,6 @@
import org.eclipse.emf.cdo.transaction.CDOSavepoint;
import org.eclipse.emf.cdo.transaction.CDOStaleReferenceCleaner;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
-import org.eclipse.emf.cdo.transaction.CDOTransaction.Options.AutoReleaseLocksEvent.AutoReleaseLocksEnabledEvent;
-import org.eclipse.emf.cdo.transaction.CDOTransaction.Options.AutoReleaseLocksEvent.AutoReleaseLocksExemptionsEvent;
import org.eclipse.emf.cdo.transaction.CDOTransactionConflictEvent;
import org.eclipse.emf.cdo.transaction.CDOTransactionFinishedEvent;
import org.eclipse.emf.cdo.transaction.CDOTransactionHandler;
@@ -148,7 +146,6 @@
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
@@ -179,6 +176,7 @@
import java.io.OutputStream;
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -189,7 +187,6 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.WeakHashMap;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger;
@@ -3643,6 +3640,8 @@
private CDOCommitData commitData;
+ private Collection<CDOLockState> locksOnNewObjects;
+
private Map<CDOID, CDOObject> newObjects;
private Map<CDOID, CDOObject> detachedObjects;
@@ -3653,10 +3652,6 @@
private Map<ByteArrayWrapper, CDOLob<?>> lobs = new HashMap<ByteArrayWrapper, CDOLob<?>>();
- private List<CDOLockState> locksOnNewObjects = new ArrayList<CDOLockState>();
-
- private List<CDOID> idsToUnlock = new ArrayList<CDOID>();
-
public CDOCommitContextImpl(InternalCDOTransaction transaction)
{
this.transaction = transaction;
@@ -3665,8 +3660,6 @@
private void calculateCommitData()
{
- OptionsImpl options = (OptionsImpl)transaction.options();
-
List<CDOPackageUnit> newPackageUnits = analyzeNewPackages();
newObjects = filterCommittables(transaction.getNewObjects());
@@ -3674,15 +3667,6 @@
for (CDOObject newObject : newObjects.values())
{
revisions.add(newObject.cdoRevision());
-
- CDOLockState lockState = getLockState(newObject);
- if (lockState != null)
- {
- if (!options.isEffectiveAutoReleaseLock(newObject))
- {
- locksOnNewObjects.add(lockState);
- }
- }
}
revisionDeltas = filterCommittables(transaction.getRevisionDeltas());
@@ -3716,16 +3700,8 @@
dirtyObjects = filterCommittables(transaction.getDirtyObjects());
- for (CDOObject lockedObject : getLockStates().keySet())
- {
- if (!FSMUtil.isTransient(lockedObject))
- {
- if (options.isEffectiveAutoReleaseLock(lockedObject))
- {
- idsToUnlock.add(lockedObject.cdoID());
- }
- }
- }
+ CDOLockState[] locksOnNewObjectsArray = getLockStates(newObjects.keySet(), false);
+ locksOnNewObjects = Arrays.asList(locksOnNewObjectsArray);
commitData = CDOCommitInfoUtil.createCommitData(newPackageUnits, revisions, deltas, detached);
}
@@ -3781,6 +3757,11 @@
return isPartialCommit;
}
+ public boolean isAutoReleaseLocks()
+ {
+ return transaction.options().isAutoReleaseLocksEnabled();
+ }
+
public String getCommitComment()
{
return transaction.getCommitComment();
@@ -3806,6 +3787,11 @@
return commitData.getNewPackageUnits();
}
+ public Collection<CDOLockState> getLocksOnNewObjects()
+ {
+ return locksOnNewObjects;
+ }
+
public Map<CDOID, CDOObject> getDetachedObjects()
{
return detachedObjects;
@@ -3821,22 +3807,6 @@
return lobs.values();
}
- @Deprecated
- public boolean isAutoReleaseLocks()
- {
- return transaction.options().isAutoReleaseLocksEnabled();
- }
-
- public Collection<CDOLockState> getLocksOnNewObjects()
- {
- return locksOnNewObjects;
- }
-
- public List<CDOID> getIDsToUnlock()
- {
- return idsToUnlock;
- }
-
public void preCommit()
{
if (isDirty())
@@ -4021,26 +3991,10 @@
fireEvent(new FinishedEvent(idMappings), listeners);
}
- Map<CDOObject, CDOLockState> lockStates = getLockStates();
- if (!lockStates.isEmpty())
+ CDOLockState[] newLockStates = result.getNewLockStates();
+ if (newLockStates != null)
{
- List<CDOLockState> objectsToUnlock = new ArrayList<CDOLockState>();
-
- for (Map.Entry<CDOObject, CDOLockState> entry : lockStates.entrySet())
- {
- CDOObject object = entry.getKey();
- if (options().isEffectiveAutoReleaseLock(object))
- {
- InternalCDOLockState lockState = (InternalCDOLockState)entry.getValue();
- lockState.updateFrom(InternalCDOLockState.UNLOCKED);
-
- objectsToUnlock.add(lockState);
- }
- }
-
- CDOLockState[] newLockStates = objectsToUnlock.toArray(new CDOLockState[objectsToUnlock.size()]);
- notifyOtherViewsAboutLockChanges(CDOLockChangeInfo.Operation.UNLOCK, null, result.getTimeStamp(),
- newLockStates);
+ updateAndNotifyLockStates(CDOLockChangeInfo.Operation.UNLOCK, null, result.getTimeStamp(), newLockStates);
}
}
catch (RuntimeException ex)
@@ -4221,14 +4175,12 @@
{
private CDOUndoDetector undoDetector = DEFAULT_UNDO_DETECTOR;
- private final List<CDOConflictResolver> conflictResolvers = new ArrayList<CDOConflictResolver>();
+ private List<CDOConflictResolver> conflictResolvers = new ArrayList<CDOConflictResolver>();
private CDOStaleReferenceCleaner staleReferenceCleaner = CDOStaleReferenceCleaner.DEFAULT;
private boolean autoReleaseLocksEnabled = true;
- private final Map<EObject, Boolean> autoReleaseLocksExemptions = new WeakHashMap<EObject, Boolean>();
-
private long commitInfoTimeout = DEFAULT_COMMIT_INFO_TIMEOUT;
public OptionsImpl()
@@ -4462,7 +4414,7 @@
if (autoReleaseLocksEnabled != on)
{
autoReleaseLocksEnabled = on;
- event = new AutoReleaseLocksEnabledEventImpl();
+ event = new AutoReleaseLocksEventImpl();
}
}
finally
@@ -4474,157 +4426,6 @@
fireEvent(event);
}
- public Set<? extends EObject> getAutoReleaseLocksExemptions()
- {
- synchronized (getViewMonitor())
- {
- lockView();
-
- try
- {
- return new HashSet<EObject>(autoReleaseLocksExemptions.keySet());
- }
- finally
- {
- unlockView();
- }
- }
- }
-
- public boolean isAutoReleaseLocksExemption(EObject object)
- {
- synchronized (getViewMonitor())
- {
- lockView();
-
- try
- {
- return autoReleaseLocksExemptions.get(CDOUtil.getCDOObject(object)) == Boolean.TRUE;
- }
- finally
- {
- unlockView();
- }
- }
- }
-
- public void clearAutoReleaseLocksExemptions()
- {
- checkActive();
-
- IEvent event = null;
- synchronized (getViewMonitor())
- {
- lockView();
-
- try
- {
- if (!autoReleaseLocksExemptions.isEmpty())
- {
- autoReleaseLocksExemptions.clear();
- event = new AutoReleaseLocksExemptionsEventImpl();
- }
- }
- finally
- {
- unlockView();
- }
- }
-
- fireEvent(event);
- }
-
- public void addAutoReleaseLocksExemptions(boolean recursive, EObject... objects)
- {
- checkActive();
-
- IEvent event = null;
- synchronized (getViewMonitor())
- {
- lockView();
-
- try
- {
- for (EObject object : objects)
- {
- if (autoReleaseLocksExemptions.put(CDOUtil.getCDOObject(object), Boolean.TRUE) == null)
- {
- event = new AutoReleaseLocksExemptionsEventImpl();
- }
-
- if (recursive)
- {
- for (TreeIterator<EObject> it = object.eAllContents(); it.hasNext();)
- {
- EObject child = it.next();
- if (autoReleaseLocksExemptions.put(CDOUtil.getCDOObject(child), Boolean.TRUE) == null && event == null)
- {
- event = new AutoReleaseLocksExemptionsEventImpl();
- }
- }
- }
- }
- }
- finally
- {
- unlockView();
- }
- }
-
- fireEvent(event);
- }
-
- public void removeAutoReleaseLocksExemptions(boolean recursive, EObject... objects)
- {
- checkActive();
-
- IEvent event = null;
- synchronized (getViewMonitor())
- {
- lockView();
-
- try
- {
- for (EObject object : objects)
- {
- if (autoReleaseLocksExemptions.remove(CDOUtil.getCDOObject(object)) != null)
- {
- event = new AutoReleaseLocksExemptionsEventImpl();
- }
-
- if (recursive)
- {
- for (TreeIterator<EObject> it = object.eAllContents(); it.hasNext();)
- {
- EObject child = it.next();
- if (autoReleaseLocksExemptions.remove(CDOUtil.getCDOObject(child)) != null && event == null)
- {
- event = new AutoReleaseLocksExemptionsEventImpl();
- }
- }
- }
- }
- }
- finally
- {
- unlockView();
- }
- }
-
- fireEvent(event);
- }
-
- public boolean isEffectiveAutoReleaseLock(CDOObject newObject)
- {
- boolean effectiveAutoReleaseLock = autoReleaseLocksEnabled;
- if (autoReleaseLocksExemptions.containsKey(newObject))
- {
- effectiveAutoReleaseLock = !effectiveAutoReleaseLock;
- }
-
- return effectiveAutoReleaseLock;
- }
-
public long getCommitInfoTimeout()
{
return commitInfoTimeout;
@@ -4698,25 +4499,11 @@
/**
* @author Eike Stepper
*/
- private final class AutoReleaseLocksEnabledEventImpl extends OptionsEvent implements AutoReleaseLocksEnabledEvent
+ private final class AutoReleaseLocksEventImpl extends OptionsEvent implements AutoReleaseLocksEvent
{
private static final long serialVersionUID = 1L;
- public AutoReleaseLocksEnabledEventImpl()
- {
- super(OptionsImpl.this);
- }
- }
-
- /**
- * @author Eike Stepper
- */
- private final class AutoReleaseLocksExemptionsEventImpl extends OptionsEvent
- implements AutoReleaseLocksExemptionsEvent
- {
- private static final long serialVersionUID = 1L;
-
- public AutoReleaseLocksExemptionsEventImpl()
+ public AutoReleaseLocksEventImpl()
{
super(OptionsImpl.this);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOUndoDetectorImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOUndoDetectorImpl.java
index 3f29900..eb1fe86 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOUndoDetectorImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOUndoDetectorImpl.java
@@ -94,7 +94,7 @@
}
/**
- * @deprecated As of 4.5 {@link #detectUndo(CDOTransaction, CDORevision, CDORevision, CDOFeatureDelta)} is called.
+ * @deprecated As of CDO 4.5 {@link #detectUndo(CDOTransaction, CDORevision, CDORevision, CDOFeatureDelta)} is called.
*/
@Deprecated
protected boolean detectUndoContainer(InternalCDORevision cleanRevision, InternalCDORevision currentRevision)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java
index 0f1dd2f..e475279 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXACommitContextImpl.java
@@ -119,6 +119,11 @@
return delegateCommitContext.getTransaction();
}
+ public boolean isAutoReleaseLocks()
+ {
+ return delegateCommitContext.isAutoReleaseLocks();
+ }
+
public boolean isPartialCommit()
{
return delegateCommitContext.isPartialCommit();
@@ -154,6 +159,11 @@
return delegateCommitContext.getNewPackageUnits();
}
+ public Collection<CDOLockState> getLocksOnNewObjects()
+ {
+ return delegateCommitContext.getLocksOnNewObjects();
+ }
+
public Map<CDOID, CDOObject> getDetachedObjects()
{
return delegateCommitContext.getDetachedObjects();
@@ -169,22 +179,6 @@
return delegateCommitContext.getLobs();
}
- @Deprecated
- public boolean isAutoReleaseLocks()
- {
- return delegateCommitContext.isAutoReleaseLocks();
- }
-
- public Collection<CDOLockState> getLocksOnNewObjects()
- {
- return delegateCommitContext.getLocksOnNewObjects();
- }
-
- public Collection<CDOID> getIDsToUnlock()
- {
- return delegateCommitContext.getIDsToUnlock();
- }
-
public Object call() throws Exception
{
state.handle(this, progressMonitor);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
index 814dcf4..694efef 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
@@ -99,7 +99,6 @@
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.NotificationChain;
-import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -122,7 +121,6 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -363,16 +361,6 @@
{
CDOLockState lockState = createUpdatedLockStateForNewObject(object, lockType, true);
locksOnNewObjects.add(lockState);
-
- if (recursive)
- {
- for (TreeIterator<EObject> it = object.eAllContents(); it.hasNext();)
- {
- CDOObject child = CDOUtil.getCDOObject(it.next());
- lockState = createUpdatedLockStateForNewObject(child, lockType, true);
- locksOnNewObjects.add(lockState);
- }
- }
}
else
{
@@ -441,13 +429,8 @@
}
}
- int locksOnNewObjectsCount = locksOnNewObjects.size();
- if (locksOnNewObjectsCount != 0)
- {
- CDOLockState[] locksOnNewObjectsArray = locksOnNewObjects.toArray(new CDOLockState[locksOnNewObjectsCount]);
- // updateLockStates(locksOnNewObjectsArray);
- updateAndNotifyLockStates(Operation.LOCK, lockType, getTimeStamp(), locksOnNewObjectsArray);
- }
+ CDOLockState[] locksOnNewObjectsArray = locksOnNewObjects.toArray(new CDOLockState[locksOnNewObjects.size()]);
+ updateLockStates(locksOnNewObjectsArray);
if (result != null)
{
@@ -526,8 +509,7 @@
/**
* Notifies other views of lock changes performed in this view
*/
- protected void notifyOtherViewsAboutLockChanges(Operation op, LockType type, long timestamp,
- CDOLockState[] lockStates)
+ private void notifyOtherViewsAboutLockChanges(Operation op, LockType type, long timestamp, CDOLockState[] lockStates)
{
if (lockStates.length > 0)
{
@@ -655,16 +637,6 @@
{
CDOLockState lockState = createUpdatedLockStateForNewObject(object, lockType, false);
locksOnNewObjects.add(lockState);
-
- if (recursive)
- {
- for (TreeIterator<EObject> it = object.eAllContents(); it.hasNext();)
- {
- CDOObject child = CDOUtil.getCDOObject(it.next());
- lockState = createUpdatedLockStateForNewObject(child, lockType, false);
- locksOnNewObjects.add(lockState);
- }
- }
}
else
{
@@ -1012,69 +984,83 @@
try
{
- List<CDOLockState> result = new ArrayList<CDOLockState>();
- List<CDOLockState> lockStatesToUpdate = new ArrayList<CDOLockState>();
- Set<CDOID> missingIDs = new LinkedHashSet<CDOID>();
+ List<CDOID> missing = new LinkedList<CDOID>();
+ List<CDOLockState> lockStates = new LinkedList<CDOLockState>();
+ List<CDOLockState> locksOnNewObjects = new ArrayList<CDOLockState>(ids.size());
for (CDOID id : ids)
{
+ CDOLockState lockState = null;
InternalCDOObject object = getObject(id, false);
if (object != null)
{
- CDOLockState lockState = lockStates.get(object);
- if (lockState != null)
- {
- result.add(lockState);
- continue;
- }
-
- if (loadOnDemand && FSMUtil.isNew(object))
- {
- Object lockTarget = getLockTarget(this, id);
- CDOLockState newLockState = CDOLockUtil.createLockState(lockTarget);
-
- result.add(newLockState);
- lockStatesToUpdate.add(newLockState);
- continue;
- }
+ lockState = this.lockStates.get(object);
}
- missingIDs.add(id);
+ if (lockState != null)
+ {
+ lockStates.add(lockState);
+ }
+ else if (loadOnDemand && object != null && FSMUtil.isNew(object))
+ {
+ Object lockedObject = getLockTarget(object); // CDOID or CDOIDAndBranch
+ CDOLockState defaultLockState = CDOLockUtil.createLockState(lockedObject);
+ locksOnNewObjects.add(defaultLockState);
+ lockStates.add(defaultLockState);
+ }
+ else
+ {
+ missing.add(id);
+ }
}
- if (loadOnDemand && (!missingIDs.isEmpty() || ids.isEmpty()))
+ if (loadOnDemand && (missing.size() > 0 || ids.isEmpty()))
{
CDOSessionProtocol sessionProtocol = session.getSessionProtocol();
- CDOLockState[] loadedLockStates = sessionProtocol.getLockStates(viewID, missingIDs, CDOLockState.DEPTH_NONE);
-
+ CDOLockState[] loadedLockStates = sessionProtocol.getLockStates(viewID, missing, CDOLockState.DEPTH_NONE);
+ List<CDOLockState> newLockStateForCache = new ArrayList<CDOLockState>(
+ loadedLockStates.length + missing.size());
for (CDOLockState loadedLockState : loadedLockStates)
{
- result.add(loadedLockState);
- lockStatesToUpdate.add(loadedLockState);
+ lockStates.add(loadedLockState);
+ newLockStateForCache.add(loadedLockState);
- CDOID id = CDOIDUtil.getCDOID(loadedLockState.getLockedObject());
- if (id != null)
+ CDOID cdoID = CDOIDUtil.getCDOID(loadedLockState.getLockedObject());
+ if (cdoID != null)
{
- missingIDs.remove(id);
+ missing.remove(cdoID);
}
}
- for (CDOID missingID : missingIDs)
+ for (CDOID missingLockStateForCDOID : missing)
{
- Object lockTarget = getLockTarget(this, missingID);
- CDOLockState defaultLockState = CDOLockUtil.createLockState(lockTarget);
+ Object target;
- result.add(defaultLockState);
- lockStatesToUpdate.add(defaultLockState);
+ InternalCDOObject object = getObject(missingLockStateForCDOID, false);
+ if (object != null)
+ {
+ target = getLockTarget(object); // CDOID or CDOIDAndBranch
+ }
+ else
+ {
+ target = missingLockStateForCDOID;
+ }
+
+ CDOLockState defaultLockState = CDOLockUtil.createLockState(target);
+ lockStates.add(defaultLockState);
+ newLockStateForCache.add(defaultLockState);
+ }
+
+ if (options().isLockNotificationEnabled())
+ {
+ updateLockStates(newLockStateForCache.toArray(new CDOLockState[newLockStateForCache.size()]));
}
}
- if (!lockStatesToUpdate.isEmpty())
- {
- updateLockStates(lockStatesToUpdate.toArray(new CDOLockState[lockStatesToUpdate.size()]));
- }
+ CDOLockState[] locksOnNewObjectsArray = locksOnNewObjects.toArray(new CDOLockState[locksOnNewObjects.size()]);
+ updateLockStates(locksOnNewObjectsArray);
- return result.toArray(new CDOLockState[result.size()]);
+ return lockStates.toArray(new CDOLockState[lockStates.size()]);
}
finally
{
@@ -1093,11 +1079,6 @@
return lockStates.get(object);
}
- protected Map<CDOObject, CDOLockState> getLockStates()
- {
- return lockStates;
- }
-
private CDOBranchPoint getBranchPointForID(CDOID id)
{
// If this view's timestamp is something other than UNSPECIFIED_DATE,
@@ -1841,12 +1822,8 @@
}
CDOID id = object.cdoID();
- return getLockTarget(view, id);
- }
-
- protected static Object getLockTarget(CDOView view, CDOID id)
- {
- if (view.getSession().getRepositoryInfo().isSupportingBranches())
+ boolean branching = view.getSession().getRepositoryInfo().isSupportingBranches();
+ if (branching)
{
return CDOIDUtil.createIDAndBranch(id, view.getBranch());
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/ViewProperties.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/ViewProperties.java
index 738e562..70d0dc1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/ViewProperties.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/ViewProperties.java
@@ -13,7 +13,6 @@
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.util.CDOCommonUtil;
-import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.StringUtil;
@@ -58,13 +57,13 @@
});
add(new Property<CDOView>("branchName") //$NON-NLS-1$
- {
+ {
@Override
protected Object eval(CDOView view)
{
return view.getBranch().getName();
}
- });
+ });
add(new Property<CDOView>("branch", //$NON-NLS-1$
"Branch", "The branch of this view.", CATEGORY_VIEW)
@@ -167,27 +166,13 @@
});
add(new Property<CDOView>("historical") //$NON-NLS-1$
- {
+ {
@Override
protected Object eval(CDOView view)
{
return view.getTimeStamp() != CDOBranchPoint.UNSPECIFIED_DATE;
}
- });
-
- add(new Property<CDOView>("autoReleaseLocks") //$NON-NLS-1$
- {
- @Override
- protected Object eval(CDOView view)
- {
- if (view instanceof CDOTransaction)
- {
- return ((CDOTransaction)view).options().isAutoReleaseLocksEnabled();
- }
-
- return false;
- }
- });
+ });
}
public static void main(String[] args)
diff --git a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF
index 55a3c2d..a1071bf 100644
--- a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j.util;singleton:=true
-Bundle-Version: 3.7.0.qualifier
+Bundle-Version: 3.6.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -15,34 +15,34 @@
org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional,
org.osgi.service.log;version="[1.3.0,2.0.0)";resolution:=optional,
org.osgi.util.tracker;version="[1.3.0,2.0.0)";resolution:=optional
-Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.7.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests",
- org.eclipse.net4j.internal.util.container;version="3.7.0";x-friends:="org.eclipse.net4j.util.defs",
- org.eclipse.net4j.internal.util.factory;version="3.7.0";x-friends:="org.eclipse.net4j.util.defs",
- org.eclipse.net4j.internal.util.om;version="3.7.0";x-friends:="org.eclipse.net4j.util.defs",
- org.eclipse.net4j.internal.util.om.pref;version="3.7.0";x-friends:="org.eclipse.net4j.util.defs",
- org.eclipse.net4j.internal.util.table;version="3.7.0";x-internal:=true,
- org.eclipse.net4j.internal.util.test;version="3.7.0";x-friends:="org.eclipse.net4j.tests",
- org.eclipse.net4j.util;version="3.7.0",
- org.eclipse.net4j.util.cache;version="3.7.0",
- org.eclipse.net4j.util.collection;version="3.7.0",
- org.eclipse.net4j.util.concurrent;version="3.7.0",
- org.eclipse.net4j.util.confirmation;version="3.7.0",
- org.eclipse.net4j.util.container;version="3.7.0",
- org.eclipse.net4j.util.container.delegate;version="3.7.0",
- org.eclipse.net4j.util.event;version="3.7.0",
- org.eclipse.net4j.util.factory;version="3.7.0",
- org.eclipse.net4j.util.fsm;version="3.7.0",
- org.eclipse.net4j.util.io;version="3.7.0",
- org.eclipse.net4j.util.lifecycle;version="3.7.0",
- org.eclipse.net4j.util.om;version="3.7.0",
- org.eclipse.net4j.util.om.log;version="3.7.0",
- org.eclipse.net4j.util.om.monitor;version="3.7.0",
- org.eclipse.net4j.util.om.pref;version="3.7.0",
- org.eclipse.net4j.util.om.trace;version="3.7.0",
- org.eclipse.net4j.util.options;version="3.7.0",
- org.eclipse.net4j.util.properties;version="3.7.0",
- org.eclipse.net4j.util.ref;version="3.7.0",
- org.eclipse.net4j.util.registry;version="3.7.0",
- org.eclipse.net4j.util.security;version="3.7.0",
- org.eclipse.net4j.util.transaction;version="3.7.0"
+Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.6.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests",
+ org.eclipse.net4j.internal.util.container;version="3.6.0";x-friends:="org.eclipse.net4j.util.defs",
+ org.eclipse.net4j.internal.util.factory;version="3.6.0";x-friends:="org.eclipse.net4j.util.defs",
+ org.eclipse.net4j.internal.util.om;version="3.6.0";x-friends:="org.eclipse.net4j.util.defs",
+ org.eclipse.net4j.internal.util.om.pref;version="3.6.0";x-friends:="org.eclipse.net4j.util.defs",
+ org.eclipse.net4j.internal.util.table;version="3.6.0";x-internal:=true,
+ org.eclipse.net4j.internal.util.test;version="3.6.0";x-friends:="org.eclipse.net4j.tests",
+ org.eclipse.net4j.util;version="3.6.0",
+ org.eclipse.net4j.util.cache;version="3.6.0",
+ org.eclipse.net4j.util.collection;version="3.6.0",
+ org.eclipse.net4j.util.concurrent;version="3.6.0",
+ org.eclipse.net4j.util.confirmation;version="3.6.0",
+ org.eclipse.net4j.util.container;version="3.6.0",
+ org.eclipse.net4j.util.container.delegate;version="3.6.0",
+ org.eclipse.net4j.util.event;version="3.6.0",
+ org.eclipse.net4j.util.factory;version="3.6.0",
+ org.eclipse.net4j.util.fsm;version="3.6.0",
+ org.eclipse.net4j.util.io;version="3.6.0",
+ org.eclipse.net4j.util.lifecycle;version="3.6.0",
+ org.eclipse.net4j.util.om;version="3.6.0",
+ org.eclipse.net4j.util.om.log;version="3.6.0",
+ org.eclipse.net4j.util.om.monitor;version="3.6.0",
+ org.eclipse.net4j.util.om.pref;version="3.6.0",
+ org.eclipse.net4j.util.om.trace;version="3.6.0",
+ org.eclipse.net4j.util.options;version="3.6.0",
+ org.eclipse.net4j.util.properties;version="3.6.0",
+ org.eclipse.net4j.util.ref;version="3.6.0",
+ org.eclipse.net4j.util.registry;version="3.6.0",
+ org.eclipse.net4j.util.security;version="3.6.0",
+ org.eclipse.net4j.util.transaction;version="3.6.0"
Eclipse-BuddyPolicy: registered
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/HashBag.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/HashBag.java
index 7e9e087..6a3ff3a 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/HashBag.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/HashBag.java
@@ -57,20 +57,6 @@
return counter.getValue();
}
- /**
- * @since 3.7
- */
- public int removeCounterFor(T o)
- {
- Counter counter = map.remove(o);
- if (counter == null)
- {
- return 0;
- }
-
- return counter.getValue();
- }
-
public boolean add(T o)
{
return add(o, 1);
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/RWOLockManager.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/RWOLockManager.java
index 565ba79..437445d 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/RWOLockManager.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/RWOLockManager.java
@@ -40,8 +40,6 @@
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_CONCURRENCY, RWOLockManager.class);
- private static final ThreadLocal<Boolean> UNLOCK_ALL = new ThreadLocal<Boolean>();
-
private final List<LockState<OBJECT, CONTEXT>> EMPTY_RESULT = Collections.emptyList();
private final Map<OBJECT, LockState<OBJECT, CONTEXT>> objectToLockStateMap = createObjectToLocksMap();
@@ -108,7 +106,7 @@
lock(type, context, Collections.singleton(objectToLock), timeout);
}
- public void unlock(LockType type, CONTEXT context, Collection<? extends OBJECT> objectsToUnlock)
+ public synchronized void unlock(LockType type, CONTEXT context, Collection<? extends OBJECT> objectsToUnlock)
{
unlock2(type, context, objectsToUnlock);
}
@@ -116,18 +114,6 @@
public synchronized List<LockState<OBJECT, CONTEXT>> unlock2(CONTEXT context,
Collection<? extends OBJECT> objectsToUnlock)
{
- return unlock2(LockType.values(), context, objectsToUnlock);
- }
-
- public synchronized List<LockState<OBJECT, CONTEXT>> unlock2(LockType type, CONTEXT context,
- Collection<? extends OBJECT> objectsToUnlock)
- {
- return unlock2(new LockType[] { type }, context, objectsToUnlock);
- }
-
- private List<LockState<OBJECT, CONTEXT>> unlock2(LockType[] types, CONTEXT context,
- Collection<? extends OBJECT> objectsToUnlock)
- {
if (objectsToUnlock.isEmpty())
{
return EMPTY_RESULT;
@@ -135,34 +121,76 @@
if (TRACER.isEnabled())
{
- TRACER.format("Unlock: {0} --> {1}", context, objectsToUnlock); //$NON-NLS-1$
+ TRACER.format("Unlock : {0} --> {1}", objectsToUnlock, context); //$NON-NLS-1$
}
- Set<LockState<OBJECT, CONTEXT>> result = new HashSet<LockState<OBJECT, CONTEXT>>();
+ Set<LockState<OBJECT, CONTEXT>> lockStates = new HashSet<LockState<OBJECT, CONTEXT>>();
- for (OBJECT o : objectsToUnlock)
+ Iterator<? extends OBJECT> it = objectsToUnlock.iterator();
+ while (it.hasNext())
{
+ OBJECT o = it.next();
LockState<OBJECT, CONTEXT> lockState = objectToLockStateMap.get(o);
- if (lockState != null)
- {
- for (LockType type : types)
- {
- while (lockState.canUnlock(type, context))
- {
- lockState.unlock(type, context);
- result.add(lockState);
- if (UNLOCK_ALL.get() != Boolean.TRUE)
- {
- break;
- }
- }
+ if (lockState == null)
+ {
+ continue;
+ }
+
+ for (LockType lockType : LockType.values())
+ {
+ while (lockState.canUnlock(lockType, context))
+ {
+ lockState.unlock(lockType, context);
+ lockStates.add(lockState);
}
}
}
- for (LockState<OBJECT, CONTEXT> lockState : result)
+ for (LockState<OBJECT, CONTEXT> lockState : lockStates)
{
+ removeLockStateForContext(context, lockState);
+
+ if (lockState.hasNoLocks())
+ {
+ objectToLockStateMap.remove(lockState.getLockedObject());
+ }
+ }
+
+ notifyAll();
+
+ return new LinkedList<RWOLockManager.LockState<OBJECT, CONTEXT>>(lockStates);
+ }
+
+ public synchronized List<LockState<OBJECT, CONTEXT>> unlock2(LockType type, CONTEXT context,
+ Collection<? extends OBJECT> objectsToUnlock)
+ {
+ if (objectsToUnlock.isEmpty())
+ {
+ return EMPTY_RESULT;
+ }
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Unlock", objectsToUnlock, context); //$NON-NLS-1$
+ }
+
+ List<LockState<OBJECT, CONTEXT>> lockStates = new LinkedList<LockState<OBJECT, CONTEXT>>();
+
+ Iterator<? extends OBJECT> it = objectsToUnlock.iterator();
+ while (it.hasNext())
+ {
+ OBJECT o = it.next();
+ LockState<OBJECT, CONTEXT> lockState = objectToLockStateMap.get(o);
+ if (lockState != null && lockState.canUnlock(type, context))
+ {
+ lockStates.add(lockState);
+ }
+ }
+
+ for (LockState<OBJECT, CONTEXT> lockState : lockStates)
+ {
+ lockState.unlock(type, context);
if (!lockState.hasLocks(context))
{
removeLockStateForContext(context, lockState);
@@ -176,7 +204,7 @@
notifyAll();
- return new LinkedList<RWOLockManager.LockState<OBJECT, CONTEXT>>(result);
+ return lockStates;
}
public synchronized void unlock(CONTEXT context)
@@ -201,11 +229,11 @@
for (LockState<OBJECT, CONTEXT> lockState : lockStates)
{
- for (LockType type : LockType.values())
+ for (LockType lockType : LockType.values())
{
- while (lockState.hasLock(type, context, false))
+ while (lockState.hasLock(lockType, context, false))
{
- lockState.unlock(type, context);
+ lockState.unlock(lockType, context);
}
}
@@ -414,22 +442,6 @@
wait(waitTime);
}
-
- }
-
- /**
- * @since 3.7
- */
- public static void setUnlockAll(boolean on)
- {
- if (on)
- {
- UNLOCK_ALL.set(Boolean.TRUE);
- }
- else
- {
- UNLOCK_ALL.remove();
- }
}
/**
@@ -470,7 +482,8 @@
return lockedObject;
}
- public boolean hasLock(LockType type, CONTEXT view, boolean byOthers)
+ public boolean hasLock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, CONTEXT view,
+ boolean byOthers)
{
CheckUtil.checkArg(view, "view");
@@ -504,7 +517,7 @@
return false;
}
- public boolean hasLock(LockType type)
+ public boolean hasLock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type)
{
switch (type)
{
@@ -521,49 +534,6 @@
return false;
}
- public Set<CONTEXT> getReadLockOwners()
- {
- return Collections.unmodifiableSet(readLockOwners);
- }
-
- public CONTEXT getWriteLockOwner()
- {
- return writeLockOwner;
- }
-
- public CONTEXT getWriteOptionOwner()
- {
- return writeOptionOwner;
- }
-
- @Override
- public int hashCode()
- {
- return lockedObject.hashCode();
- }
-
- @Override
- public boolean equals(Object obj)
- {
- if (this == obj)
- {
- return true;
- }
-
- if (obj == null)
- {
- return false;
- }
-
- if (!(obj instanceof LockState))
- {
- return false;
- }
-
- LockState<?, ?> other = (LockState<?, ?>)obj;
- return lockedObject.equals(other.lockedObject);
- }
-
@Override
public String toString()
{
@@ -838,5 +808,20 @@
{
writeOptionOwner = null;
}
+
+ public Set<CONTEXT> getReadLockOwners()
+ {
+ return Collections.unmodifiableSet(readLockOwners);
+ }
+
+ public CONTEXT getWriteLockOwner()
+ {
+ return writeLockOwner;
+ }
+
+ public CONTEXT getWriteOptionOwner()
+ {
+ return writeOptionOwner;
+ }
}
}
diff --git a/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF
index 4f83a32..67e3c0d 100644
--- a/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j;singleton:=true
-Bundle-Version: 4.6.0.qualifier
+Bundle-Version: 4.5.0.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -11,7 +11,7 @@
Bundle-ClassPath: .
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)";visibility:=reexport
-Export-Package: org.eclipse.internal.net4j;version="4.6.0";
+Export-Package: org.eclipse.internal.net4j;version="4.5.0";
x-friends:="org.eclipse.net4j.http.server,
org.eclipse.net4j.jvm,
org.eclipse.net4j.tcp,
@@ -20,7 +20,7 @@
org.eclipse.net4j.http.tests,
org.eclipse.net4j.tests,
org.eclipse.net4j.defs",
- org.eclipse.internal.net4j.buffer;version="4.6.0";
+ org.eclipse.internal.net4j.buffer;version="4.5.0";
x-friends:="org.eclipse.net4j.http.server,
org.eclipse.net4j.jvm,
org.eclipse.net4j.tcp,
@@ -29,17 +29,17 @@
org.eclipse.net4j.http.tests,
org.eclipse.net4j.tests,
org.eclipse.net4j.defs",
- org.eclipse.internal.net4j.bundle;version="4.6.0";x-internal:=true,
- org.eclipse.net4j;version="4.6.0",
- org.eclipse.net4j.acceptor;version="4.6.0",
- org.eclipse.net4j.buffer;version="4.6.0",
- org.eclipse.net4j.channel;version="4.6.0",
- org.eclipse.net4j.connector;version="4.6.0",
- org.eclipse.net4j.protocol;version="4.6.0",
- org.eclipse.net4j.signal;version="4.6.0",
- org.eclipse.net4j.signal.confirmation;version="4.6.0",
- org.eclipse.net4j.signal.heartbeat;version="4.6.0",
- org.eclipse.net4j.signal.security;version="4.6.0",
- org.eclipse.net4j.signal.wrapping;version="4.6.0",
- org.eclipse.spi.net4j;version="4.6.0"
+ org.eclipse.internal.net4j.bundle;version="4.5.0";x-internal:=true,
+ org.eclipse.net4j;version="4.5.0",
+ org.eclipse.net4j.acceptor;version="4.5.0",
+ org.eclipse.net4j.buffer;version="4.5.0",
+ org.eclipse.net4j.channel;version="4.5.0",
+ org.eclipse.net4j.connector;version="4.5.0",
+ org.eclipse.net4j.protocol;version="4.5.0",
+ org.eclipse.net4j.signal;version="4.5.0",
+ org.eclipse.net4j.signal.confirmation;version="4.5.0",
+ org.eclipse.net4j.signal.heartbeat;version="4.5.0",
+ org.eclipse.net4j.signal.security;version="4.5.0",
+ org.eclipse.net4j.signal.wrapping;version="4.5.0",
+ org.eclipse.spi.net4j;version="4.5.0"
Eclipse-BuddyPolicy: registered
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalCounter.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalCounter.java
index be525cb..7a5f654 100644
--- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalCounter.java
+++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalCounter.java
@@ -25,11 +25,8 @@
{
private HashBag<Class<? extends Signal>> signals = new HashBag<Class<? extends Signal>>();
- private final ISignalProtocol<?> protocol;
-
public SignalCounter()
{
- protocol = null;
}
/**
@@ -37,11 +34,14 @@
*/
public SignalCounter(ISignalProtocol<?> protocol)
{
- this.protocol = protocol;
+ protocol.addListener(this);
+ }
- if (protocol != null)
+ public int getCountFor(Class<? extends Signal> signal)
+ {
+ synchronized (signals)
{
- protocol.addListener(this);
+ return signals.getCounterFor(signal);
}
}
@@ -58,25 +58,6 @@
}
}
- public int getCountFor(Class<? extends Signal> signal)
- {
- synchronized (signals)
- {
- return signals.getCounterFor(signal);
- }
- }
-
- /**
- * @since 4.6
- */
- public int removeCountFor(Class<? extends Signal> signal)
- {
- synchronized (signals)
- {
- return signals.removeCounterFor(signal);
- }
- }
-
public void clearCounts()
{
synchronized (signals)
@@ -96,15 +77,4 @@
}
}
}
-
- /**
- * @since 4.6
- */
- public void dispose()
- {
- if (protocol != null)
- {
- protocol.removeListener(this);
- }
- }
}