## org.eclipse.emf.ecore.util
Class EcoreUtil.EqualityHelper

    java.lang.Object
      java.util.AbstractMap<K,V>
          java.util.HashMap<EObject,EObject>
              org.eclipse.emf.ecore.util.EcoreUtil.EqualityHelper

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, java.util.Map<EObject,EObject>

Enclosing class:
  EcoreUtil

    public static class EcoreUtil.EqualityHelper

extends java.util.HashMap<EObject,EObject>

A helper for determining whether two `EObject`s are structurally equal. Two EObjects, `eObject1` and `eObject2`, are structurally equal if their `classes` are the same, and if, for each `non-derived` `feature` of the class, the `isSet` states are the same and the corresponding `values` are structurally equal as appropriate for the type of feature. For `feature map` features, the `entries` at corresponding positions must have the same `entry feature`s and must have structurally equal `value`s as appropriate for the type of entry's feature. For `reference` features, the corresponding values must recursively be structurally equal according to this definition. For `attribute` features, the corresponding values must be equal according to Java equality. Note that container references are derived and hence are ignored.

During the recursive process of determining `equality`, the helper instance is populated as a two way map such that a given `eObject1` is considered to be equal to at most one other `eObject2`, i.e., `get(eObject1) == eObject2 && get(eObject2) == eObject1`. While their features are being compared, the two objects are assumed to be equal:

      put(eObject1, eObject2);
      put(eObject2, eObject1);

Once that correspondence is established, an `eObject1` considered equal to a different `eObject2` will not even be considered equal to itself. This ensures that two objects are structurally equal only if the graphs formed by all their referenced objects have the same topology.

See Also:
  `EcoreUtil.equals(EObject, EObject)`, `equals(EObject, EObject)`, Serialized Form

Constructor Summary
`EcoreUtil.EqualityHelper()`

Method Summary
`protected boolean` `equalFeatureMaps(FeatureMap featureMap1, FeatureMap featureMap2)` Returns whether the two feature maps are `equal`.
`protected boolean` `equalFeatureMapValues(java.lang.Object value1, java.lang.Object value2, EStructuralFeature feature)` Returns whether the two values of a feature map are `equal`.
`boolean` `equals(EObject eObject1, EObject eObject2)` Returns whether `eObject1` and `eObject2` are `equal` in the context of this helper instance.
`boolean` `equals(java.util.List<EObject> list1, java.util.List<EObject> list2)` Returns whether `list1` and `list2` contain `equal` `EObject`s at the same index.
`protected boolean` `haveEqualAttribute(EObject eObject1, EObject eObject2, EAttribute attribute)` Returns whether the two objects have `equal` `value`s for the attribute.
`protected boolean` `haveEqualFeature(EObject eObject1, EObject eObject2, EStructuralFeature feature)` Returns whether the two objects have `equal` `isSet` states and `value`s for the feature.
`protected boolean` `haveEqualReference(EObject eObject1, EObject eObject2, EReference reference)` Returns whether the two objects have `equal` `value`s for the reference.

Methods inherited from class java.util.HashMap
`clear, clone, containsKey, containsValue, entrySet, get, isEmpty, keySet, put, putAll, remove, size, values`

Methods inherited from class java.util.AbstractMap
`equals, hashCode, toString`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.util.Map
`equals, hashCode`

Constructor Detail

### EcoreUtil.EqualityHelper

    public EcoreUtil.EqualityHelper()

Method Detail

### equals

    public boolean equals(EObject eObject1,
                          EObject eObject2)

  Returns whether `eObject1` and `eObject2` are `equal` in the context of this helper instance.

  Returns:
    whether `eObject1` and `eObject2` are equal.
  Since:
    2.1.0

### equals

    public boolean equals(java.util.List<EObject> list1,
                          java.util.List<EObject> list2)

  Returns whether `list1` and `list2` contain `equal` `EObject`s at the same index. It is assumed that list1 and list2 only contain EObjects.

  Returns:
    whether `list1` and `list2` contain equal objects.
  Since:
    2.1.0

### haveEqualFeature

    protected boolean haveEqualFeature(EObject eObject1,
                                       EObject eObject2,
                                       EStructuralFeature feature)

  Returns whether the two objects have `equal` `isSet` states and `value`s for the feature.

  Returns:
    whether the two objects have equal isSet states and values for the feature.
  Since:
    2.2.0
  See Also:
    `equals(EObject, EObject)`, `equals(List, List)`

### haveEqualReference

    protected boolean haveEqualReference(EObject eObject1,
                                         EObject eObject2,
                                         EReference reference)

  Returns whether the two objects have `equal` `value`s for the reference.

  Returns:
    whether the two objects have equal values for the reference.
  Since:
    2.1.0
  See Also:
    `equals(EObject, EObject)`, `equals(List, List)`

### haveEqualAttribute

    protected boolean haveEqualAttribute(EObject eObject1,
                                         EObject eObject2,
                                         EAttribute attribute)

  Returns whether the two objects have `equal` `value`s for the attribute.

  Returns:
    whether the two objects have equal values for the attribute.
  Since:
    2.1.0
  See Also:
    `equalFeatureMaps(FeatureMap, FeatureMap)`

### equalFeatureMaps

    protected boolean equalFeatureMaps(FeatureMap featureMap1,
                                       FeatureMap featureMap2)

  Returns whether the two feature maps are `equal`.

  Returns:
    whether the two feature maps are equal.
  Since:
    2.1.0

### equalFeatureMapValues

    protected boolean equalFeatureMapValues(java.lang.Object value1,
                                            java.lang.Object value2,
                                            EStructuralFeature feature)

  Returns whether the two values of a feature map are `equal`.

  Returns:
    whether the two values of a feature map are equal.
  Since:
    2.2.0

Copyright 2001-2006 IBM Corporation and others. All Rights Reserved.