<!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_92) on Mon Aug 13 15:36:32 CEST 2018 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ODataPreferences (Olingo-OData 4.5.0 API)</title>
<meta name="date" content="2018-08-13">
<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="ODataPreferences (Olingo-OData 4.5.0 API)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":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="class-use/ODataPreferences.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/olingo/client/api/communication/header/ODataHeaders.html" title="interface in org.apache.olingo.client.api.communication.header"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/olingo/client/api/communication/header/ODataPreferences.html" target="_top">Frames</a></li>
<li><a href="ODataPreferences.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.apache.olingo.client.api.communication.header</div>
<h2 title="Class ODataPreferences" class="title">Class ODataPreferences</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/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.apache.olingo.client.api.communication.header.ODataPreferences</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">ODataPreferences</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Values of the Prefer header.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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/apache/olingo/client/api/communication/header/ODataPreferences.html#ODataPreferences--">ODataPreferences</a></span>()</code>&nbsp;</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><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#allowEntityReferences--">allowEntityReferences</a></span>()</code>
<div class="block">The odata.allow-entityreferences preference indicates that the service is allowed to return entity references in
 place of entities that have previously been returned, with at least the properties requested, in the same response
 (for example, when serializing the expanded results of many-to-many relationships).</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#callback-java.lang.String-">callback</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url)</code>
<div class="block">For scenarios in which links returned by the service are used by the client to poll for additional information, the
 client can specify the odata.callback preference to request that the service notify the client when data is
 available.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#continueOnError--">continueOnError</a></span>()</code>
<div class="block">The odata.continue-on-error preference on a batch request is used to request that, upon encountering a request
 within the batch that returns an error, the service return the error for that request and continue processing
 additional requests within the batch.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#includeAnnotations-java.lang.String-">includeAnnotations</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</code>
<div class="block">The odata.include-annotations preference in a request for data or metadata is used to specify the set of
 annotations the client requests to be included, where applicable, in the response.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#keyAsSegment--">keyAsSegment</a></span>()</code>
<div class="block">Gets the value of the non-standard preference that the URL should follow the convention
 that keys are formatted as separate segments.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#maxPageSize-int-">maxPageSize</a></span>(int&nbsp;size)</code>
<div class="block">The odata.maxpagesize preference is used to request that each collection within the response contain no more than
 the number of items specified as the positive integer value of this preference.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#respondAsync--">respondAsync</a></span>()</code>
<div class="block">The respond-async preference, as defined in [HTTP-Prefer], allows clients to request that the service process the
 request asynchronously.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#returnContent--">returnContent</a></span>()</code>
<div class="block"><code>Prefer</code> header, return content.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#returnMinimal--">returnMinimal</a></span>()</code>
<div class="block">The return=representation and return=minimal preferences are defined in [HTTP-Prefer],
 <br/>
 In OData, return=representation or return=minimal is defined for use with a POST, PUT, or PATCH Data Modification
 Request other than to a stream property, or to an Action Request.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#returnNoContent--">returnNoContent</a></span>()</code>
<div class="block"><code>Prefer</code> header, return no content.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#returnRepresentation--">returnRepresentation</a></span>()</code>
<div class="block">The return=representation and return=minimal preferences are defined in [HTTP-Prefer],
 <br/>
 In OData, return=representation or return=minimal is defined for use with a POST, PUT, or PATCH Data Modification
 Request other than to a stream property, or to an Action Request.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#trackChanges--">trackChanges</a></span>()</code>
<div class="block">The odata.track-changes preference is used to request that the service return a delta link that can subsequently be
 used to obtain changes (deltas) to this result.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/olingo/client/api/communication/header/ODataPreferences.html#wait-int-">wait</a></span>(int&nbsp;value)</code>
<div class="block">The wait preference, as defined in [HTTP-Prefer], is used to establish an upper bound on the length of time, in
 seconds, the client is prepared to wait for the service to process the request synchronously once it has been
 received.</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="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/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="ODataPreferences--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ODataPreferences</h4>
<pre>public&nbsp;ODataPreferences()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="returnContent--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>returnContent</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;returnContent()</pre>
<div class="block"><code>Prefer</code> header, return content.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="returnNoContent--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>returnNoContent</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;returnNoContent()</pre>
<div class="block"><code>Prefer</code> header, return no content.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="keyAsSegment--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>keyAsSegment</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyAsSegment()</pre>
<div class="block">Gets the value of the non-standard preference that the URL should follow the convention
 that keys are formatted as separate segments.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="allowEntityReferences--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowEntityReferences</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;allowEntityReferences()</pre>
<div class="block">The odata.allow-entityreferences preference indicates that the service is allowed to return entity references in
 place of entities that have previously been returned, with at least the properties requested, in the same response
 (for example, when serializing the expanded results of many-to-many relationships). The service MUST NOT return
 entity references in place of requested entities if odata.allow-entityreferences has not been specified in the
 request, unless explicitly defined by other rules in this document. The syntax of the odata.allow-entityreferences
 preference is specified in [OData-ABNF].
 <br />
 In the case the service applies the odata.allow-entityreferences preference it MUST include a Preference-Applied
 response header containing the odata.allow-entityreferences preference to indicate that entity references MAY be
 returned in place of entities that have previously been returned.
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="callback-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>callback</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callback(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;url)</pre>
<div class="block">For scenarios in which links returned by the service are used by the client to poll for additional information, the
 client can specify the odata.callback preference to request that the service notify the client when data is
 available.
 <br />
 The odata.callback preference can be specified:
 <ul>
 <li>when requesting asynchronous processing of a request with the respond-async preference, or</li>
 <li>on a GET request to a delta link.</li>
 </ul>
 <br />
 The odata.callback preference MUST include the parameter url whose value is the URL of a callback endpoint to be
 invoked by the OData service when data is available. The syntax of the odata.callback preference is specified in
 [OData-ABNF]. For HTTP based callbacks, the OData service executes an HTTP GET request against the specified URL.
 <br />
 Services that support odata.callback SHOULD support notifying the client through HTTP. Services can advertise
 callback support using the Capabilities.CallbackSupport annotation term defined in [OData-VocCap].
 <br />
 If the service applies the odata.callback preference it MUST include the odata.callback preference in the
 Preference-Applied response header.
 <br />
 When the odata.callback preference is applied to asynchronous requests, the OData service invokes the callback
 endpoint once it has finished processing the request. The status monitor resource, returned in the Location header
 of the previously returned 202 Accepted response, can then be used to retrieve the results of the asynchronously
 executed request.
 <br />
 When the odata.callback preference is specified on a GET request to a delta link and there are no changes
 available, the OData service returns a 202 Accepted response with a Location header specifying the delta link to be
 used to check for future updates. The OData service then invokes the specified callback endpoint once new changes
 become available.
 <br />
 Combining respond-async, odata.callback and odata.track-changes preferences on a GET request to a delta-link might
 influence the response in a couple of ways.
 <ul>
 <li>If the service processes the request synchronously, and no updates are available, then the response is the same
 as if the respond-async hadn’t been specified and results in a response as described above.</li>
 <li>If the service processes the request asynchronously, then it responds with a 202 Accepted response specifying
 the URL to the status monitor resource as it would have with any other asynchronous request. Once the service has
 finished processing the asynchronous request to the delta link resource, if changes are available it invokes the
 specified callback endpoint. If no changes are available, the service SHOULD wait to notify the client until
 changes are available. Once notified, the client uses the status monitor resource from the Location header of the
 previously returned 202 Accepted response to retrieve the results. In case no updates were available after
 processing the initial request, the result will contain no updates and the client can use the delta-link contained
 in the result to retrieve the updates that have since become available.</li>
 </ul>
 <br />
 If the consumer specifies the same URL as callback endpoint in multiple requests, the service MAY collate them into
 a single notification once additional data is available for any of the requests. However, the consumer MUST be
 prepared to deal with receiving up to as many notifications as it requested.
 <br /><br />
 Example: using a HTTP callback endpoint to receive notification
 <br /><br />
 Prefer: odata.callback; url="http://myserver/notfication/token/12345"
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="continueOnError--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>continueOnError</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;continueOnError()</pre>
<div class="block">The odata.continue-on-error preference on a batch request is used to request that, upon encountering a request
 within the batch that returns an error, the service return the error for that request and continue processing
 additional requests within the batch. The syntax of the odata.continue-on-error preference is specified in
 [OData-ABNF].
 <br />
 If not specified, upon encountering an error the service MUST return the error within the batch and stop processing
 additional requests within the batch.
 <br />
 A service MAY specify the support for the odata.continue-on-error preference using an annotation with term
 Capabilities.BatchContinueOnErrorSupported, see [OData-VocCap].
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="includeAnnotations-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>includeAnnotations</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;includeAnnotations(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
<div class="block">The odata.include-annotations preference in a request for data or metadata is used to specify the set of
 annotations the client requests to be included, where applicable, in the response.
 <br/>
 The value of the odata.include-annotations preference is a comma-separated list of namespaces or namespace
 qualified term names to include or exclude, with "*" representing all. The full syntax of the
 odata.include-annotations preference is defined in [OData-ABNF].
 <br/>
 The most specific identifier always takes precedence. If the same identifier value is requested to both be excluded
 and included the behavior is undefined; the service MAY return or omit the specified vocabulary but MUST NOT raise
 an exception.
 <br/><br/>
 Example 1: a Prefer header requesting all annotations within a metadata document to be returned
 <br/><br/>
 Prefer: odata.include-annotations="*"
 <br/><br/>
 Example 2: a Prefer header requesting that no annotations are returned
 <br/><br/>
 Prefer: odata.include-annotations="-*"
 <br/><br/>
 Example 3: a Prefer header requesting that all annotations defined under the "display" namespace (recursively) be
 returned
 <br/><br/>
 Prefer: odata.include-annotations="display.*"
 <br/><br/>
 Example 4: a Prefer header requesting that the annotation with the term name subject within the display namespace
 be returned if applied
 <br/><br/>
 Prefer: odata.include-annotations="display.subject"
 <br/><br/>
 The odata.include-annotations preference is only a hint to the service. The service MAY ignore the preference and
 is free to decide whether or not to return annotations not specified in the odata.include-annotations preference.
 <br/>
 In the case that the client has specified the odata.include-annotations preference in the request, the service
 SHOULD include a Preference-Applied response header containing the odata.include-annotations preference to specify
 the annotations actually included, where applicable, in the response. This value may differ from the annotations
 requested in the Prefer header of the request.
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="maxPageSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maxPageSize</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;maxPageSize(int&nbsp;size)</pre>
<div class="block">The odata.maxpagesize preference is used to request that each collection within the response contain no more than
 the number of items specified as the positive integer value of this preference. The syntax of the odata.maxpagesize
 preference is specified in [OData-ABNF].
 <br/><br/>
 Example: a request for customers and their orders would result in a response containing one collection with
 customer entities and for every customer a separate collection with order entities. The client could specify
 <br/>
 odata.maxpagesize=50
 <br/>in order to request that each page of results contain a maximum of 50 customers, each with a maximum of 50
 orders.
 <br/><br/>
 If a collection within the result contains more than the specified odata.maxpagesize, the collection SHOULD be a
 partial set of the results with a next link to the next page of results. The client MAY specify a different value
 for this preference with every request following a next link.
 <br/>
 In the example given above, the result page should include a next link for the customer collection, if there are
 more than 50 customers, and additional next links for all returned orders collections with more than 50 entities.
 <br/>
 If the client has specified the odata.maxpagesize preference in the request, and the service limits the number of
 items in collections within the response through server-driven paging, the service MAY include a Preference-Applied
 response header containing the odata.maxpagesize preference and the maximum page size applied. This value may
 differ from the value requested by the client.
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="trackChanges--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trackChanges</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;trackChanges()</pre>
<div class="block">The odata.track-changes preference is used to request that the service return a delta link that can subsequently be
 used to obtain changes (deltas) to this result. The syntax of the odata.track-changes preference is specified in
 [OData-ABNF].
 <br />
 For paged results, the preference MUST be specified on the initial request. Services MUST ignore the
 odata.track-changes preference if applied to the next link.
 <br />
 The delta link MUST NOT be returned prior to the final page of results.
 <br />
 The service includes a Preference-Applied response header in the first page of the response containing the
 odata.track-changes preference to signal that changes are being tracked.
 <br />
 A service MAY specify the support for the odata.track-changes preference using an annotation with term
 Capabilities.ChangeTrackingSupport, see [OData-VocCap].
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="respondAsync--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>respondAsync</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;respondAsync()</pre>
<div class="block">The respond-async preference, as defined in [HTTP-Prefer], allows clients to request that the service process the
 request asynchronously.
 <br/>
 If the client has specified respond-async in the request, the service MAY process the request asynchronously and
 return a 202 Accepted response.
 <br/>
 The respond-async preference MAY be used for batch requests, but the service MUST ignore the respond-async
 preference for individual requests within a batch request.
 <br/>
 In the case that the service applies the respond-async preference it MUST include a Preference-Applied response
 header containing the respond-async preference.
 <br/>
 A service MAY specify the support for the respond-async preference using an annotation with term
 Capabilities.AsynchronousRequestsSupported, see [OData-VocCap].
 <br/><br/>
 Example: a service receiving the following header might choose to respond
 <ul>
 <li>asynchronously if the synchronous processing of the request will take longer than 10 seconds</li>
 <li>synchronously after 5 seconds</li>
 <li>asynchronously (ignoring the wait preference)</li>
 <li>synchronously after 15 seconds (ignoring respond-async preference and the wait preference)</li>
 </ul>
 <br/>
 Prefer: respond-async, wait=10
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="wait-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wait</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;wait(int&nbsp;value)</pre>
<div class="block">The wait preference, as defined in [HTTP-Prefer], is used to establish an upper bound on the length of time, in
 seconds, the client is prepared to wait for the service to process the request synchronously once it has been
 received.
 <br/>
 If the respond-async preference is also specified, the client requests that the service respond asynchronously
 after the specified length of time.
 <br/>
 If the respond-async preference has not been specified, the service MAY interpret the wait as a request to timeout
 after the specified period of time.
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="returnMinimal--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>returnMinimal</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;returnMinimal()</pre>
<div class="block">The return=representation and return=minimal preferences are defined in [HTTP-Prefer],
 <br/>
 In OData, return=representation or return=minimal is defined for use with a POST, PUT, or PATCH Data Modification
 Request other than to a stream property, or to an Action Request. Specifying a preference of return=representation
 or return=minimal in a GET or DELETE request, or any request to a stream property, SHOULD return a 4xx Client
 Error.
 <br/>
 A preference of return=representation or return=minimal is allowed on an individual Data Modification Request or
 Action Request within a batch, subject to the same restrictions, but SHOULD return a 4xx Client Error if specified
 on the batch request itself.
 <br/>
 A preference of return=minimal requests that the service invoke the request but does not return content in the
 response. The service MAY apply this preference by returning 204 No Content in which case it MAY include a
 Preference-Applied response header containing the return=minimal preference.
 <br/>
 A preference of return=representation requests that the service invokes the request and returns the modified
 entity. The service MAY apply this preference by returning the successfully modified resource in the body of the
 response, formatted according to the rules specified for the requested format. In this case the service MAY include
 a Preference-Applied response header containing the return=representation preference.
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></dd>
</dl>
</li>
</ul>
<a name="returnRepresentation--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>returnRepresentation</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;returnRepresentation()</pre>
<div class="block">The return=representation and return=minimal preferences are defined in [HTTP-Prefer],
 <br/>
 In OData, return=representation or return=minimal is defined for use with a POST, PUT, or PATCH Data Modification
 Request other than to a stream property, or to an Action Request. Specifying a preference of return=representation
 or return=minimal in a GET or DELETE request, or any request to a stream property, SHOULD return a 4xx Client
 Error.
 <br/>
 A preference of return=representation or return=minimal is allowed on an individual Data Modification Request or
 Action Request within a batch, subject to the same restrictions, but SHOULD return a 4xx Client Error if specified
 on the batch request itself.
 <br/>
 A preference of return=minimal requests that the service invoke the request but does not return content in the
 response. The service MAY apply this preference by returning 204 No Content in which case it MAY include a
 Preference-Applied response header containing the return=minimal preference.
 <br/>
 A preference of return=representation requests that the service invokes the request and returns the modified
 entity. The service MAY apply this preference by returning the successfully modified resource in the body of the
 response, formatted according to the rules specified for the requested format. In this case the service MAY include
 a Preference-Applied response header containing the return=representation preference.
 <br/><br/>
 Supported by OData version 4.0 only.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>preference.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../org/apache/olingo/commons/api/http/HttpHeader.html#PREFER"><code>HttpHeader.PREFER</code></a></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="class-use/ODataPreferences.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/olingo/client/api/communication/header/ODataHeaders.html" title="interface in org.apache.olingo.client.api.communication.header"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/olingo/client/api/communication/header/ODataPreferences.html" target="_top">Frames</a></li>
<li><a href="ODataPreferences.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; 2013&#x2013;2018 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
