Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2021-11-11 09:34:12 +0000
committerEike Stepper2021-11-11 09:34:12 +0000
commitb4680058cda64772b04b124f8ee3afde01f241ae (patch)
tree321e4683e021b2a88d98a175b994204733e38a14 /plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf
parent1723ee940e491a30b2ed57cfd0f31a6b19075ff0 (diff)
downloadcdo-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.java18
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;
}

Back to the top