<!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 Fri Mar 28 13:34:25 EST 2014 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Cache (JSR107 API and SPI 1.0.0 API)</title>
<meta name="date" content="2014-03-28">
<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="Cache (JSR107 API and SPI 1.0.0 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/Cache.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>Prev Class</li>
<li><a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/cache/Cache.html" target="_top">Frames</a></li>
<li><a href="Cache.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><a href="#nested_class_summary">Nested</a>&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">javax.cache</div>
<h2 title="Interface Cache" class="title">Interface Cache&lt;K,V&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>K</code> - the type of key</dd><dd><code>V</code> - the type of value</dd></dl>
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="http://download.oracle.com/javase/6/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache">Cache.Entry</a>&lt;K,V&gt;&gt;</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">Cache&lt;K,V&gt;</span>
extends <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache">Cache.Entry</a>&lt;K,V&gt;&gt;, <a href="http://download.oracle.com/javase/6/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></pre>
<div class="block">A <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> is a Map-like data structure that provides temporary storage
 of application data.
 <p>
 Like <a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>s, <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>s
 <ol>
 <li>store key-value pairs, each referred to as an <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a></li>
 <li>allow use of Java Generics to improve application type-safety</li>
 <li>are <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang"><code>Iterable</code></a></li>
 </ol>
 <p>
 Unlike <a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>s, <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>s
 <ol>
 <li>do not allow null keys or values.  Attempts to use <code>null</code>
 will result in a <a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang"><code>NullPointerException</code></a></li>
 <li>provide the ability to read values from a
 <a href="../../javax/cache/integration/CacheLoader.html" title="interface in javax.cache.integration"><code>CacheLoader</code></a> (read-through-caching)
 when a value being requested is not in a cache</li>
 <li>provide the ability to write values to a
 <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a> (write-through-caching)
 when a value being created/updated/removed from a cache</li>
 <li>provide the ability to observe cache entry changes</li>
 <li>may capture and measure operational statistics</li>
 </ol>
 <p>
 A simple example of how to use a cache is:
 <pre><code>
 String cacheName = "sampleCache";
 CachingProvider provider = Caching.getCachingProvider();
 CacheManager manager = provider.getCacheManager();
 Cache&lt;Integer, Date&gt; cache = manager.getCache(cacheName, Integer.class,
                                                     Date.class);
 Date value1 = new Date();
 Integer key = 1;
 cache.put(key, value1);
 Date value2 = cache.get(key);
 </code></pre></div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>1.0</dd>
<dt><span class="strong">Author:</span></dt>
  <dd>Greg Luck, Yannis Cosmadopoulos, Brian Oliver</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested_class_summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache">Cache.Entry</a>&lt;<a href="../../javax/cache/Cache.Entry.html" title="type parameter in Cache.Entry">K</a>,<a href="../../javax/cache/Cache.Entry.html" title="type parameter in Cache.Entry">V</a>&gt;</strong></code>
<div class="block">A cache entry (key-value pair).</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="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>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#clear()">clear</a></strong>()</code>
<div class="block">Clears the contents of the cache, without notifying listeners or
 <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a>s.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#close()">close</a></strong>()</code>
<div class="block">Closing a <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> signals to the <a href="../../javax/cache/CacheManager.html" title="interface in javax.cache"><code>CacheManager</code></a> that produced or
 owns the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> that it should no longer be managed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#containsKey(K)">containsKey</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</code>
<div class="block">Determines if the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> contains an entry for the specified key.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#deregisterCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration)">deregisterCacheEntryListener</a></strong>(<a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration">CacheEntryListenerConfiguration</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;cacheEntryListenerConfiguration)</code>
<div class="block">Deregisters a listener, using the
 <a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration"><code>CacheEntryListenerConfiguration</code></a> that was used to register it.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a></code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#get(K)">get</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</code>
<div class="block">Gets an entry from the cache.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#getAll(java.util.Set)">getAll</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys)</code>
<div class="block">Gets a collection of entries from the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>, returning them as
 <a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> of the values associated with the set of keys requested.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a></code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#getAndPut(K, V)">getAndPut</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
         <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</code>
<div class="block">Associates the specified value with the specified key in this cache,
 returning an existing value if one existed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a></code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#getAndRemove(K)">getAndRemove</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</code>
<div class="block">Atomically removes the entry for a key only if currently mapped to some
 value.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a></code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#getAndReplace(K, V)">getAndReplace</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
             <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</code>
<div class="block">Atomically replaces the value for a given key if and only if there is a
 value currently mapped by the key.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../javax/cache/CacheManager.html" title="interface in javax.cache">CacheManager</a></code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#getCacheManager()">getCacheManager</a></strong>()</code>
<div class="block">Gets the <a href="../../javax/cache/CacheManager.html" title="interface in javax.cache"><code>CacheManager</code></a> that owns and manages the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>&lt;C extends <a href="../../javax/cache/configuration/Configuration.html" title="interface in javax.cache.configuration">Configuration</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&gt;&nbsp;<br>C</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#getConfiguration(java.lang.Class)">getConfiguration</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;C&gt;&nbsp;clazz)</code>
<div class="block">Provides a standard way to access the configuration of a cache using
 JCache configuration or additional proprietary configuration.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://download.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><strong><a href="../../javax/cache/Cache.html#getName()">getName</a></strong>()</code>
<div class="block">Return the name of the cache.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#invoke(K, javax.cache.processor.EntryProcessor, java.lang.Object...)">invoke</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
      <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor">EntryProcessor</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>,T&gt;&nbsp;entryProcessor,
      <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;arguments)</code>
<div class="block">Invokes an <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> against the <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a> specified by
 the provided key.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/processor/EntryProcessorResult.html" title="interface in javax.cache.processor">EntryProcessorResult</a>&lt;T&gt;&gt;</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#invokeAll(java.util.Set, javax.cache.processor.EntryProcessor, java.lang.Object...)">invokeAll</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys,
         <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor">EntryProcessor</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>,T&gt;&nbsp;entryProcessor,
         <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;arguments)</code>
<div class="block">Invokes an <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> against the set of <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a>s
 specified by the set of keys.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#isClosed()">isClosed</a></strong>()</code>
<div class="block">Determines whether this Cache instance has been closed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache">Cache.Entry</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&gt;</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#iterator()">iterator</a></strong>()</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#loadAll(java.util.Set, boolean, javax.cache.integration.CompletionListener)">loadAll</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys,
       boolean&nbsp;replaceExistingValues,
       <a href="../../javax/cache/integration/CompletionListener.html" title="interface in javax.cache.integration">CompletionListener</a>&nbsp;completionListener)</code>
<div class="block">Asynchronously loads the specified entries into the cache using the
 configured <a href="../../javax/cache/integration/CacheLoader.html" title="interface in javax.cache.integration"><code>CacheLoader</code></a> for the given keys.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#put(K, V)">put</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
   <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</code>
<div class="block">Associates the specified value with the specified key in the cache.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#putAll(java.util.Map)">putAll</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;map)</code>
<div class="block">Copies all of the entries from the specified map to the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#putIfAbsent(K, V)">putIfAbsent</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
           <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</code>
<div class="block">Atomically associates the specified key with the given value if it is
 not already associated with a value.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#registerCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration)">registerCacheEntryListener</a></strong>(<a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration">CacheEntryListenerConfiguration</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;cacheEntryListenerConfiguration)</code>
<div class="block">Registers a <a href="../../javax/cache/event/CacheEntryListener.html" title="interface in javax.cache.event"><code>CacheEntryListener</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#remove(K)">remove</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</code>
<div class="block">Removes the mapping for a key from this cache if it is present.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#remove(K, V)">remove</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
      <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;oldValue)</code>
<div class="block">Atomically removes the mapping for a key only if currently mapped to the
 given value.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#removeAll()">removeAll</a></strong>()</code>
<div class="block">Removes all of the mappings from this cache.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#removeAll(java.util.Set)">removeAll</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys)</code>
<div class="block">Removes entries for the specified keys.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#replace(K, V)">replace</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
       <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</code>
<div class="block">Atomically replaces the entry for a key only if currently mapped to some
 value.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#replace(K, V, V)">replace</a></strong>(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
       <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;oldValue,
       <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;newValue)</code>
<div class="block">Atomically replaces the entry for a key only if currently mapped to a
 given value.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;T</code></td>
<td class="colLast"><code><strong><a href="../../javax/cache/Cache.html#unwrap(java.lang.Class)">unwrap</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;clazz)</code>
<div class="block">Provides a standard way to access the underlying concrete caching
 implementation to provide access to further, proprietary features.</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="get(java.lang.Object)">
<!--   -->
</a><a name="get(K)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;get(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</pre>
<div class="block">Gets an entry from the cache.
 <p>
 If the cache is configured to use read-through, and get would return null
 because the entry is missing from the cache, the Cache's <a href="../../javax/cache/integration/CacheLoader.html" title="interface in javax.cache.integration"><code>CacheLoader</code></a>
 is called in an attempt to load the entry.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - the key whose associated value is to be returned</dd>
<dt><span class="strong">Returns:</span></dt><dd>the element, or null, if it does not exist.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the key is null</dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem fetching the value</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd></dl>
</li>
</ul>
<a name="getAll(java.util.Set)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAll</h4>
<pre><a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;getAll(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys)</pre>
<div class="block">Gets a collection of entries from the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>, returning them as
 <a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> of the values associated with the set of keys requested.
 <p>
 If the cache is configured read-through, and a get for a key would
 return null because an entry is missing from the cache, the Cache's
 <a href="../../javax/cache/integration/CacheLoader.html" title="interface in javax.cache.integration"><code>CacheLoader</code></a> is called in an attempt to load the entry. If an
 entry cannot be loaded for a given key, the key will not be present in
 the returned Map.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>keys</code> - The keys whose associated values are to be returned.</dd>
<dt><span class="strong">Returns:</span></dt><dd>A map of entries that were found for the given keys. Keys not found
         in the cache are not in the returned map.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if keys is null or if keys contains a null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem fetching the values</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd></dl>
</li>
</ul>
<a name="containsKey(java.lang.Object)">
<!--   -->
</a><a name="containsKey(K)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsKey</h4>
<pre>boolean&nbsp;containsKey(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</pre>
<div class="block">Determines if the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> contains an entry for the specified key.
 <p>
 More formally, returns <tt>true</tt> if and only if this cache contains a
 mapping for a key <tt>k</tt> such that <tt>key.equals(k)</tt>.
 (There can be at most one such mapping.)</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key whose presence in this cache is to be tested.</dd>
<dt><span class="strong">Returns:</span></dt><dd><tt>true</tt> if this map contains a mapping for the specified key</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - it there is a problem checking the mapping</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true#containsKey(java.lang.Object)" title="class or interface in java.util"><code>Map.containsKey(Object)</code></a></dd></dl>
</li>
</ul>
<a name="loadAll(java.util.Set, boolean, javax.cache.integration.CompletionListener)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>loadAll</h4>
<pre>void&nbsp;loadAll(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys,
           boolean&nbsp;replaceExistingValues,
           <a href="../../javax/cache/integration/CompletionListener.html" title="interface in javax.cache.integration">CompletionListener</a>&nbsp;completionListener)</pre>
<div class="block">Asynchronously loads the specified entries into the cache using the
 configured <a href="../../javax/cache/integration/CacheLoader.html" title="interface in javax.cache.integration"><code>CacheLoader</code></a> for the given keys.
 <p>
 If an entry for a key already exists in the Cache, a value will be loaded
 if and only if <code>replaceExistingValues</code> is true.   If no loader
 is configured for the cache, no objects will be loaded.  If a problem is
 encountered during the retrieving or loading of the objects,
 an exception is provided to the <a href="../../javax/cache/integration/CompletionListener.html" title="interface in javax.cache.integration"><code>CompletionListener</code></a>.  Once the
 operation has completed, the specified CompletionListener is notified.
 <p>
 Implementations may choose to load multiple keys from the provided
 <a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util"><code>Set</code></a> in parallel.  Iteration however must not occur in parallel,
 thus allow for non-thread-safe <a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util"><code>Set</code></a>s to be used.
 <p>
 The thread on which the completion listener is called is implementation
 dependent. An implementation may also choose to serialize calls to
 different CompletionListeners rather than use a thread per
 CompletionListener.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>keys</code> - the keys to load</dd><dd><code>replaceExistingValues</code> - when true existing values in the Cache will
                              be replaced by those loaded from a CacheLoader</dd><dd><code>completionListener</code> - the CompletionListener (may be null)</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if keys is null or if keys contains a null.</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - thrown if there is a problem performing the
                               load. This may also be thrown on calling if
                               there are insufficient threads available to
                               perform the load.</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd></dl>
</li>
</ul>
<a name="put(java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="put(K, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>put</h4>
<pre>void&nbsp;put(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
       <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</pre>
<div class="block">Associates the specified value with the specified key in the cache.
 <p>
 If the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> previously contained a mapping for the key, the old
 value is replaced by the specified value.  (A cache <tt>c</tt> is said to
 contain a mapping for a key <tt>k</tt> if and only if <a href="../../javax/cache/Cache.html#containsKey(K)"><code>c.containsKey(k)</code></a> would return <tt>true</tt>.)</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key with which the specified value is to be associated</dd><dd><code>value</code> - value to be associated with the specified key</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null or if value is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem doing the put</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true#put(K, V)" title="class or interface in java.util"><code>Map.put(Object, Object)</code></a>, 
<a href="../../javax/cache/Cache.html#getAndPut(K, V)"><code>getAndPut(Object, Object)</code></a>, 
<a href="../../javax/cache/Cache.html#getAndReplace(K, V)"><code>getAndReplace(Object, Object)</code></a>, 
<a href="../../javax/cache/integration/CacheWriter.html#write(javax.cache.Cache.Entry)"><code>CacheWriter.write(javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="getAndPut(java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="getAndPut(K, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAndPut</h4>
<pre><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;getAndPut(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
          <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</pre>
<div class="block">Associates the specified value with the specified key in this cache,
 returning an existing value if one existed.
 <p>
 If the cache previously contained a mapping for
 the key, the old value is replaced by the specified value.  (A cache
 <tt>c</tt> is said to contain a mapping for a key <tt>k</tt> if and only
 if <a href="../../javax/cache/Cache.html#containsKey(K)"><code>c.containsKey(k)</code></a> would return
 <tt>true</tt>.)
 <p>
 The previous value is returned, or null if there was no value associated
 with the key previously.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key with which the specified value is to be associated</dd><dd><code>value</code> - value to be associated with the specified key</dd>
<dt><span class="strong">Returns:</span></dt><dd>the value associated with the key at the start of the operation or
         null if none was associated</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null or if value is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem doing the put</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/Cache.html#put(K, V)"><code>put(Object, Object)</code></a>, 
<a href="../../javax/cache/Cache.html#getAndReplace(K, V)"><code>getAndReplace(Object, Object)</code></a>, 
<a href="../../javax/cache/integration/CacheWriter.html#write(javax.cache.Cache.Entry)"><code>CacheWriter.write(javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="putAll(java.util.Map)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putAll</h4>
<pre>void&nbsp;putAll(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;map)</pre>
<div class="block">Copies all of the entries from the specified map to the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>.
 <p>
 The effect of this call is equivalent to that of calling
 <a href="../../javax/cache/Cache.html#put(K, V)"><code>put(k, v)</code></a> on this cache once for each mapping
 from key <tt>k</tt> to value <tt>v</tt> in the specified map.
 <p>
 The order in which the individual puts occur is undefined.
 <p>
 The behavior of this operation is undefined if entries in the cache
 corresponding to entries in the map are modified or removed while this
 operation is in progress. or if map is modified while the operation is in
 progress.
 <p>
 In Default Consistency mode, individual puts occur atomically but not
 the entire putAll.  Listeners may observe individual updates.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>map</code> - mappings to be stored in this cache</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if map is null or if map contains null keys
                               or values.</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem doing the put.</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#writeAll(java.util.Collection)"><code>CacheWriter.writeAll(java.util.Collection&lt;javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="putIfAbsent(java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="putIfAbsent(K, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putIfAbsent</h4>
<pre>boolean&nbsp;putIfAbsent(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
                  <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</pre>
<div class="block">Atomically associates the specified key with the given value if it is
 not already associated with a value.
 <p>
 This is equivalent to:
 <pre><code>
 if (!cache.containsKey(key)) {}
   cache.put(key, value);
   return true;
 } else {
   return false;
 }
 </code></pre>
 except that the action is performed atomically.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key with which the specified value is to be associated</dd><dd><code>value</code> - value to be associated with the specified key</dd>
<dt><span class="strong">Returns:</span></dt><dd>true if a value was set.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null or value is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem doing the put</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#write(javax.cache.Cache.Entry)"><code>CacheWriter.write(javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="remove(java.lang.Object)">
<!--   -->
</a><a name="remove(K)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre>boolean&nbsp;remove(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</pre>
<div class="block">Removes the mapping for a key from this cache if it is present.
 <p>
 More formally, if this cache contains a mapping from key <tt>k</tt> to
 value <tt>v</tt> such that
 <code>(key==null ?  k==null : key.equals(k))</code>, that mapping is removed.
 (The cache can contain at most one such mapping.)
 
 <p>Returns <tt>true</tt> if this cache previously associated the key,
 or <tt>false</tt> if the cache contained no mapping for the key.
 <p>
 The cache will not contain a mapping for the specified key once the
 call returns.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key whose mapping is to be removed from the cache</dd>
<dt><span class="strong">Returns:</span></dt><dd>returns false if there was no matching key</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem doing the remove</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#delete(java.lang.Object)"><code>CacheWriter.delete(java.lang.Object)</code></a></dd></dl>
</li>
</ul>
<a name="remove(java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="remove(K, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre>boolean&nbsp;remove(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
             <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;oldValue)</pre>
<div class="block">Atomically removes the mapping for a key only if currently mapped to the
 given value.
 <p>
 This is equivalent to:
 <pre><code>
 if (cache.containsKey(key) &amp;&amp; equals(cache.get(key), oldValue) {
   cache.remove(key);
   return true;
 } else {
   return false;
 }
 </code></pre>
 except that the action is performed atomically.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key whose mapping is to be removed from the cache</dd><dd><code>oldValue</code> - value expected to be associated with the specified key</dd>
<dt><span class="strong">Returns:</span></dt><dd>returns false if there was no matching key</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem doing the remove</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#delete(java.lang.Object)"><code>CacheWriter.delete(java.lang.Object)</code></a></dd></dl>
</li>
</ul>
<a name="getAndRemove(java.lang.Object)">
<!--   -->
</a><a name="getAndRemove(K)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAndRemove</h4>
<pre><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;getAndRemove(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key)</pre>
<div class="block">Atomically removes the entry for a key only if currently mapped to some
 value.
 <p>
 This is equivalent to:
 <pre><code>
 if (cache.containsKey(key)) {
   V oldValue = cache.get(key);
   cache.remove(key);
   return oldValue;
 } else {
   return null;
 }
 </code></pre>
 except that the action is performed atomically.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key with which the specified value is associated</dd>
<dt><span class="strong">Returns:</span></dt><dd>the value if one existed or null if no mapping existed for this key</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the specified key or value is null.</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the remove</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#delete(java.lang.Object)"><code>CacheWriter.delete(java.lang.Object)</code></a></dd></dl>
</li>
</ul>
<a name="replace(java.lang.Object,java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="replace(K, V, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre>boolean&nbsp;replace(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
              <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;oldValue,
              <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;newValue)</pre>
<div class="block">Atomically replaces the entry for a key only if currently mapped to a
 given value.
 <p>
 This is equivalent to:
 <pre><code>
 if (cache.containsKey(key) &amp;&amp; equals(cache.get(key), oldValue)) {
  cache.put(key, newValue);
 return true;
 } else {
  return false;
 }
 </code></pre>
 except that the action is performed atomically.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key with which the specified value is associated</dd><dd><code>oldValue</code> - value expected to be associated with the specified key</dd><dd><code>newValue</code> - value to be associated with the specified key</dd>
<dt><span class="strong">Returns:</span></dt><dd><tt>true</tt> if the value was replaced</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null or if the values are null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the replace</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#write(javax.cache.Cache.Entry)"><code>CacheWriter.write(javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="replace(java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="replace(K, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre>boolean&nbsp;replace(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
              <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</pre>
<div class="block">Atomically replaces the entry for a key only if currently mapped to some
 value.
 <p>
 This is equivalent to
 <pre><code>
 if (cache.containsKey(key)) {
   cache.put(key, value);
   return true;
 } else {
   return false;
 }</code></pre>
 except that the action is performed atomically.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - the key with which the specified value is associated</dd><dd><code>value</code> - the value to be associated with the specified key</dd>
<dt><span class="strong">Returns:</span></dt><dd><tt>true</tt> if the value was replaced</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null or if value is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the replace</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/Cache.html#getAndReplace(K, V)"><code>getAndReplace(Object, Object)</code></a>, 
<a href="../../javax/cache/integration/CacheWriter.html#write(javax.cache.Cache.Entry)"><code>CacheWriter.write(javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="getAndReplace(java.lang.Object,java.lang.Object)">
<!--   -->
</a><a name="getAndReplace(K, V)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAndReplace</h4>
<pre><a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;getAndReplace(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
              <a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&nbsp;value)</pre>
<div class="block">Atomically replaces the value for a given key if and only if there is a
 value currently mapped by the key.
 <p>
 This is equivalent to
 <pre><code>
 if (cache.containsKey(key)) {
   V oldValue = cache.get(key);
   cache.put(key, value);
   return oldValue;
 } else {
   return null;
 }
 </code></pre>
 except that the action is performed atomically.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - key with which the specified value is associated</dd><dd><code>value</code> - value to be associated with the specified key</dd>
<dt><span class="strong">Returns:</span></dt><dd>the previous value associated with the specified key, or
         <tt>null</tt> if there was no mapping for the key.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null or if value is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the replace</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#replace(K, V)" title="class or interface in java.util.concurrent"><code>ConcurrentMap.replace(Object, Object)</code></a>, 
<a href="../../javax/cache/integration/CacheWriter.html#write(javax.cache.Cache.Entry)"><code>CacheWriter.write(javax.cache.Cache.Entry&lt;? extends K, ? extends V&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="removeAll(java.util.Set)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAll</h4>
<pre>void&nbsp;removeAll(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys)</pre>
<div class="block">Removes entries for the specified keys.
 <p>
 The order in which the individual entries are removed is undefined.
 <p>
 For every entry in the key set, the following are called:
 <ul>
   <li>any registered <a href="../../javax/cache/event/CacheEntryRemovedListener.html" title="interface in javax.cache.event"><code>CacheEntryRemovedListener</code></a>s</li>
   <li>if the cache is a write-through cache, the <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a></li>
 </ul>
 If the key set is empty, the <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a> is not called.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>keys</code> - the keys to remove</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if keys is null or if it contains a null key</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the remove</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/integration/CacheWriter.html#deleteAll(java.util.Collection)"><code>CacheWriter.deleteAll(java.util.Collection&lt;?&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="removeAll()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAll</h4>
<pre>void&nbsp;removeAll()</pre>
<div class="block">Removes all of the mappings from this cache.
 <p>
 The order that the individual entries are removed is undefined.
 <p>
 For every mapping that exists the following are called:
 <ul>
   <li>any registered <a href="../../javax/cache/event/CacheEntryRemovedListener.html" title="interface in javax.cache.event"><code>CacheEntryRemovedListener</code></a>s</li>
   <li>if the cache is a write-through cache, the <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a></li>
 </ul>
 If the cache is empty, the <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a> is not called.
 <p>
 This is potentially an expensive operation as listeners are invoked.
 Use <a href="../../javax/cache/Cache.html#clear()"><code>clear()</code></a> to avoid this.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the remove</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/Cache.html#clear()"><code>clear()</code></a>, 
<a href="../../javax/cache/integration/CacheWriter.html#deleteAll(java.util.Collection)"><code>CacheWriter.deleteAll(java.util.Collection&lt;?&gt;)</code></a></dd></dl>
</li>
</ul>
<a name="clear()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
<pre>void&nbsp;clear()</pre>
<div class="block">Clears the contents of the cache, without notifying listeners or
 <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a>s.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="../../javax/cache/CacheException.html" title="class in javax.cache">CacheException</a></code> - if there is a problem during the clear</dd></dl>
</li>
</ul>
<a name="getConfiguration(java.lang.Class)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConfiguration</h4>
<pre>&lt;C extends <a href="../../javax/cache/configuration/Configuration.html" title="interface in javax.cache.configuration">Configuration</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&gt;&nbsp;C&nbsp;getConfiguration(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;C&gt;&nbsp;clazz)</pre>
<div class="block">Provides a standard way to access the configuration of a cache using
 JCache configuration or additional proprietary configuration.
 <p>
 The returned value must be immutable.
 <p>
 If the provider's implementation does not support the specified class,
 the <a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang"><code>IllegalArgumentException</code></a> is thrown.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>clazz</code> - the configuration interface or class to return. This includes
              <a href="../../javax/cache/configuration/Configuration.html" title="interface in javax.cache.configuration"><code>Configuration</code></a>.class and
              <a href="../../javax/cache/configuration/CompleteConfiguration.html" title="interface in javax.cache.configuration"><code>CompleteConfiguration</code></a>s.</dd>
<dt><span class="strong">Returns:</span></dt><dd>the requested implementation of <a href="../../javax/cache/configuration/Configuration.html" title="interface in javax.cache.configuration"><code>Configuration</code></a></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the caching provider doesn't support
                                  the specified class.</dd></dl>
</li>
</ul>
<a name="invoke(java.lang.Object,javax.cache.processor.EntryProcessor,java.lang.Object[])">
<!--   -->
</a><a name="invoke(K, javax.cache.processor.EntryProcessor, java.lang.Object...)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invoke</h4>
<pre>&lt;T&gt;&nbsp;T&nbsp;invoke(<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&nbsp;key,
           <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor">EntryProcessor</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>,T&gt;&nbsp;entryProcessor,
           <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;arguments)
         throws <a href="../../javax/cache/processor/EntryProcessorException.html" title="class in javax.cache.processor">EntryProcessorException</a></pre>
<div class="block">Invokes an <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> against the <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a> specified by
 the provided key. If an <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a> does not exist for the specified key,
 an attempt is made to load it (if a loader is configured) or a surrogate
 <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a>, consisting of the key with a null value is used instead.
 <p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - the key to the entry</dd><dd><code>entryProcessor</code> - the <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> to invoke</dd><dd><code>arguments</code> - additional arguments to pass to the
                       <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a></dd>
<dt><span class="strong">Returns:</span></dt><dd>the result of the processing, if any, defined by the
         <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> implementation</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key or <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd>
<dd><code><a href="../../javax/cache/processor/EntryProcessorException.html" title="class in javax.cache.processor">EntryProcessorException</a></code> - if an exception is thrown by the <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a>, a Caching Implementation
                                 must wrap any <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang"><code>Exception</code></a> thrown
                                 wrapped in an <a href="../../javax/cache/processor/EntryProcessorException.html" title="class in javax.cache.processor"><code>EntryProcessorException</code></a>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a></dd></dl>
</li>
</ul>
<a name="invokeAll(java.util.Set, javax.cache.processor.EntryProcessor, java.lang.Object...)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invokeAll</h4>
<pre>&lt;T&gt;&nbsp;<a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/processor/EntryProcessorResult.html" title="interface in javax.cache.processor">EntryProcessorResult</a>&lt;T&gt;&gt;&nbsp;invokeAll(<a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;? extends <a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>&gt;&nbsp;keys,
                                           <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor">EntryProcessor</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>,T&gt;&nbsp;entryProcessor,
                                           <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;arguments)</pre>
<div class="block">Invokes an <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> against the set of <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a>s
 specified by the set of keys.
 <p>
 If an <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a> does not exist for the specified key, an attempt is made
 to load it (if a loader is configured) or a surrogate <a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><code>Cache.Entry</code></a>,
 consisting of the key and a value of null is provided.
 <p>
 The order that the entries for the keys are processed is undefined.
 Implementations may choose to process the entries in any order, including
 concurrently.  Furthermore there is no guarantee implementations will
 use the same <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> instance to process each entry, as
 the case may be in a non-local cache topology.
 <p>
 The result of executing the <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> is returned as a
 <a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> of <a href="../../javax/cache/processor/EntryProcessorResult.html" title="interface in javax.cache.processor"><code>EntryProcessorResult</code></a>s, one result per key.  Should the
 <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> or Caching implementation throw an exception, the
 exception is wrapped and re-thrown when a call to
 <a href="../../javax/cache/processor/EntryProcessorResult.html#get()"><code>EntryProcessorResult.get()</code></a> is made.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>keys</code> - the set of keys for entries to process</dd><dd><code>entryProcessor</code> - the <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> to invoke</dd><dd><code>arguments</code> - additional arguments to pass to the
                       <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a></dd>
<dt><span class="strong">Returns:</span></dt><dd>the map of <a href="../../javax/cache/processor/EntryProcessorResult.html" title="interface in javax.cache.processor"><code>EntryProcessorResult</code></a>s of the processing per key,
 if any, defined by the <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> implementation.  No mappings
 will be returned for <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a>s that return a
 <code>null</code> value for a key.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if keys or <a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a> are null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the implementation is configured to perform
                               runtime-type-checking, and the key or value
                               types are incompatible with those that have been
                               configured for the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/processor/EntryProcessor.html" title="interface in javax.cache.processor"><code>EntryProcessor</code></a></dd></dl>
</li>
</ul>
<a name="getName()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre><a href="http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getName()</pre>
<div class="block">Return the name of the cache.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the name of the cache.</dd></dl>
</li>
</ul>
<a name="getCacheManager()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCacheManager</h4>
<pre><a href="../../javax/cache/CacheManager.html" title="interface in javax.cache">CacheManager</a>&nbsp;getCacheManager()</pre>
<div class="block">Gets the <a href="../../javax/cache/CacheManager.html" title="interface in javax.cache"><code>CacheManager</code></a> that owns and manages the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the manager or <code>null</code> if the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> is not
         managed</dd></dl>
</li>
</ul>
<a name="close()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>void&nbsp;close()</pre>
<div class="block">Closing a <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> signals to the <a href="../../javax/cache/CacheManager.html" title="interface in javax.cache"><code>CacheManager</code></a> that produced or
 owns the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a> that it should no longer be managed. At this
 point in time the <a href="../../javax/cache/CacheManager.html" title="interface in javax.cache"><code>CacheManager</code></a>:
 <ul>
 <li>must close and release all resources being coordinated on behalf of the
 Cache by the <a href="../../javax/cache/CacheManager.html" title="interface in javax.cache"><code>CacheManager</code></a>. This includes calling the <code>close
 </code> method on configured <a href="../../javax/cache/integration/CacheLoader.html" title="interface in javax.cache.integration"><code>CacheLoader</code></a>,
 <a href="../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a>, registered <a href="../../javax/cache/event/CacheEntryListener.html" title="interface in javax.cache.event"><code>CacheEntryListener</code></a>s and
 <a href="../../javax/cache/expiry/ExpiryPolicy.html" title="interface in javax.cache.expiry"><code>ExpiryPolicy</code></a> instances that implement the java.io.Closeable
 interface.
 <li>prevent events being delivered to configured <a href="../../javax/cache/event/CacheEntryListener.html" title="interface in javax.cache.event"><code>CacheEntryListener</code></a>s
 registered on the <a href="../../javax/cache/Cache.html" title="interface in javax.cache"><code>Cache</code></a>
 </li>
 <li>not return the name of the Cache when the CacheManager getCacheNames()
 method is called</li>
 </ul>
 Once closed any attempt to use an operational method on a Cache will throw an
 <a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang"><code>IllegalStateException</code></a>.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/AutoCloseable.html?is-external=true#close()" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/io/Closeable.html?is-external=true#close()" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://download.oracle.com/javase/6/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/SecurityException.html?is-external=true" title="class or interface in java.lang">SecurityException</a></code> - when the operation could not be performed
                           due to the current security settings</dd></dl>
</li>
</ul>
<a name="isClosed()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isClosed</h4>
<pre>boolean&nbsp;isClosed()</pre>
<div class="block">Determines whether this Cache instance has been closed. A Cache is
 considered closed if;
 <ol>
 <li>the <a href="../../javax/cache/Cache.html#close()"><code>close()</code></a> method has been called</li>
 <li>the associated <a href="../../javax/cache/Cache.html#getCacheManager()"><code>getCacheManager()</code></a> has been closed, or</li>
 <li>the Cache has been removed from the associated
 <a href="../../javax/cache/Cache.html#getCacheManager()"><code>getCacheManager()</code></a></li>
 </ol>
 <p>
 This method generally cannot be called to determine whether a Cache instance
 is valid or invalid. A typical client can determine that a Cache is invalid
 by catching any exceptions that might be thrown when an operation is
 attempted.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if this Cache instance is closed; false if it is still open</dd></dl>
</li>
</ul>
<a name="unwrap(java.lang.Class)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unwrap</h4>
<pre>&lt;T&gt;&nbsp;T&nbsp;unwrap(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;clazz)</pre>
<div class="block">Provides a standard way to access the underlying concrete caching
 implementation to provide access to further, proprietary features.
 <p>
 If the provider's implementation does not support the specified class,
 the <a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang"><code>IllegalArgumentException</code></a> is thrown.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>clazz</code> - the proprietary class or interface of the underlying concrete
              cache. It is this type that is returned.</dd>
<dt><span class="strong">Returns:</span></dt><dd>an instance of the underlying concrete cache</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the caching provider doesn't support
                                  the specified class.</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/SecurityException.html?is-external=true" title="class or interface in java.lang">SecurityException</a></code> - when the operation could not be performed
                                  due to the current security settings</dd></dl>
</li>
</ul>
<a name="registerCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerCacheEntryListener</h4>
<pre>void&nbsp;registerCacheEntryListener(<a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration">CacheEntryListenerConfiguration</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;cacheEntryListenerConfiguration)</pre>
<div class="block">Registers a <a href="../../javax/cache/event/CacheEntryListener.html" title="interface in javax.cache.event"><code>CacheEntryListener</code></a>. The supplied
 <a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration"><code>CacheEntryListenerConfiguration</code></a> is used to instantiate a listener
 and apply it to those events specified in the configuration.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>cacheEntryListenerConfiguration</code> - a factory and related configuration
         for creating the listener</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - is the same CacheEntryListenerConfiguration
                                  is used more than once</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../javax/cache/event/CacheEntryListener.html" title="interface in javax.cache.event"><code>CacheEntryListener</code></a></dd></dl>
</li>
</ul>
<a name="deregisterCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deregisterCacheEntryListener</h4>
<pre>void&nbsp;deregisterCacheEntryListener(<a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration">CacheEntryListenerConfiguration</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&nbsp;cacheEntryListenerConfiguration)</pre>
<div class="block">Deregisters a listener, using the
 <a href="../../javax/cache/configuration/CacheEntryListenerConfiguration.html" title="interface in javax.cache.configuration"><code>CacheEntryListenerConfiguration</code></a> that was used to register it.
 <p>
 Both listeners registered at configuration time,
 and those created at runtime with <a href="../../javax/cache/Cache.html#registerCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration)"><code>registerCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration&lt;K, V&gt;)</code></a> can
 be deregistered.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>cacheEntryListenerConfiguration</code> - the factory and related configuration
         that was used to create the
         listener</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</code></a></dd></dl>
</li>
</ul>
<a name="iterator()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>iterator</h4>
<pre><a href="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache">Cache.Entry</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&gt;&nbsp;iterator()</pre>
<div class="block">
 <p>
 The ordering of iteration over entries is undefined.
 <p>
 During iteration, any entries that are a). read will have their appropriate
 CacheEntryReadListeners notified and b). removed will have their appropriate
 CacheEntryRemoveListeners notified.
 <p>
 <a href="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html?is-external=true#next()" title="class or interface in java.util"><code>Iterator.next()</code></a> may return null if the entry is no
 longer present, has expired or has been evicted.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true#iterator()" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache">Cache.Entry</a>&lt;<a href="../../javax/cache/Cache.html" title="type parameter in Cache">K</a>,<a href="../../javax/cache/Cache.html" title="type parameter in Cache">V</a>&gt;&gt;</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the cache is <a href="../../javax/cache/Cache.html#isClosed()"><code>isClosed()</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><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/Cache.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>Prev Class</li>
<li><a href="../../javax/cache/Cache.Entry.html" title="interface in javax.cache"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/cache/Cache.html" target="_top">Frames</a></li>
<li><a href="Cache.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><a href="#nested_class_summary">Nested</a>&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; 2014. All Rights Reserved.</small></p>
</body>
</html>
