<!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: </li> <li>Nested | </li> <li>Field | </li> <li><a href="#constructor_summary">Constr</a> | </li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> <li>Field | </li> <li><a href="#constructor_detail">Constr</a> | </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"> </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> </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 message)</code> </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 message, java.lang.Throwable cause)</code> </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 cause)</code> </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"> </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 <E extends java.lang.Throwable> <br>int</code></td> <td class="colLast"><code><strong><a href="../../../com/amazon/carbonado/RepositoryException.html#backoff(E, int, int)">backoff</a></strong>(E e, int retryCount, int 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 message, java.lang.Throwable 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 message, java.lang.Throwable 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 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 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 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 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 RepositoryException()</pre> </li> </ul> <a name="RepositoryException(java.lang.String)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>RepositoryException</h4> <pre>public RepositoryException(java.lang.String 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 RepositoryException(java.lang.String message, java.lang.Throwable cause)</pre> </li> </ul> <a name="RepositoryException(java.lang.Throwable)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>RepositoryException</h4> <pre>public RepositoryException(java.lang.Throwable 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 <E extends java.lang.Throwable> int backoff(E e, int retryCount, int 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 java.lang.Throwable 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 <a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a> 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 <a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a> toPersistException(java.lang.String 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 <a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a> 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 <a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a> toFetchException(java.lang.String 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 <a href="../../../com/amazon/carbonado/PersistException.html" title="class in com.amazon.carbonado">PersistException</a> makePersistException(java.lang.String message, java.lang.Throwable 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 <a href="../../../com/amazon/carbonado/FetchException.html" title="class in com.amazon.carbonado">FetchException</a> makeFetchException(java.lang.String message, java.lang.Throwable 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: </li> <li>Nested | </li> <li>Field | </li> <li><a href="#constructor_summary">Constr</a> | </li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> <li>Field | </li> <li><a href="#constructor_detail">Constr</a> | </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 © 2006-2013 <a href="https://github.com/Carbonado/Carbonado">Amazon Technologies, Inc.</a>. All Rights Reserved.</small></p> </body> </html>