Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-02-21 07:57:11 +0000
committerEike Stepper2013-02-21 07:57:11 +0000
commitccc143cdbf937af334cb50a69582bb3f8899758e (patch)
tree978fb585501a9a86d4e98e03030bea7b3536eacc /plugins/org.eclipse.emf.cdo.common
parentcf49b7c79567c2428ecfca6d42867eda592cefca (diff)
downloadcdo-ccc143cdbf937af334cb50a69582bb3f8899758e.tar.gz
cdo-ccc143cdbf937af334cb50a69582bb3f8899758e.tar.xz
cdo-ccc143cdbf937af334cb50a69582bb3f8899758e.zip
[400892] Intern all CDOIDs
https://bugs.eclipse.org/bugs/show_bug.cgi?id=400892
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchPointImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchVersionImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOChangeSetDataImpl.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java213
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndBranchImpl.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndVersionImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheBranching.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheNonAuditing.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionKeyImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/branch/CDOBranchUtil.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetDataRevisionProvider.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetSegment.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDORevisionAvailabilityInfo.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java14
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/RevisionInfo.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/SyntheticCDORevision.java9
28 files changed, 127 insertions, 289 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java
index 8e1c6b7398..e305ff194e 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDUtil.java
@@ -36,7 +36,6 @@ import org.eclipse.emf.cdo.internal.common.revision.CDOIDAndVersionImpl;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOID;
import org.eclipse.emf.cdo.spi.common.id.InternalCDOIDObject;
-import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.UUIDGenerator;
import org.eclipse.net4j.util.io.ExtendedDataInput;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
@@ -44,6 +43,8 @@ import org.eclipse.net4j.util.om.trace.ContextTracer;
import java.io.IOException;
import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
/**
* Various static methods that may help with CDO {@link CDOID IDs}.
@@ -59,6 +60,11 @@ public final class CDOIDUtil
{
}
+ public static <V> Map<CDOID, V> createMap()
+ {
+ return new HashMap<CDOID, V>();
+ }
+
/**
* @since 4.0
*/
@@ -519,17 +525,22 @@ public final class CDOIDUtil
*/
public static boolean equals(CDOID id1, CDOID id2)
{
+ if (id1 == id2)
+ {
+ return true;
+ }
+
if (id1 == null)
{
- id1 = CDOID.NULL;
+ return id2 == CDOID.NULL;
}
if (id2 == null)
{
- id2 = CDOID.NULL;
+ return id1 == CDOID.NULL;
}
- return ObjectUtil.equals(id1, id2);
+ return false;
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
index 476f7b4e97..60c15c4154 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
@@ -347,7 +347,7 @@ public final class CDORevisionUtil
{
return null;
}
- else if (parentID.equals(revision.getID()))
+ else if (parentID == revision.getID())
{
// This must be the root resource!
return null;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java
index 3283cb40ab..f21899e9e8 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchImpl.java
@@ -280,18 +280,7 @@ public class CDOBranchImpl extends Container<CDOBranch> implements InternalCDOBr
@Override
public boolean equals(Object obj)
{
- if (obj == this)
- {
- return true;
- }
-
- if (obj instanceof CDOBranch)
- {
- CDOBranch that = (CDOBranch)obj;
- return id == that.getID();
- }
-
- return false;
+ return obj == this;
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchPointImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchPointImpl.java
index 93bc6909e7..52a725d4ed 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchPointImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchPointImpl.java
@@ -14,8 +14,6 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.util.CDOCommonUtil;
-import org.eclipse.net4j.util.ObjectUtil;
-
import java.text.MessageFormat;
/**
@@ -71,7 +69,7 @@ public class CDOBranchPointImpl implements CDOBranchPoint, Comparable<CDOBranchP
if (obj instanceof CDOBranchPoint)
{
CDOBranchPoint that = (CDOBranchPoint)obj;
- return ObjectUtil.equals(branch, that.getBranch()) && timeStamp == that.getTimeStamp();
+ return branch == that.getBranch() && timeStamp == that.getTimeStamp();
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchVersionImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchVersionImpl.java
index 1d5050875f..b662c8b635 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchVersionImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/branch/CDOBranchVersionImpl.java
@@ -13,8 +13,6 @@ package org.eclipse.emf.cdo.internal.common.branch;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
-import org.eclipse.net4j.util.ObjectUtil;
-
import java.text.MessageFormat;
/**
@@ -59,7 +57,7 @@ public class CDOBranchVersionImpl implements CDOBranchVersion
if (obj instanceof CDOBranchVersion)
{
CDOBranchVersion that = (CDOBranchVersion)obj;
- return ObjectUtil.equals(branch, that.getBranch()) && version == that.getVersion();
+ return branch == that.getBranch() && version == that.getVersion();
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOChangeSetDataImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOChangeSetDataImpl.java
index dd0694cead..33b53498dc 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOChangeSetDataImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOChangeSetDataImpl.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.internal.common.commit;
import org.eclipse.emf.cdo.common.commit.CDOChangeKind;
import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
@@ -24,7 +25,6 @@ import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -115,18 +115,18 @@ public class CDOChangeSetDataImpl implements CDOChangeSetData
public void merge(CDOChangeSetData changeSetData)
{
- Map<CDOID, CDOIDAndVersion> newMap = new HashMap<CDOID, CDOIDAndVersion>();
+ Map<CDOID, CDOIDAndVersion> newMap = CDOIDUtil.createMap();
fillMap(newMap, newObjects);
fillMap(newMap, changeSetData.getNewObjects());
- Map<CDOID, CDORevisionKey> changedMap = new HashMap<CDOID, CDORevisionKey>();
+ Map<CDOID, CDORevisionKey> changedMap = CDOIDUtil.createMap();
fillMap(changedMap, changedObjects);
for (CDORevisionKey key : changeSetData.getChangedObjects())
{
mergeChangedObject(key, newMap, changedMap);
}
- Map<CDOID, CDOIDAndVersion> detachedMap = new HashMap<CDOID, CDOIDAndVersion>();
+ Map<CDOID, CDOIDAndVersion> detachedMap = CDOIDUtil.createMap();
fillMap(detachedMap, detachedObjects);
for (CDOIDAndVersion key : changeSetData.getDetachedObjects())
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java
deleted file mode 100644
index 9e4cb8d1c7..0000000000
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/GenUtil.java
+++ /dev/null
@@ -1,213 +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:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.common.model;
-
-import org.eclipse.net4j.util.StringUtil;
-
-import org.eclipse.emf.ecore.EClassifier;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * @author Eike Stepper
- */
-public final class GenUtil
-{
- private GenUtil()
- {
- }
-
- /**
- * See GenGenBaseImpl.isPrimitiveType
- */
- public static boolean isPrimitiveType(EClassifier eType)
- {
- try
- {
- // J9 2.2 has problems assigning null to a Class variable.
- Object result = eType.getInstanceClass();
- if (result == null)
- {
- return false;
- }
-
- Class<?> instanceClass = (Class<?>)result;
- return instanceClass.isPrimitive();
- }
- catch (Exception e)
- {
- return false;
- }
- }
-
- /**
- * See GenFeatureImpl.getUpperName
- */
- public static String getFeatureUpperName(String featureName)
- {
- return format(featureName, '_', null, false, true).toUpperCase();
- }
-
- /**
- * See GenFeatureImpl.getGetAccessor
- */
- public static String getFeatureGetterName(String featureName, boolean isBooleanType)
- {
- String capName = StringUtil.cap(featureName);
- // if (isMapEntryFeature())
- // return "getTyped" + capName;
- String result = isBooleanType ? "is" + capName : "get" + ("Class".equals(capName) ? "Class_" : capName); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-
- // if (isListType() && !isFeatureMapType() && !isMapType() &&
- // getGenModel().isArrayAccessors())
- // {
- // result += "List";
- // }
-
- // GenClass rootImplementsInterface =
- // getGenModel().getRootImplementsInterfaceGenClass();
- // GenClass context = getContext();
- // if (rootImplementsInterface != null &&
- // !rootImplementsInterface.isEObject())
- // {
- // for (GenOperation genOperation :
- // rootImplementsInterface.getAllGenOperations())
- // {
- // if (genOperation.getName().equals(result) &&
- // genOperation.getGenParameters().isEmpty() &&
- // !genOperation.getType(context).equals(getType(context)))
- // {
- // result = result + "_";
- // break;
- // }
- // }
- // }
-
- return result;
- }
-
- /**
- * Formats a name by parsing it into words separated by underscores and/or mixed-casing and then recombining them
- * using the specified separator. A prefix can also be given to be recognized as a separate word or to be trimmed.
- * Leading underscores can be ignored or can cause a leading separator to be prepended.
- */
- public static String format(String name, char separator, String prefix, boolean includePrefix,
- boolean includeLeadingSeparator)
- {
- String leadingSeparators = includeLeadingSeparator ? getLeadingSeparators(name, '_') : null;
- if (leadingSeparators != null)
- {
- name = name.substring(leadingSeparators.length());
- }
-
- List<String> parsedName = new ArrayList<String>();
- if (prefix != null && name.startsWith(prefix) && name.length() > prefix.length()
- && Character.isUpperCase(name.charAt(prefix.length())))
- {
- name = name.substring(prefix.length());
- if (includePrefix)
- {
- parsedName = parseName(prefix, '_');
- }
- }
-
- if (name.length() != 0)
- {
- parsedName.addAll(parseName(name, '_'));
- }
-
- StringBuilder result = new StringBuilder();
-
- for (Iterator<String> nameIter = parsedName.iterator(); nameIter.hasNext();)
- {
- String nameComponent = nameIter.next();
- result.append(nameComponent);
-
- if (nameIter.hasNext() && nameComponent.length() > 1)
- {
- result.append(separator);
- }
- }
-
- if (result.length() == 0 && prefix != null)
- {
- result.append(prefix);
- }
-
- return leadingSeparators != null ? "_" + result.toString() : result.toString(); //$NON-NLS-1$
- }
-
- /**
- * This method breaks sourceName into words delimited by separator and/or mixed-case naming.
- */
- public static List<String> parseName(String sourceName, char separator)
- {
- List<String> result = new ArrayList<String>();
- if (sourceName != null)
- {
- StringBuilder currentWord = new StringBuilder();
- boolean lastIsLower = false;
- for (int index = 0, length = sourceName.length(); index < length; ++index)
- {
- char curChar = sourceName.charAt(index);
- if (Character.isUpperCase(curChar) || !lastIsLower && Character.isDigit(curChar) || curChar == separator)
- {
- if (lastIsLower && currentWord.length() > 1 || curChar == separator && currentWord.length() > 0)
- {
- result.add(currentWord.toString());
- currentWord = new StringBuilder();
- }
-
- lastIsLower = false;
- }
- else
- {
- if (!lastIsLower)
- {
- int currentWordLength = currentWord.length();
- if (currentWordLength > 1)
- {
- char lastChar = currentWord.charAt(--currentWordLength);
- currentWord.setLength(currentWordLength);
- result.add(currentWord.toString());
- currentWord = new StringBuilder();
- currentWord.append(lastChar);
- }
- }
-
- lastIsLower = true;
- }
-
- if (curChar != separator)
- {
- currentWord.append(curChar);
- }
- }
-
- result.add(currentWord.toString());
- }
-
- return result;
- }
-
- private static String getLeadingSeparators(String name, char separator)
- {
- int i = 0;
- for (int len = name.length(); i < len && name.charAt(i) == separator; i++)
- {
- // the for loop's condition finds the separator
- }
-
- return i != 0 ? name.substring(0, i) : null;
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndBranchImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndBranchImpl.java
index d977da09a2..dc171760dd 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndBranchImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndBranchImpl.java
@@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.revision.CDOIDAndBranch;
import org.eclipse.net4j.util.CheckUtil;
-import org.eclipse.net4j.util.ObjectUtil;
import java.text.MessageFormat;
@@ -58,7 +57,7 @@ public class CDOIDAndBranchImpl implements CDOIDAndBranch
if (obj instanceof CDOIDAndBranch)
{
CDOIDAndBranch that = (CDOIDAndBranch)obj;
- return ObjectUtil.equals(branch, that.getBranch()) && ObjectUtil.equals(id, that.getID());
+ return branch == that.getBranch() && id == that.getID();
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndVersionImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndVersionImpl.java
index 5ac777a1cf..afba9fc2bb 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndVersionImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOIDAndVersionImpl.java
@@ -55,7 +55,7 @@ public class CDOIDAndVersionImpl implements CDOIDAndVersion
if (obj instanceof CDOIDAndVersion)
{
CDOIDAndVersion that = (CDOIDAndVersion)obj;
- return id.equals(that.getID()) && version == that.getVersion();
+ return id == that.getID() && version == that.getVersion();
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
index f99201743f..8049d4f8c3 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
@@ -18,8 +18,7 @@ import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.spi.common.revision.CDOReferenceAdjuster;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
-import org.eclipse.net4j.util.collection.MoveableArrayList;
-
+import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -28,7 +27,7 @@ import java.util.Collection;
/**
* @author Simon McDuff
*/
-public class CDOListImpl extends MoveableArrayList<Object> implements InternalCDOList
+public class CDOListImpl extends BasicEList<Object> implements InternalCDOList
{
public static final CDOListFactory FACTORY = new CDOListFactory()
{
@@ -38,9 +37,13 @@ public class CDOListImpl extends MoveableArrayList<Object> implements InternalCD
}
};
+ private static final byte FROZEN_FLAG = 1;
+
+ private static final byte USE_EQUALS_FLAG = 2;
+
private static final long serialVersionUID = 1L;
- private transient boolean frozen;
+ private transient byte flags = USE_EQUALS_FLAG;
public CDOListImpl(int initialCapacity, int size)
{
@@ -55,7 +58,10 @@ public class CDOListImpl extends MoveableArrayList<Object> implements InternalCD
{
CDOType type = CDOModelUtil.getType(classifier);
int size = size();
+
InternalCDOList list = new CDOListImpl(size, 0);
+ list.setUseEquals(useEquals());
+
for (int j = 0; j < size; j++)
{
Object value = this.get(j);
@@ -99,12 +105,12 @@ public class CDOListImpl extends MoveableArrayList<Object> implements InternalCD
public void freeze()
{
- frozen = true;
+ flags |= FROZEN_FLAG;
}
private void checkFrozen()
{
- if (frozen)
+ if ((flags & FROZEN_FLAG) != 0)
{
throw new IllegalStateException("Cannot modify a frozen list");
}
@@ -184,4 +190,22 @@ public class CDOListImpl extends MoveableArrayList<Object> implements InternalCD
{
super.set(index, element);
}
+
+ @Override
+ public final boolean useEquals()
+ {
+ return (flags & USE_EQUALS_FLAG) != 0;
+ }
+
+ public final void setUseEquals(boolean useEquals)
+ {
+ if (useEquals)
+ {
+ flags |= USE_EQUALS_FLAG;
+ }
+ else
+ {
+ flags &= ~USE_EQUALS_FLAG;
+ }
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java
index 4151f2c33d..fae2d3aea7 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListWithElementProxiesImpl.java
@@ -71,7 +71,10 @@ public class CDOListWithElementProxiesImpl extends CDOListImpl
{
CDOType type = CDOModelUtil.getType(classifier);
int size = size();
+
InternalCDOList list = new CDOListWithElementProxiesImpl(size, 0, 0);
+ list.setUseEquals(useEquals());
+
for (int j = 0; j < size; j++)
{
Object value = this.get(j);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheBranching.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheBranching.java
index 3904bb9d52..81b91760fa 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheBranching.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheBranching.java
@@ -19,11 +19,8 @@ import org.eclipse.emf.cdo.common.revision.CDOIDAndBranch;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionCache;
-import org.eclipse.net4j.util.ObjectUtil;
-
import org.eclipse.emf.ecore.EClass;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -31,7 +28,7 @@ import java.util.Map;
*/
public class CDORevisionCacheBranching extends CDORevisionCacheAuditing
{
- private Map<CDOID, TypeAndRefCounter> typeMap = new HashMap<CDOID, TypeAndRefCounter>();
+ private Map<CDOID, TypeAndRefCounter> typeMap = CDOIDUtil.createMap();
public CDORevisionCacheBranching()
{
@@ -90,7 +87,7 @@ public class CDORevisionCacheBranching extends CDORevisionCacheAuditing
@Override
protected boolean isKeyInBranch(Object key, CDOBranch branch)
{
- return ObjectUtil.equals(((CDOIDAndBranch)key).getBranch(), branch);
+ return ((CDOIDAndBranch)key).getBranch() == branch;
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheNonAuditing.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheNonAuditing.java
index 5e140270e4..5e73556dfe 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheNonAuditing.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionCacheNonAuditing.java
@@ -16,6 +16,7 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionCache;
@@ -35,7 +36,7 @@ import java.util.Map;
*/
public class CDORevisionCacheNonAuditing extends AbstractCDORevisionCache
{
- private Map<CDOID, Reference<InternalCDORevision>> revisions = new HashMap<CDOID, Reference<InternalCDORevision>>();
+ private Map<CDOID, Reference<InternalCDORevision>> revisions = CDOIDUtil.createMap();
public CDORevisionCacheNonAuditing()
{
@@ -165,9 +166,10 @@ public class CDORevisionCacheNonAuditing extends AbstractCDORevisionCache
CheckUtil.checkArg(revision, "revision");
if (!revision.isHistorical())
{
+ Reference<InternalCDORevision> reference = createReference(revision);
synchronized (revisions)
{
- revisions.put(revision.getID(), createReference(revision));
+ revisions.put(revision.getID(), reference);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionKeyImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionKeyImpl.java
index 23cbdf5e16..f28daf3846 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionKeyImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionKeyImpl.java
@@ -52,7 +52,7 @@ public class CDORevisionKeyImpl extends CDOBranchVersionImpl implements CDORevis
if (obj instanceof CDORevisionKey)
{
CDORevisionKey that = (CDORevisionKey)obj;
- return id.equals(that.getID()) && getBranch().equals(that.getBranch()) && getVersion() == that.getVersion();
+ return id == that.getID() && getVersion() == that.getVersion() && getBranch() == that.getBranch();
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java
index 3116aa35b5..773b4b6a7b 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDORevisionDeltaImpl.java
@@ -433,7 +433,17 @@ public class CDORevisionDeltaImpl implements InternalCDORevisionDelta
return false;
}
- return origin == dirty || origin.equals(dirty);
+ if (origin == dirty)
+ {
+ return true;
+ }
+
+ if (origin instanceof CDOID)
+ {
+ return false;
+ }
+
+ return origin.equals(dirty);
}
private Object convertEObject(Object value)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/branch/CDOBranchUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/branch/CDOBranchUtil.java
index 73983c3f59..e41dbd2651 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/branch/CDOBranchUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/branch/CDOBranchUtil.java
@@ -19,8 +19,6 @@ import org.eclipse.emf.cdo.internal.common.branch.CDOBranchManagerImpl;
import org.eclipse.emf.cdo.internal.common.branch.CDOBranchPointImpl;
import org.eclipse.emf.cdo.internal.common.branch.CDOBranchPointRangeImpl;
-import org.eclipse.net4j.util.ObjectUtil;
-
import java.util.ArrayList;
import java.util.List;
@@ -88,7 +86,7 @@ public final class CDOBranchUtil
public static boolean isContainedBy(CDOBranchPoint contained, CDOBranchPoint container)
{
CDOBranch containerBranch = container.getBranch();
- if (ObjectUtil.equals(containerBranch, contained.getBranch()))
+ if (containerBranch == contained.getBranch())
{
return CDOCommonUtil.compareTimeStamps(contained.getTimeStamp(), container.getTimeStamp()) <= 0;
}
@@ -121,7 +119,7 @@ public final class CDOBranchUtil
{
for (CDOBranchPoint pathPoint2 : path2)
{
- if (ObjectUtil.equals(pathPoint1.getBranch(), pathPoint2.getBranch()))
+ if (pathPoint1.getBranch() == pathPoint2.getBranch())
{
if (CDOCommonUtil.compareTimeStamps(pathPoint1.getTimeStamp(), pathPoint2.getTimeStamp()) < 0)
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetDataRevisionProvider.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetDataRevisionProvider.java
index 47ad2c8a74..c9a8204f2f 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetDataRevisionProvider.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetDataRevisionProvider.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.spi.common.commit;
import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
import org.eclipse.emf.cdo.common.commit.CDOChangeSetDataProvider;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
@@ -20,7 +21,6 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionProvider;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDeltaProvider;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -121,7 +121,7 @@ public class CDOChangeSetDataRevisionProvider implements CDORevisionProvider, CD
private Map<CDOID, CDOIDAndVersion> cacheRevisions()
{
- Map<CDOID, CDOIDAndVersion> cache = new HashMap<CDOID, CDOIDAndVersion>();
+ Map<CDOID, CDOIDAndVersion> cache = CDOIDUtil.createMap();
for (CDOIDAndVersion key : changeSetData.getNewObjects())
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetSegment.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetSegment.java
index 0576054f65..6c8de3ae9d 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetSegment.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDOChangeSetSegment.java
@@ -14,8 +14,6 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.internal.common.branch.CDOBranchPointImpl;
-import org.eclipse.net4j.util.ObjectUtil;
-
import java.text.MessageFormat;
import java.util.LinkedList;
@@ -75,7 +73,7 @@ public class CDOChangeSetSegment implements CDOBranchPoint
CDOBranch startBranch = startPoint.getBranch();
CDOBranch endBranch = endPoint.getBranch();
- while (!ObjectUtil.equals(startBranch, endBranch))
+ while (startBranch != endBranch)
{
CDOBranchPoint base = endBranch.getBase();
result.addFirst(new CDOChangeSetSegment(endBranch, base.getTimeStamp(), endPoint.getTimeStamp()));
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDORevisionAvailabilityInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDORevisionAvailabilityInfo.java
index 1a38f42049..b206fedeb3 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDORevisionAvailabilityInfo.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/CDORevisionAvailabilityInfo.java
@@ -12,12 +12,12 @@ package org.eclipse.emf.cdo.spi.common.commit;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
import org.eclipse.emf.cdo.common.revision.CDORevisionProvider;
import java.text.MessageFormat;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -30,7 +30,7 @@ public final class CDORevisionAvailabilityInfo implements CDORevisionProvider
{
private CDOBranchPoint branchPoint;
- private Map<CDOID, CDORevisionKey> availableRevisions = new HashMap<CDOID, CDORevisionKey>();
+ private Map<CDOID, CDORevisionKey> availableRevisions = CDOIDUtil.createMap();
public CDORevisionAvailabilityInfo(CDOBranchPoint branchPoint)
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
index d4071cbafb..7b03ab29b8 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
@@ -99,7 +99,6 @@ import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -317,7 +316,7 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl
boolean readOnly = readBoolean();
int nLockStates = readInt();
- Map<CDOID, LockGrade> locks = new HashMap<CDOID, LockGrade>();
+ Map<CDOID, LockGrade> locks = CDOIDUtil.createMap();
for (int i = 0; i < nLockStates; i++)
{
CDOID key = readCDOID();
@@ -477,6 +476,11 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl
}
InternalCDOList list = (InternalCDOList)getListFactory().createList(size, size, referenceChunk);
+ if (feature instanceof EReference)
+ {
+ list.setUseEquals(false);
+ }
+
for (int j = 0; j < referenceChunk; j++)
{
if (isFeatureMap)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
index 8a476cd64a..35da8f46b2 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
@@ -24,7 +24,6 @@ import org.eclipse.emf.cdo.internal.common.messages.Messages;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo;
import org.eclipse.net4j.util.ImplementationError;
-import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -173,7 +172,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
*/
public void adjustForCommit(CDOBranch branch, long timeStamp)
{
- if (ObjectUtil.equals(branch, getBranch()))
+ if (branch == getBranch())
{
// Same branch, increase version
setVersion(getVersion() + 1);
@@ -205,7 +204,7 @@ public abstract class AbstractCDORevision implements InternalCDORevision
if (obj instanceof CDORevision)
{
CDORevision that = (CDORevision)obj;
- return getID().equals(that.getID()) && getBranch().equals(that.getBranch()) && getVersion() == that.getVersion();
+ return getID() == that.getID() && getVersion() == that.getVersion() && getBranch() == that.getBranch();
}
return false;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
index da4f902f66..34a1e77bad 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
@@ -13,7 +13,6 @@
*/
package org.eclipse.emf.cdo.spi.common.revision;
-import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
@@ -39,6 +38,7 @@ import org.eclipse.emf.cdo.internal.common.bundle.OM;
import org.eclipse.emf.cdo.internal.common.messages.Messages;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionDeltaImpl;
import org.eclipse.emf.cdo.spi.common.branch.CDOBranchUtil;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.net4j.util.om.trace.PerfTracer;
@@ -357,14 +357,14 @@ public abstract class BaseCDORevision extends AbstractCDORevision
/**
* @since 3.0
*/
- public CDOBranch getBranch()
+ public InternalCDOBranch getBranch()
{
if (branchPoint == null)
{
return null;
}
- return branchPoint.getBranch();
+ return (InternalCDOBranch)branchPoint.getBranch();
}
/**
@@ -684,10 +684,14 @@ public abstract class BaseCDORevision extends AbstractCDORevision
public CDOList getList(EStructuralFeature feature, int size)
{
int featureIndex = getFeatureIndex(feature);
- CDOList list = (CDOList)getValue(featureIndex);
+ InternalCDOList list = (InternalCDOList)getValue(featureIndex);
if (list == null && size != -1)
{
- list = CDOListFactory.DEFAULT.createList(size, 0, 0);
+ list = (InternalCDOList)CDOListFactory.DEFAULT.createList(size, 0, 0);
+ if (feature instanceof EReference)
+ {
+ list.setUseEquals(false);
+ }
synchronized (this)
{
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java
index 1a2adc88fd..1889c99b94 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/DelegatingCDORevision.java
@@ -22,6 +22,7 @@ import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.security.CDOPermission;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo;
import org.eclipse.emf.ecore.EClass;
@@ -72,7 +73,7 @@ public abstract class DelegatingCDORevision implements InternalCDORevision
return getDelegate().getTimeStamp();
}
- public CDOBranch getBranch()
+ public InternalCDOBranch getBranch()
{
return getDelegate().getBranch();
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
index bb8d26d26c..eeb0417d1e 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDOList.java
@@ -48,4 +48,14 @@ public interface InternalCDOList extends CDOList
* @since 4.0
*/
public void setWithoutFrozenCheck(int i, Object value);
+
+ /**
+ * @since 4.2
+ */
+ public boolean useEquals();
+
+ /**
+ * @since 4.2
+ */
+ public void setUseEquals(boolean useEquals);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
index a5c1e427a8..65057dd251 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
@@ -21,6 +21,7 @@ import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
import org.eclipse.emf.cdo.common.security.CDOPermission;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -45,6 +46,11 @@ public interface InternalCDORevision extends CDORevision, CDORevisionData, CDORe
/**
* @since 4.2
*/
+ public InternalCDOBranch getBranch();
+
+ /**
+ * @since 4.2
+ */
public InternalCDORevision getRevisionForID(CDOID id);
/**
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/RevisionInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/RevisionInfo.java
index 0b04f75263..42706eae59 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/RevisionInfo.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/RevisionInfo.java
@@ -19,7 +19,6 @@ import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.net4j.util.CheckUtil;
-import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
@@ -368,7 +367,7 @@ public abstract class RevisionInfo
public boolean isDirect()
{
- return ObjectUtil.equals(availableBranchVersion.getBranch(), getRequestedBranchPoint().getBranch());
+ return availableBranchVersion.getBranch() == getRequestedBranchPoint().getBranch();
}
@Override
@@ -389,7 +388,7 @@ public abstract class RevisionInfo
throws IOException
{
InternalCDORevision result = getResult();
- if (result != null && ObjectUtil.equals(result.getBranch(), availableBranchVersion.getBranch()))
+ if (result != null && result.getBranch() == availableBranchVersion.getBranch())
{
// Use available
out.writeBoolean(true);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java
index b7f27d59ab..432714d699 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/StubCDORevision.java
@@ -10,7 +10,6 @@
*/
package org.eclipse.emf.cdo.spi.common.revision;
-import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
@@ -20,6 +19,7 @@ import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.security.CDOPermission;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo;
import org.eclipse.emf.ecore.EClass;
@@ -196,7 +196,7 @@ public class StubCDORevision extends AbstractCDORevision
throw new UnsupportedOperationException(getExceptionMessage());
}
- public CDOBranch getBranch()
+ public InternalCDOBranch getBranch()
{
throw new UnsupportedOperationException(getExceptionMessage());
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/SyntheticCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/SyntheticCDORevision.java
index 2687010565..7ef871626a 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/SyntheticCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/SyntheticCDORevision.java
@@ -15,6 +15,7 @@ import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.revision.CDORevisionCache;
import org.eclipse.emf.cdo.common.revision.CDORevisionManager;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranch;
import org.eclipse.emf.ecore.EClass;
@@ -33,7 +34,7 @@ import org.eclipse.emf.ecore.EClass;
* Instances of this marker revision are not supposed to be exposed outside of a revision {@link CDORevisionManager
* manager}. They are mainly used in the communication between a revision manager and its associated revision
* {@link InternalCDORevisionManager.RevisionLoader loader}.
- *
+ *
* @author Eike Stepper
* @since 3.0
*/
@@ -41,13 +42,13 @@ public abstract class SyntheticCDORevision extends StubCDORevision
{
private CDOID id;
- private CDOBranch branch;
+ private InternalCDOBranch branch;
public SyntheticCDORevision(EClass eClass, CDOID id, CDOBranch branch)
{
super(eClass);
this.id = id;
- this.branch = branch;
+ this.branch = (InternalCDOBranch)branch;
}
@Override
@@ -57,7 +58,7 @@ public abstract class SyntheticCDORevision extends StubCDORevision
}
@Override
- public CDOBranch getBranch()
+ public InternalCDOBranch getBranch()
{
return branch;
}

Back to the top