blob: aef73fc443e1cf615fdfcbbe6632b26be75f4065 [file] [log] [blame]
<!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_112) on Mon Oct 14 11:36:11 MSK 2019 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DataContextDelegate (cayenne-doc: Cayenne Documentation 4.0.2 API)</title>
<meta name="date" content="2019-10-14">
<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="DataContextDelegate (cayenne-doc: Cayenne Documentation 4.0.2 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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="class-use/DataContextDelegate.html">Use</a></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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/cayenne/access/DataDomain.html" title="class in org.apache.cayenne.access"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/cayenne/access/DataContextDelegate.html" target="_top">Frames</a></li>
<li><a href="DataContextDelegate.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>Constr&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>Constr&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.apache.cayenne.access</div>
<h2 title="Interface DataContextDelegate" class="title">Interface DataContextDelegate</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">DataContextDelegate</span></pre>
<div class="block">Defines API for a DataContext "delegate" - an object that is temporarily passed control
by DataContext at some critical points in the normal flow of execution. A delegate thus
can modify the flow, abort an operation, modify the objects participating in an
operation, or perform any other tasks it deems necessary. DataContextDelegate is shared
by DataContext and its ObjectStore.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access"><code>DataContext</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#finishedMergeChanges-org.apache.cayenne.DataObject-">finishedMergeChanges</a></span>(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object)</code>
<div class="block">Called after a successful merging of external changes to an object.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#finishedProcessDelete-org.apache.cayenne.DataObject-">finishedProcessDelete</a></span>(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object)</code>
<div class="block">Called after a successful processing of externally deleted object.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#shouldMergeChanges-org.apache.cayenne.DataObject-org.apache.cayenne.DataRow-">shouldMergeChanges</a></span>(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object,
<a href="../../../../org/apache/cayenne/DataRow.html" title="class in org.apache.cayenne">DataRow</a>&nbsp;snapshotInStore)</code>
<div class="block">Invoked by parent DataContext whenever an object change is detected.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#shouldProcessDelete-org.apache.cayenne.DataObject-">shouldProcessDelete</a></span>(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object)</code>
<div class="block">Invoked by ObjectStore whenever it is detected that a database row was deleted for
object.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#willPerformGenericQuery-org.apache.cayenne.access.DataContext-org.apache.cayenne.query.Query-">willPerformGenericQuery</a></span>(<a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access">DataContext</a>&nbsp;context,
<a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a>&nbsp;query)</code>
<div class="block">Invoked before a Query is executed via <em>DataContext.performGenericQuery</em>.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#willPerformQuery-org.apache.cayenne.access.DataContext-org.apache.cayenne.query.Query-">willPerformQuery</a></span>(<a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access">DataContext</a>&nbsp;context,
<a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a>&nbsp;query)</code>
<div class="block">Invoked before a Query is executed via <em>DataContext.performQuery</em>.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="willPerformQuery-org.apache.cayenne.access.DataContext-org.apache.cayenne.query.Query-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>willPerformQuery</h4>
<pre><a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a>&nbsp;willPerformQuery(<a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access">DataContext</a>&nbsp;context,
<a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a>&nbsp;query)</pre>
<div class="block">Invoked before a Query is executed via <em>DataContext.performQuery</em>. The
delegate may subsitute the Query with a different one or may return null to discard
the query.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
</dl>
</li>
</ul>
<a name="willPerformGenericQuery-org.apache.cayenne.access.DataContext-org.apache.cayenne.query.Query-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>willPerformGenericQuery</h4>
<pre><a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a>&nbsp;willPerformGenericQuery(<a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access">DataContext</a>&nbsp;context,
<a href="../../../../org/apache/cayenne/query/Query.html" title="interface in org.apache.cayenne.query">Query</a>&nbsp;query)</pre>
<div class="block">Invoked before a Query is executed via <em>DataContext.performGenericQuery</em>.
The delegate may subsitute the Query with a different one or may return null to
discard the query.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
</dl>
</li>
</ul>
<a name="shouldMergeChanges-org.apache.cayenne.DataObject-org.apache.cayenne.DataRow-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shouldMergeChanges</h4>
<pre>boolean&nbsp;shouldMergeChanges(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object,
<a href="../../../../org/apache/cayenne/DataRow.html" title="class in org.apache.cayenne">DataRow</a>&nbsp;snapshotInStore)</pre>
<div class="block">Invoked by parent DataContext whenever an object change is detected. This can be a
change to the object snapshot, or a modification of an "independent" relationship
not resulting in a snapshot change. In the later case snapshot argument may be
null. If a delegate returns <code>true</code>, ObjectStore will attempt to merge
the changes into an object.</div>
</li>
</ul>
<a name="finishedMergeChanges-org.apache.cayenne.DataObject-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>finishedMergeChanges</h4>
<pre>void&nbsp;finishedMergeChanges(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object)</pre>
<div class="block">Called after a successful merging of external changes to an object. If previosly a
delegate returned <code>false</code> from
<a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#shouldMergeChanges-org.apache.cayenne.DataObject-org.apache.cayenne.DataRow-"><code>shouldMergeChanges(DataObject, DataRow)</code></a>, this method is not invoked,
since changes were not merged.</div>
</li>
</ul>
<a name="shouldProcessDelete-org.apache.cayenne.DataObject-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shouldProcessDelete</h4>
<pre>boolean&nbsp;shouldProcessDelete(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object)</pre>
<div class="block">Invoked by ObjectStore whenever it is detected that a database row was deleted for
object. If a delegate returns <code>true</code>, ObjectStore will change
MODIFIED objects to NEW (resulting in recreating the deleted record on next commit)
and all other objects - to TRANSIENT. To block this behavior, delegate should
return <code>false</code>, and possibly do its own processing.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>object</code> - DataObject that was deleted externally and is still present in the
ObjectStore associated with the delegate.</dd>
</dl>
</li>
</ul>
<a name="finishedProcessDelete-org.apache.cayenne.DataObject-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>finishedProcessDelete</h4>
<pre>void&nbsp;finishedProcessDelete(<a href="../../../../org/apache/cayenne/DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;object)</pre>
<div class="block">Called after a successful processing of externally deleted object. If previosly a
delegate returned <code>false</code> from
<a href="../../../../org/apache/cayenne/access/DataContextDelegate.html#shouldProcessDelete-org.apache.cayenne.DataObject-"><code>shouldProcessDelete(DataObject)</code></a>, this method is not invoked, since no
processing was done.</div>
</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="class-use/DataContextDelegate.html">Use</a></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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/cayenne/access/DataContext.html" title="class in org.apache.cayenne.access"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/cayenne/access/DataDomain.html" title="class in org.apache.cayenne.access"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/cayenne/access/DataContextDelegate.html" target="_top">Frames</a></li>
<li><a href="DataContextDelegate.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>Constr&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>Constr&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; 2001&#x2013;2019 <a href="http://cayenne.apache.org/">Apache Cayenne</a>. All rights reserved.</small></p>
</body>
</html>