<!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 (version 1.7.0_25) on Tue Dec 03 13:53:40 PST 2013 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>RepositoryException (Carbonado 1.2.3 API)</title>
<meta name="date" content="2013-12-03">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="RepositoryException (Carbonado 1.2.3 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/RepositoryException.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-files/index-1.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/amazon/carbonado/RepositoryBuilder.html" title="interface in com.amazon.carbonado"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../com/amazon/carbonado/Sequence.html" title="annotation in com.amazon.carbonado"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/amazon/carbonado/RepositoryException.html" target="_top">Frames</a></li>
<li><a href="RepositoryException.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All 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">com.amazon.carbonado</div>
<h2 title="Class RepositoryException" class="title">Class RepositoryException</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Throwable</li>
<li>
<ul class="inheritance">
<li>java.lang.Exception</li>
<li>
<ul class="inheritance">
<li>com.amazon.carbonado.RepositoryException</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a>, <a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a>, <a href="../../../com/amazon/carbonado/SupportException.html" title="class in com.amazon.carbonado">SupportException</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">RepositoryException</span>
extends java.lang.Exception</pre>
<div class="block">General checked exception thrown when accessing a <a href="../../../com/amazon/carbonado/Repository.html" title="interface in com.amazon.carbonado"><code>Repository</code></a>.

 <p>Some repository exceptions are the result of an optimistic lock failure
 or deadlock. One resolution strategy is to exit all transactions and try the
 operation again, after waiting some bounded random amount of time. As a
 convenience, this class provides a mechanism to support such a backoff
 strategy. For example:

 <pre>
 // Retry at most three more times
 for (int retryCount = 3;;) {
     try {
         ...
         myObject.load();
         ...
         myObject.update();
         break;
     } catch (OptimisticLockException e) {
         // Wait up to one second before retrying
         retryCount = e.backoff(e, retryCount, 1000);
     }
 }
 </pre>

 If the retry count is zero (or less) when backoff is called, then the
 original exception is rethrown, indicating retry failure.</div>
<dl><dt><span class="strong">Author:</span></dt>
  <dd>Brian S O'Neill</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../serialized-form.html#com.amazon.carbonado.RepositoryException">Serialized Form</a></dd></dl>
</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="overviewSummary" 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><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#RepositoryException()">RepositoryException</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#RepositoryException(java.lang.String)">RepositoryException</a></strong>(java.lang.String&nbsp;message)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#RepositoryException(java.lang.String, java.lang.Throwable)">RepositoryException</a></strong>(java.lang.String&nbsp;message,
                   java.lang.Throwable&nbsp;cause)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#RepositoryException(java.lang.Throwable)">RepositoryException</a></strong>(java.lang.Throwable&nbsp;cause)</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="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static &lt;E extends java.lang.Throwable&gt;&nbsp;<br>int</code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#backoff(E, int, int)">backoff</a></strong>(E&nbsp;e,
       int&nbsp;retryCount,
       int&nbsp;milliseconds)</code>
<div class="block">One strategy for resolving an optimistic lock failure is to try the
 operation again, after waiting some bounded random amount of time.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.Throwable</code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#getRootCause()">getRootCause</a></strong>()</code>
<div class="block">Recursively calls getCause, until the root cause is found.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a></code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#makeFetchException(java.lang.String, java.lang.Throwable)">makeFetchException</a></strong>(java.lang.String&nbsp;message,
                  java.lang.Throwable&nbsp;cause)</code>
<div class="block">Subclasses can override this to provide a more specialized exception.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a></code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#makePersistException(java.lang.String, java.lang.Throwable)">makePersistException</a></strong>(java.lang.String&nbsp;message,
                    java.lang.Throwable&nbsp;cause)</code>
<div class="block">Subclasses can override this to provide a more specialized exception.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a></code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#toFetchException()">toFetchException</a></strong>()</code>
<div class="block">Converts RepositoryException into an appropriate FetchException.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a></code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#toFetchException(java.lang.String)">toFetchException</a></strong>(java.lang.String&nbsp;message)</code>
<div class="block">Converts RepositoryException into an appropriate FetchException, prepending
 the specified message.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a></code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#toPersistException()">toPersistException</a></strong>()</code>
<div class="block">Converts RepositoryException into an appropriate PersistException.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a></code></td>
<td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#toPersistException(java.lang.String)">toPersistException</a></strong>(java.lang.String&nbsp;message)</code>
<div class="block">Converts RepositoryException into an appropriate PersistException, prepending
 the specified message.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Throwable">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</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="RepositoryException()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RepositoryException</h4>
<pre>public&nbsp;RepositoryException()</pre>
</li>
</ul>
<a name="RepositoryException(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RepositoryException</h4>
<pre>public&nbsp;RepositoryException(java.lang.String&nbsp;message)</pre>
</li>
</ul>
<a name="RepositoryException(java.lang.String, java.lang.Throwable)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RepositoryException</h4>
<pre>public&nbsp;RepositoryException(java.lang.String&nbsp;message,
                   java.lang.Throwable&nbsp;cause)</pre>
</li>
</ul>
<a name="RepositoryException(java.lang.Throwable)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RepositoryException</h4>
<pre>public&nbsp;RepositoryException(java.lang.Throwable&nbsp;cause)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="backoff(java.lang.Throwable,int,int)">
<!--   -->
</a><a name="backoff(E, int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>backoff</h4>
<pre>public static&nbsp;&lt;E extends java.lang.Throwable&gt;&nbsp;int&nbsp;backoff(E&nbsp;e,
                                          int&nbsp;retryCount,
                                          int&nbsp;milliseconds)
                   throws E extends java.lang.Throwable</pre>
<div class="block">One strategy for resolving an optimistic lock failure is to try the
 operation again, after waiting some bounded random amount of time. This
 method is provided as a convenience, to support such a random wait.
 <p>
 A retry count is required as well, which is decremented and returned by
 this method. If the retry count is zero (or less) when this method is
 called, then this exception is thrown again, indicating retry failure.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>retryCount</code> - current retry count, if zero, throw this exception again</dd><dd><code>milliseconds</code> - upper bound on the random amount of time to wait</dd>
<dt><span class="strong">Returns:</span></dt><dd>retryCount minus one</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>E</code> - if retry count is zero</dd>
<dd><code>E extends java.lang.Throwable</code></dd></dl>
</li>
</ul>
<a name="getRootCause()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRootCause</h4>
<pre>public&nbsp;java.lang.Throwable&nbsp;getRootCause()</pre>
<div class="block">Recursively calls getCause, until the root cause is found. Returns this
 if no root cause.</div>
</li>
</ul>
<a name="toPersistException()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toPersistException</h4>
<pre>public final&nbsp;<a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a>&nbsp;toPersistException()</pre>
<div class="block">Converts RepositoryException into an appropriate PersistException.</div>
</li>
</ul>
<a name="toPersistException(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toPersistException</h4>
<pre>public final&nbsp;<a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a>&nbsp;toPersistException(java.lang.String&nbsp;message)</pre>
<div class="block">Converts RepositoryException into an appropriate PersistException, prepending
 the specified message. If message is null, original exception message is
 preserved.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>message</code> - message to prepend, which may be null</dd></dl>
</li>
</ul>
<a name="toFetchException()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toFetchException</h4>
<pre>public final&nbsp;<a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a>&nbsp;toFetchException()</pre>
<div class="block">Converts RepositoryException into an appropriate FetchException.</div>
</li>
</ul>
<a name="toFetchException(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toFetchException</h4>
<pre>public final&nbsp;<a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a>&nbsp;toFetchException(java.lang.String&nbsp;message)</pre>
<div class="block">Converts RepositoryException into an appropriate FetchException, prepending
 the specified message. If message is null, original exception message is
 preserved.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>message</code> - message to prepend, which may be null</dd></dl>
</li>
</ul>
<a name="makePersistException(java.lang.String, java.lang.Throwable)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>makePersistException</h4>
<pre>protected&nbsp;<a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a>&nbsp;makePersistException(java.lang.String&nbsp;message,
                                    java.lang.Throwable&nbsp;cause)</pre>
<div class="block">Subclasses can override this to provide a more specialized exception.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>message</code> - exception message, which may be null</dd><dd><code>cause</code> - non-null cause</dd></dl>
</li>
</ul>
<a name="makeFetchException(java.lang.String, java.lang.Throwable)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>makeFetchException</h4>
<pre>protected&nbsp;<a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a>&nbsp;makeFetchException(java.lang.String&nbsp;message,
                                java.lang.Throwable&nbsp;cause)</pre>
<div class="block">Subclasses can override this to provide a more specialized exception.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>message</code> - exception message, which may be null</dd><dd><code>cause</code> - non-null cause</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><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/RepositoryException.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-files/index-1.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/amazon/carbonado/RepositoryBuilder.html" title="interface in com.amazon.carbonado"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../com/amazon/carbonado/Sequence.html" title="annotation in com.amazon.carbonado"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/amazon/carbonado/RepositoryException.html" target="_top">Frames</a></li>
<li><a href="RepositoryException.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All 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; 2006-2013 <a href="https://github.com/Carbonado/Carbonado">Amazon Technologies, Inc.</a>. All Rights Reserved.</small></p>
</body>
</html>