<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_252) on Fri Jul 16 09:39:11 UTC 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SDOEqualityHelper (EclipseLink 3.0.2, API Reference)</title>
<meta name="date" content="2021-07-16">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="SDOEqualityHelper (EclipseLink 3.0.2, API Reference)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/eclipse/persistence/sdo/helper/SDODataHelper.html" title="class in org.eclipse.persistence.sdo.helper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOFragmentMappingAttributeAccessor.html" title="class in org.eclipse.persistence.sdo.helper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html" target="_top">Frames</a></li>
<li><a href="SDOEqualityHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.persistence.sdo.helper</div>
<h2 title="Class SDOEqualityHelper" class="title">Class SDOEqualityHelper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.persistence.sdo.helper.SDOEqualityHelper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>commonj.sdo.helper.EqualityHelper</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">SDOEqualityHelper</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements commonj.sdo.helper.EqualityHelper</pre>
<div class="block"><p><b>Purpose</b>: A helper class for checking deep or shallow equality of DataObjects.</p>
 <p>ChangeSummary is not in scope for equality checking.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/eclipse/persistence/sdo/SDODataObject.html" title="class in org.eclipse.persistence.sdo"><code>SDODataObject</code></a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Oracle TopLink 11.1.1.0.0</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.commonj.sdo.helper.EqualityHelper">
<!--   -->
</a>
<h3>Fields inherited from interface&nbsp;commonj.sdo.helper.EqualityHelper</h3>
<code>INSTANCE</code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#SDOEqualityHelper--">SDOEqualityHelper</a></span>()</code>
<div class="block">INTERNAL:
 This default constructor must be used in conjunction with the setHelperContext() function.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#SDOEqualityHelper-commonj.sdo.helper.HelperContext-">SDOEqualityHelper</a></span>(commonj.sdo.helper.HelperContext&nbsp;aContext)</code>
<div class="block">Constructor that takes in a HelperContext instance that contains this equalityHelper.<br>
 This is the recommended constructor.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#equal-commonj.sdo.DataObject-commonj.sdo.DataObject-">equal</a></span>(commonj.sdo.DataObject&nbsp;dataObject1,
     commonj.sdo.DataObject&nbsp;dataObject2)</code>
<div class="block">Two DataObjects are equal(Deep) if they are equalShallow,
  all their compared Properties are equal, and all reachable DataObjects in their
  graphs excluding containers are equal.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#equalShallow-commonj.sdo.DataObject-commonj.sdo.DataObject-">equalShallow</a></span>(commonj.sdo.DataObject&nbsp;dataObject1,
            commonj.sdo.DataObject&nbsp;dataObject2)</code>
<div class="block">Two DataObjects are equalShallow if
  they have the same <code>Type</code>
  and all their compared Properties are equal.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>commonj.sdo.helper.HelperContext</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#getHelperContext--">getHelperContext</a></span>()</code>
<div class="block">INTERNAL:
 Return the helperContext containing this equalityHelper.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#setHelperContext-commonj.sdo.helper.HelperContext-">setHelperContext</a></span>(commonj.sdo.helper.HelperContext&nbsp;helperContext)</code>
<div class="block">INTERNAL:
 Set the helperContext if this equalityHelper was created using the default constructor.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="SDOEqualityHelper--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SDOEqualityHelper</h4>
<pre>public&nbsp;SDOEqualityHelper()</pre>
<div class="block">INTERNAL:
 This default constructor must be used in conjunction with the setHelperContext() function.
 The custom constructor that takes a HelperContext parameter is recommended over this default constructor.</div>
</li>
</ul>
<a name="SDOEqualityHelper-commonj.sdo.helper.HelperContext-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SDOEqualityHelper</h4>
<pre>public&nbsp;SDOEqualityHelper(commonj.sdo.helper.HelperContext&nbsp;aContext)</pre>
<div class="block">Constructor that takes in a HelperContext instance that contains this equalityHelper.<br>
 This is the recommended constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aContext</code> - </dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="equalShallow-commonj.sdo.DataObject-commonj.sdo.DataObject-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalShallow</h4>
<pre>public&nbsp;boolean&nbsp;equalShallow(commonj.sdo.DataObject&nbsp;dataObject1,
                            commonj.sdo.DataObject&nbsp;dataObject2)</pre>
<div class="block"><p>Two DataObjects are equalShallow if
  they have the same <code>Type</code>
  and all their compared Properties are equal.
  The set of Properties compared are the
  <code>instance properties</code>
  where property.getType().isDataType() is true
  and property.getType() is not ChangeSummaryType.
 <br>Two of these Property values are equal if they are both not
  <code>set</code>, or set to an equal value
  dataObject1.get(property).equals(dataObject2.get(property))
 <br>If the type is a sequenced type, the sequence entries must be the same.
  For each entry x in the sequence where the property is used in the comparison,
  dataObject1.getSequence().getValue(x).equals(
   dataObject2.getSequence().getValue(x)) and
  dataObject1.getSequence().getProperty(x) ==
   dataObject2.getSequence().getProperty(x)
  must be true.
 </p>
  Returns true the objects have the same Type and all values of all compared Properties are equal.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>equalShallow</code>&nbsp;in interface&nbsp;<code>commonj.sdo.helper.EqualityHelper</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dataObject1</code> - DataObject to be compared</dd>
<dd><code>dataObject2</code> - DataObject to be compared</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true the objects have the same Type and all values of all compared Properties are equal.</dd>
</dl>
</li>
</ul>
<a name="equal-commonj.sdo.DataObject-commonj.sdo.DataObject-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;boolean&nbsp;equal(commonj.sdo.DataObject&nbsp;dataObject1,
                     commonj.sdo.DataObject&nbsp;dataObject2)</pre>
<div class="block"><p>Two DataObjects are equal(Deep) if they are equalShallow,
  all their compared Properties are equal, and all reachable DataObjects in their
  graphs excluding containers are equal.
  The set of Properties compared are the
  <code>instance properties</code>
  where property.getType().isDataType() is false,
  and is not a container property, ie !property.getOpposite().isContainment()
 <br>Two of these Property values are equal if they are both not
  <code>set</code>, or all the DataObjects
  they refer to are <a href="../../../../../org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html#equal-commonj.sdo.DataObject-commonj.sdo.DataObject-"><code>equal</code></a> in the
  context of dataObject1 and dataObject2.
 <br>Note that properties to a containing DataObject are not compared
  which means two DataObject trees can be equal even if their containers are not equal.
 <br>If the type is a sequenced type, the sequence entries must be the same.
  For each entry x in the sequence where the property is used in the comparison,
  equal(dataObject1.getSequence().getValue(x),
   dataObject2.getSequence().getValue(x)) and
  dataObject1.getSequence().getProperty(x) ==  dataObject2.getSequence().getProperty(x)
  must be true.
 </p><p>
 A DataObject directly or indirectly referenced by dataObject1 or dataObject2
  can only be equal to exactly one DataObject directly or indirectly referenced
  by dataObject1 or dataObject2, respectively.
  This ensures that dataObject1 and dataObject2 are equal if the graph formed by
  all their referenced DataObjects have the same shape.
 </p>
  Returns true if the trees of DataObjects are equal(Deep).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>equal</code>&nbsp;in interface&nbsp;<code>commonj.sdo.helper.EqualityHelper</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dataObject1</code> - DataObject to be compared</dd>
<dd><code>dataObject2</code> - DataObject to be compared</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the trees of DataObjects are equal(Deep).</dd>
</dl>
</li>
</ul>
<a name="getHelperContext--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHelperContext</h4>
<pre>public&nbsp;commonj.sdo.helper.HelperContext&nbsp;getHelperContext()</pre>
<div class="block">INTERNAL:
 Return the helperContext containing this equalityHelper.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
</dl>
</li>
</ul>
<a name="setHelperContext-commonj.sdo.helper.HelperContext-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setHelperContext</h4>
<pre>public&nbsp;void&nbsp;setHelperContext(commonj.sdo.helper.HelperContext&nbsp;helperContext)</pre>
<div class="block">INTERNAL:
 Set the helperContext if this equalityHelper was created using the default constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>helperContext</code> - </dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/eclipse/persistence/sdo/helper/SDODataHelper.html" title="class in org.eclipse.persistence.sdo.helper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/eclipse/persistence/sdo/helper/SDOFragmentMappingAttributeAccessor.html" title="class in org.eclipse.persistence.sdo.helper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/eclipse/persistence/sdo/helper/SDOEqualityHelper.html" target="_top">Frames</a></li>
<li><a href="SDOEqualityHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="http://www.eclipse.org/eclipselink">Eclipse.org - EclipseLink Project</a>. All rights reserved.</small></p>
</body>
</html>
