diff options
author | Eike Stepper | 2021-11-11 09:34:12 +0000 |
---|---|---|
committer | Eike Stepper | 2021-11-11 09:34:12 +0000 |
commit | b4680058cda64772b04b124f8ee3afde01f241ae (patch) | |
tree | 321e4683e021b2a88d98a175b994204733e38a14 /plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf | |
parent | 1723ee940e491a30b2ed57cfd0f31a6b19075ff0 (diff) | |
download | cdo-b4680058cda64772b04b124f8ee3afde01f241ae.tar.gz cdo-b4680058cda64772b04b124f8ee3afde01f241ae.tar.xz cdo-b4680058cda64772b04b124f8ee3afde01f241ae.zip |
[577209] CDOLockOwner instances should be interned
https://bugs.eclipse.org/bugs/show_bug.cgi?id=577209
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/lock/CDOLockStateImpl.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/lock/CDOLockStateImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/lock/CDOLockStateImpl.java index 08d0d7a173..991bf055c0 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/lock/CDOLockStateImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/lock/CDOLockStateImpl.java @@ -18,10 +18,12 @@ import org.eclipse.emf.cdo.common.lock.CDOLockUtil; import org.eclipse.emf.cdo.common.revision.CDOIDAndBranch; import org.eclipse.emf.cdo.spi.common.lock.InternalCDOLockState; +import org.eclipse.net4j.util.CheckUtil; import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType; import java.util.Collections; import java.util.HashSet; +import java.util.Objects; import java.util.Set; /** @@ -43,6 +45,7 @@ public class CDOLockStateImpl implements InternalCDOLockState { assert lockedObject instanceof CDOID || lockedObject instanceof CDOIDAndBranch : "lockedObject is of wrong type"; assert !CDOIDUtil.isNull(CDOLockUtil.getLockedObjectID(lockedObject)) : "lockedObject is null"; + CheckUtil.checkArg(lockedObject, "lockedObject"); this.lockedObject = lockedObject; } @@ -151,7 +154,7 @@ public class CDOLockStateImpl implements InternalCDOLockState return false; } - return writeLockOwner.equals(by) ^ others; + return writeLockOwner == by ^ others; } private boolean isOptionLocked(CDOLockOwner by, boolean others) @@ -161,13 +164,13 @@ public class CDOLockStateImpl implements InternalCDOLockState return false; } - return writeOptionOwner.equals(by) ^ others; + return writeOptionOwner == by ^ others; } @Override public Set<CDOLockOwner> getReadLockOwners() { - if (lockedObject == null || readLockOwners == null) + if (readLockOwners == null) { return NO_LOCK_OWNERS; } @@ -319,12 +322,17 @@ public class CDOLockStateImpl implements InternalCDOLockState return false; } - if (writeLockOwner != other.getWriteLockOwner()) + if (writeLockOwner != other.writeLockOwner) + { + return false; + } + + if (writeOptionOwner != other.writeOptionOwner) { return false; } - if (writeOptionOwner != other.getWriteOptionOwner()) + if (!Objects.equals(readLockOwners, other.readLockOwners)) { return false; } |