<!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 -->
<title>Region (Apache Geode 1.15.1)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Region (Apache Geode 1.15.1)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":38,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":38,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":38,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":38,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":6,"i56":6,"i57":6,"i58":6,"i59":6,"i60":6,"i61":6,"i62":6,"i63":6,"i64":6,"i65":6,"i66":6,"i67":6,"i68":6,"i69":6,"i70":6,"i71":18,"i72":18,"i73":18,"i74":18,"i75":18,"i76":18,"i77":18,"i78":18,"i79":6,"i80":6,"i81":6,"i82":6,"i83":6,"i84":6,"i85":6,"i86":6,"i87":6,"i88":6,"i89":6,"i90":6,"i91":38,"i92":6,"i93":6,"i94":6,"i95":6,"i96":6,"i97":6,"i98":6,"i99":6,"i100":38};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/geode/cache/PartitionResolver.html" title="interface in org.apache.geode.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/geode/cache/Region.html" target="_top">Frames</a></li>
<li><a href="Region.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.geode.cache</div>
<h2 title="Interface Region" class="title">Interface Region&lt;K,V&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;K,V&gt;</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">Region&lt;K,V&gt;</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;</pre>
<div class="block">Manages subregions and cached data. Each region can contain multiple subregions and entries for
 data. Regions provide a hierarchical name space within the cache. Also, a region can be used to
 group cached objects for management purposes.
 <p>

 The Region interface basically contains two set of APIs: Region management APIs; and
 (potentially) distributed operations on entries. Non-distributed operations on entries are
 provided by the inner interface, <a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache"><code>Region.Entry</code></a>.
 <p>

 Each <a href="../../../../org/apache/geode/cache/Cache.html" title="interface in org.apache.geode.cache"><code>Cache</code></a> defines a single top region called the root region.
 User applications can use the root region to create subregions for isolated name space and object
 grouping.
 <p>

 A region's name can be any String except that it should not contain the region name separator, a
 forward slash (/).

 <code>Region</code>s can be referenced by a relative path name from any region higher in the
 hierarchy in <a href="../../../../org/apache/geode/cache/Region.html#getSubregion-java.lang.String-"><code>getSubregion(java.lang.String)</code></a>. You can get the relative path from the root region with
 <a href="../../../../org/apache/geode/cache/Region.html#getFullPath--"><code>getFullPath()</code></a>. The name separator is used to concatenate all the region names together
 from the root, starting with the root's subregions.
 <p>
 Relative region names can provide a convenient method to locate a subregion directly from some
 higher region. For example, a region structure is as follows: a region named
 <i>3rd_level_region</i> has parent region <i>2nd_level_region</i>; region <i>2nd_level_region</i>
 in turn has parent region <i>1st_level_region</i>; and region <i>1st_level_region</i> is a child
 of the root region. Then,the user can get the region <i>3rd_level_region</i> from the root region
 by issuing:

 <pre>
  <code>
  region3 = root.getSubregion("1st_level_region/2nd_level_region/3rd_level_region");
  </code>
 </pre>

 or the user can get the region <i>3rd_level_region</i> from region <i>1st_level_region</i> by
 issuing

 <pre>
  <code>
  region3 = region1.getSubregion("2nd_level_region/3rd_level_region");
  </code>
 </pre>
 <p>
 Region entries are identified by their key. Any Object can be used as a key as long as the key
 Object is region-wide unique and implements both the equals and hashCode methods. For regions
 with distributed scope, the key must also be Serializable.
 <p>
 Regions and their entries can be locked. The <code>Lock</code> obtained from
 <a href="../../../../org/apache/geode/cache/Region.html#getRegionDistributedLock--"><code>getRegionDistributedLock()</code></a> is a distributed lock on the entire Region, and the
 <code>Lock</code> obtained from <a href="../../../../org/apache/geode/cache/Region.html#getDistributedLock-java.lang.Object-"><code>getDistributedLock(java.lang.Object)</code></a> is a distributed lock on the
 individual entry.

 <p>
 If the scope is <code>Scope.GLOBAL</code>, the methods that modify, destroy, or invalidate the
 entries in this region will also get a distributed lock. See the documentations for
 <a href="../../../../org/apache/geode/cache/Region.html#getDistributedLock-java.lang.Object-"><code>getDistributedLock(java.lang.Object)</code></a> and <a href="../../../../org/apache/geode/cache/Region.html#getRegionDistributedLock--"><code>getRegionDistributedLock()</code></a> for details on the implicit
 locking that occurs for regions with <code>Scope.GLOBAL</code>.
 <p>
 Unless otherwise specified, all of these methods throw a <code>CacheClosedException</code> if the
 Cache is closed at the time of invocation, or a <code>RegionDestroyedException</code> if this
 region has been destroyed. Serializability Requirements for arguments: Several methods in the
 region API take parameters such as key, value and callback parameters.All of these parameters are
 typed as objects. For distributed regions, keys, values and callback parameters have to be
 serializable Failure to meet these serialization requirements causes API methods to throw
 IllegalArgumentException.
 <p>
 Implementation of the java.util.concurrent.ConcurrentMap interface was added in version 6.5.
 These methods give various levels of concurrency guarantees based on the scope and data policy of
 the region. They are implemented in the peer cache and client/server cache but are disallowed in
 peer Regions having NORMAL or EMPTY data policies.
 <p>
 The semantics of the ConcurrentMap methods on a Partitioned Region are consistent with those
 expected on a ConcurrentMap. In particular multiple writers in different JVMs of the same key in
 the same Partitioned Region will be done atomically.
 <p>
 The same is true for a region with GLOBAL scope. All operations will be done atomically since a
 distributed lock will be held while the operation is done.
 <p>
 The same is true for a region with LOCAL scope. All ops will be done atomically since the
 underlying map is a concurrent hash map and no distribution is involved.
 <p>
 For peer REPLICATE and PRELOADED regions atomicity is limited to threads in the JVM the operation
 starts in. There is no coordination with other members of the system unless the operation is
 performed in a transaction.
 <p>
 For client server regions the atomicity is determined by the scope and data policy of the server
 region as described above. The operation is actually performed on the server as described above.
 Clients will always send the ConcurrentMap operation to the server and the result returned by the
 ConcurrentMap method in client will reflect what was done on the server. Same goes for any
 CacheListener called on the client. Any local state on the client will be updated to be
 consistent with the state change made on the server.
 <p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 2.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/RegionAttributes.html" title="interface in org.apache.geode.cache"><code>RegionAttributes</code></a>, 
<a href="../../../../org/apache/geode/cache/AttributesFactory.html" title="class in org.apache.geode.cache"><code>AttributesFactory</code></a>, 
<a href="../../../../org/apache/geode/cache/AttributesMutator.html" title="interface in org.apache.geode.cache"><code>AttributesMutator</code></a>, 
<a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache"><code>Region.Entry</code></a></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="memberSummary" 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><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache">Region.Entry</a>&lt;<a href="../../../../org/apache/geode/cache/Region.Entry.html" title="type parameter in Region.Entry">K</a>,<a href="../../../../org/apache/geode/cache/Region.Entry.html" title="type parameter in Region.Entry">V</a>&gt;</span></code>
<div class="block">A key-value pair containing the cached data in a region.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#SEPARATOR">SEPARATOR</a></span></code>
<div class="block">The region name separator character, represented as a string for convenience.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static char</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#SEPARATOR_CHAR">SEPARATOR_CHAR</a></span></code>
<div class="block">The region name separator character.</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="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#becomeLockGrantor--">becomeLockGrantor</a></span>()</code>
<div class="block">Specifies this member to become the grantor for this region's lock service.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#clear--">clear</a></span>()</code>
<div class="block">Removes all entries from this region.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#close--">close</a></span>()</code>
<div class="block">Does a localDestroyRegion, but leaves behind the disk files if this is a region with
 persistBackup set to true.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#containsKey-java.lang.Object-">containsKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Returns whether the specified key currently exists in this region.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#containsKeyOnServer-java.lang.Object-">containsKeyOnServer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Returns whether the specified key currently exists in this region on the server.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#containsValue-java.lang.Object-">containsValue</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Returns true if this region maps one or more keys to the specified value.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#containsValueForKey-java.lang.Object-">containsValueForKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Returns whether there is a valid (non-null) value present for the specified key.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#create-K-V-">create</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
      <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)</code>
<div class="block">Creates a new entry in this region with the specified key and value if and only if an entry
 does not already exist for the specified key.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#create-K-V-java.lang.Object-">create</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
      <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Creates a new entry in this region with the specified key and value, providing a user-defined
 parameter object to any <code>CacheWriter</code> invoked in the process.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>&lt;SK,SV&gt;&nbsp;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;SK,SV&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#createSubregion-java.lang.String-org.apache.geode.cache.RegionAttributes-">createSubregion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subregionName,
               <a href="../../../../org/apache/geode/cache/RegionAttributes.html" title="interface in org.apache.geode.cache">RegionAttributes</a>&lt;SK,SV&gt;&nbsp;aRegionAttributes)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">as of 7.0 use <a href="../../../../org/apache/geode/cache/RegionFactory.html#createSubregion-org.apache.geode.cache.Region-java.lang.String-"><code>RegionFactory.createSubregion(Region, String)</code></a> or
             <a href="../../../../org/apache/geode/cache/client/ClientRegionFactory.html#createSubregion-org.apache.geode.cache.Region-java.lang.String-"><code>ClientRegionFactory.createSubregion(Region, String)</code></a>.</span></div>
</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-">destroy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Destroys the entry with the specified key.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-java.lang.Object-">destroy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Destroys the entry with the specified key, and provides a user-defined parameter object to any
 <code>CacheWriter</code> invoked in the process.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#destroyRegion--">destroyRegion</a></span>()</code>
<div class="block">Destroys the whole region.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#destroyRegion-java.lang.Object-">destroyRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Destroys the whole region and provides a user-defined parameter object to any
 <code>CacheWriter</code> invoked in the process.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#entrySet--">entrySet</a></span>()</code>
<div class="block">Returns the <code>Set</code> of <code>Region.Entry</code> objects in this region.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache">Region.Entry</a>&lt;?,?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#entrySet-boolean-">entrySet</a></span>(boolean&nbsp;recursive)</code>
<div class="block">Returns the <code>Set</code> of <code>Region.Entry</code> objects in this region.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#equals-java.lang.Object-">equals</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;other)</code>
<div class="block">Compares the specified object with this region for equality.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#existsValue-java.lang.String-">existsValue</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryPredicate)</code>
<div class="block">Determines whether there is a value in this <code>Region</code> that matches the given
 <code>queryPredicate</code>.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#forceRolling--">forceRolling</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">use <a href="../../../../org/apache/geode/cache/DiskStore.html#forceRoll--"><code>DiskStore.forceRoll()</code></a> instead.</span></div>
</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#get-java.lang.Object-">get</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Returns the value associated with the specified key.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#get-java.lang.Object-java.lang.Object-">get</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Returns the value associated with the specified key, passing the callback argument to any cache
 loaders or cache writers that are invoked in the operation.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getAll-java.util.Collection-">getAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;keys)</code>
<div class="block">Gets values for all the keys in the input Collection.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>&lt;T extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;<br><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;T,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getAll-java.util.Collection-java.lang.Object-">getAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;keys,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Gets and returns values for all the keys in the input Collection.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/RegionAttributes.html" title="interface in org.apache.geode.cache">RegionAttributes</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getAttributes--">getAttributes</a></span>()</code>
<div class="block">Returns the <code>RegionAttributes</code> for this region.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/AttributesMutator.html" title="interface in org.apache.geode.cache">AttributesMutator</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getAttributesMutator--">getAttributesMutator</a></span>()</code>
<div class="block">Returns a mutator object used for modifying this region's attributes after region creation.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Cache.html" title="interface in org.apache.geode.cache">Cache</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getCache--">getCache</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">as of 6.5 use <a href="../../../../org/apache/geode/cache/Region.html#getRegionService--"><code>getRegionService()</code></a> instead.</span></div>
</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getDistributedLock-java.lang.Object-">getDistributedLock</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">For <a href="../../../../org/apache/geode/cache/Scope.html#GLOBAL"><code>Scope.GLOBAL</code></a> regions, gets a <em>distributed</em> lock on the entry with the
 specified key.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache">Region.Entry</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getEntry-java.lang.Object-">getEntry</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Returns the <code>Region.Entry</code> for the specified key, or null if it doesn't exist.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getFullPath--">getFullPath</a></span>()</code>
<div class="block">Returns the full path of this region starting with a forward slash, followed by the root,
 including every subregion in the path to this region.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getInterestList--">getInterestList</a></span>()</code>
<div class="block">Returns the list of keys on which this client is interested and will be notified of changes.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getInterestListRegex--">getInterestListRegex</a></span>()</code>
<div class="block">Returns the list of regular expresssions on which this client is interested and will be
 notified of changes.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getName--">getName</a></span>()</code>
<div class="block">Returns the name of this region.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>&lt;PK,PV&gt;&nbsp;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;PK,PV&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getParentRegion--">getParentRegion</a></span>()</code>
<div class="block">Gets the parent region of this region.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getRegionDistributedLock--">getRegionDistributedLock</a></span>()</code>
<div class="block">For <a href="../../../../org/apache/geode/cache/Scope.html#GLOBAL"><code>Scope.GLOBAL</code></a> regions, gets a <em>distributed</em> lock on this whole region.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/RegionService.html" title="interface in org.apache.geode.cache">RegionService</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getRegionService--">getRegionService</a></span>()</code>
<div class="block">Returns the <code>cache</code> associated with this region.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/snapshot/RegionSnapshotService.html" title="interface in org.apache.geode.cache.snapshot">RegionSnapshotService</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getSnapshotService--">getSnapshotService</a></span>()</code>
<div class="block">Obtains the snapshot service to allow the cache data to be imported or exported.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/CacheStatistics.html" title="interface in org.apache.geode.cache">CacheStatistics</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getStatistics--">getStatistics</a></span>()</code>
<div class="block">Returns the <code>CacheStatistics</code> for this region.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>&lt;SK,SV&gt;&nbsp;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;SK,SV&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getSubregion-java.lang.String-">getSubregion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</code>
<div class="block">Returns a subregion with the specified name or null if doesn't exist.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#getUserAttribute--">getUserAttribute</a></span>()</code>
<div class="block">Returns the application-defined object associated with this region.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#hashCode--">hashCode</a></span>()</code>
<div class="block">Returns the hash code value for this region.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#invalidate-java.lang.Object-">invalidate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Invalidates the entry with the specified key.</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#invalidate-java.lang.Object-java.lang.Object-">invalidate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Invalidates the entry with the specified key, and provides a user-defined argument to the
 <code>CacheListener</code>.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#invalidateRegion--">invalidateRegion</a></span>()</code>
<div class="block">Invalidates this region.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#invalidateRegion-java.lang.Object-">invalidateRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Invalidates this region.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#isDestroyed--">isDestroyed</a></span>()</code>
<div class="block">Returns whether this region has been destroyed.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#isEmpty--">isEmpty</a></span>()</code>
<div class="block">Returns true if this region contains no entries.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#isEmptyOnServer--">isEmptyOnServer</a></span>()</code>
<div class="block">Returns true if this region contains no entries on the server.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#keySet--">keySet</a></span>()</code>
<div class="block">Returns a set of keys in the region.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#keySetOnServer--">keySetOnServer</a></span>()</code>
<div class="block">Returns a set of keys in the region on the server.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#loadSnapshot-java.io.InputStream-">loadSnapshot</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;inputStream)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">as of 7.0 use <a href="../../../../org/apache/geode/cache/Region.html#getSnapshotService--"><code>getSnapshotService()</code></a></span></div>
</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localClear--">localClear</a></span>()</code>
<div class="block">Removes all local entries from this region.</div>
</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localDestroy-java.lang.Object-">localDestroy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Destroys the value with the specified key in the local cache only, No <code>CacheWriter</code>
 is invoked.</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localDestroy-java.lang.Object-java.lang.Object-">localDestroy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Destroys the value with the specified key in the local cache only, and provides a user-defined
 parameter object to the <code>CacheListener</code>, if any.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localDestroyRegion--">localDestroyRegion</a></span>()</code>
<div class="block">Destroys the whole region in the local cache only.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localDestroyRegion-java.lang.Object-">localDestroyRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Destroys the whole region in the local cache only, and provides a user-defined argument to a
 <code>CacheListener</code> if any.</div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localInvalidate-java.lang.Object-">localInvalidate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Invalidates the value with the specified key in the local cache only.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localInvalidate-java.lang.Object-java.lang.Object-">localInvalidate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Invalidates the value with the specified key in the local cache only, and provides a
 user-defined argument to the <code>CacheListener</code>.</div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localInvalidateRegion--">localInvalidateRegion</a></span>()</code>
<div class="block">Invalidates this region in the local cache only.</div>
</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#localInvalidateRegion-java.lang.Object-">localInvalidateRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Invalidates this region in the local cache only, and provides a user-defined argument to the
 <code>CacheListener</code>.</div>
</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#put-K-V-">put</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
   <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)</code>
<div class="block">Places a new value into an entry in this region with the specified key.</div>
</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#put-K-V-java.lang.Object-">put</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
   <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Places a new value into an entry in this region with the specified key, providing a
 user-defined parameter object to any <code>CacheWriter</code> invoked in the process.</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#putAll-java.util.Map-">putAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;map)</code>
<div class="block">Copies all of the entries from the specified map to this region.</div>
</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#putAll-java.util.Map-java.lang.Object-">putAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;map,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Copies all of the entries from the specified map to this region.</div>
</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#putIfAbsent-K-V-">putIfAbsent</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
           <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)</code>
<div class="block">If the specified key is not already associated with a value, associate it with the given value.</div>
</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code>&lt;E&gt;&nbsp;<a href="../../../../org/apache/geode/cache/query/SelectResults.html" title="interface in org.apache.geode.cache.query">SelectResults</a>&lt;E&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#query-java.lang.String-">query</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryPredicate)</code>
<div class="block">Filters the values of this region using the <code>queryPredicate</code>.</div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterest-K-">registerInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key)</code>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterest-K-boolean-">registerInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                boolean&nbsp;isDurable)</code>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client.</div>
</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterest-K-boolean-boolean-">registerInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                boolean&nbsp;isDurable,
                boolean&nbsp;receiveValues)</code>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client.</div>
</td>
</tr>
<tr id="i68" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterest-K-org.apache.geode.cache.InterestResultPolicy-">registerInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</code>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client.</div>
</td>
</tr>
<tr id="i69" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterest-K-org.apache.geode.cache.InterestResultPolicy-boolean-">registerInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                boolean&nbsp;isDurable)</code>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client.</div>
</td>
</tr>
<tr id="i70" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterest-K-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">registerInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                boolean&nbsp;isDurable,
                boolean&nbsp;receiveValues)</code>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client.</div>
</td>
</tr>
<tr id="i71" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys--">registerInterestForAllKeys</a></span>()</code>
<div class="block">Sends a request to the CacheServer to register interest in all keys for this client.</div>
</td>
</tr>
<tr id="i72" class="altColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-">registerInterestForAllKeys</a></span>(<a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</code>
<div class="block">Sends a request to the CacheServer to register interest in for all keys for this client.</div>
</td>
</tr>
<tr id="i73" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-boolean-">registerInterestForAllKeys</a></span>(<a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                          boolean&nbsp;isDurable)</code>
<div class="block">Sends a request to the CacheServer to register interest in all keys for this client.</div>
</td>
</tr>
<tr id="i74" class="altColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">registerInterestForAllKeys</a></span>(<a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                          boolean&nbsp;isDurable,
                          boolean&nbsp;receiveValues)</code>
<div class="block">Sends a request to the CacheServer to register interest in all keys for this client.</div>
</td>
</tr>
<tr id="i75" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-">registerInterestForKeys</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable)</code>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client.</div>
</td>
</tr>
<tr id="i76" class="altColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-">registerInterestForKeys</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable,
                       <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</code>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client.</div>
</td>
</tr>
<tr id="i77" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-boolean-">registerInterestForKeys</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable,
                       <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                       boolean&nbsp;isDurable)</code>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client.</div>
</td>
</tr>
<tr id="i78" class="altColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">registerInterestForKeys</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable,
                       <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                       boolean&nbsp;isDurable,
                       boolean&nbsp;receiveValues)</code>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client.</div>
</td>
</tr>
<tr id="i79" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-">registerInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</code>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i80" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-boolean-">registerInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                     boolean&nbsp;isDurable)</code>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i81" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-boolean-boolean-">registerInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                     boolean&nbsp;isDurable,
                     boolean&nbsp;receiveValues)</code>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i82" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-org.apache.geode.cache.InterestResultPolicy-">registerInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                     <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</code>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i83" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-org.apache.geode.cache.InterestResultPolicy-boolean-">registerInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                     <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                     boolean&nbsp;isDurable)</code>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i84" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">registerInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                     <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                     boolean&nbsp;isDurable,
                     boolean&nbsp;receiveValues)</code>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i85" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#remove-java.lang.Object-">remove</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</code>
<div class="block">Removes the entry with the specified key.</div>
</td>
</tr>
<tr id="i86" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#remove-java.lang.Object-java.lang.Object-">remove</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Removes the entry for a key only if currently mapped to a given value.</div>
</td>
</tr>
<tr id="i87" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#removeAll-java.util.Collection-">removeAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;keys)</code>
<div class="block">Removes all of the entries for the specified keys from this region.</div>
</td>
</tr>
<tr id="i88" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#removeAll-java.util.Collection-java.lang.Object-">removeAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;keys,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</code>
<div class="block">Removes all of the entries for the specified keys from this region.</div>
</td>
</tr>
<tr id="i89" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#replace-K-V-">replace</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
       <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)</code>
<div class="block">Replaces the entry for a key only if currently mapped to some value.</div>
</td>
</tr>
<tr id="i90" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#replace-K-V-V-">replace</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
       <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;oldValue,
       <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;newValue)</code>
<div class="block">Replaces the entry for a key only if currently mapped to a given value.</div>
</td>
</tr>
<tr id="i91" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#saveSnapshot-java.io.OutputStream-">saveSnapshot</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;outputStream)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">as of 7.0 use <a href="../../../../org/apache/geode/cache/Region.html#getSnapshotService--"><code>getSnapshotService()</code></a></span></div>
</div>
</td>
</tr>
<tr id="i92" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#selectValue-java.lang.String-">selectValue</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryPredicate)</code>
<div class="block">Selects the single value in this <code>Region</code> that matches the given query
 <code>predicate</code>.</div>
</td>
</tr>
<tr id="i93" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#setUserAttribute-java.lang.Object-">setUserAttribute</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Sets the application-defined object associated with this region.</div>
</td>
</tr>
<tr id="i94" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#size--">size</a></span>()</code>
<div class="block">Returns the number of entries present in this region.</div>
</td>
</tr>
<tr id="i95" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#sizeOnServer--">sizeOnServer</a></span>()</code>
<div class="block">Returns the number of entries present in this region on the server.</div>
</td>
</tr>
<tr id="i96" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#subregions-boolean-">subregions</a></span>(boolean&nbsp;recursive)</code>
<div class="block">Returns a Set of all subregions.</div>
</td>
</tr>
<tr id="i97" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#unregisterInterest-K-">unregisterInterest</a></span>(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key)</code>
<div class="block">Sends a request to the CacheServer to unregister interest in a key for this client.</div>
</td>
</tr>
<tr id="i98" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#unregisterInterestRegex-java.lang.String-">unregisterInterestRegex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</code>
<div class="block">Sends a request to the CacheServer to unregister interest in a regular expression pattern for
 this client.</div>
</td>
</tr>
<tr id="i99" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#values--">values</a></span>()</code>
<div class="block">Returns a Collection of values in this region.</div>
</td>
</tr>
<tr id="i100" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/geode/cache/Region.html#writeToDisk--">writeToDisk</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">use <a href="../../../../org/apache/geode/cache/DiskStore.html#flush--"><code>DiskStore.flush()</code></a> instead.</span></div>
</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.util.concurrent.ConcurrentMap">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#compute-K-java.util.function.BiFunction-" title="class or interface in java.util.concurrent">compute</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#computeIfAbsent-K-java.util.function.Function-" title="class or interface in java.util.concurrent">computeIfAbsent</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#computeIfPresent-K-java.util.function.BiFunction-" title="class or interface in java.util.concurrent">computeIfPresent</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#forEach-java.util.function.BiConsumer-" title="class or interface in java.util.concurrent">forEach</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#getOrDefault-java.lang.Object-V-" title="class or interface in java.util.concurrent">getOrDefault</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#merge-K-V-java.util.function.BiFunction-" title="class or interface in java.util.concurrent">merge</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#replaceAll-java.util.function.BiFunction-" title="class or interface in java.util.concurrent">replaceAll</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="SEPARATOR_CHAR">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SEPARATOR_CHAR</h4>
<pre>static final&nbsp;char SEPARATOR_CHAR</pre>
<div class="block">The region name separator character.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.geode.cache.Region.SEPARATOR_CHAR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SEPARATOR">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SEPARATOR</h4>
<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> SEPARATOR</pre>
<div class="block">The region name separator character, represented as a string for convenience.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.geode.cache.Region.SEPARATOR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getName()</pre>
<div class="block">Returns the name of this region. A region's name can be any non-empty String providing it does
 not contain the name separator, a forward slash (/). If this is the root region, returns
 "root".
 <p>
 Does not throw a <code>CacheClosedException</code> or a <code>RegionDestroyedException</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the name of this region</dd>
</dl>
</li>
</ul>
<a name="getFullPath--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFullPath</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getFullPath()</pre>
<div class="block">Returns the full path of this region starting with a forward slash, followed by the root,
 including every subregion in the path to this region. The path separator is a forward slash.
 <p>
 Does not throw a <code>CacheClosedException</code> or a <code>RegionDestroyedException</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the full path of this region</dd>
</dl>
</li>
</ul>
<a name="getParentRegion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParentRegion</h4>
<pre>&lt;PK,PV&gt;&nbsp;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;PK,PV&gt;&nbsp;getParentRegion()</pre>
<div class="block">Gets the parent region of this region. If this region is a root region (i.e. has no parents),
 returns null.
 <p>
 Does not throw a <code>CacheClosedException</code> or a <code>RegionDestroyedException</code>.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>PK</code> - the type of keys in the parent region</dd>
<dd><code>PV</code> - the type of values in the parent region</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parent region which contains this region; null, if this region is the root region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#createSubregion-java.lang.String-org.apache.geode.cache.RegionAttributes-"><code>createSubregion</code></a></dd>
</dl>
</li>
</ul>
<a name="getAttributes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttributes</h4>
<pre><a href="../../../../org/apache/geode/cache/RegionAttributes.html" title="interface in org.apache.geode.cache">RegionAttributes</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;getAttributes()</pre>
<div class="block">Returns the <code>RegionAttributes</code> for this region. This object is backed by this
 region, so if attributes are modified using this region's <code>AttributesMutator</code>, this
 <code>RegionAttributes</code> object will immediately reflect the change.
 <p>
 Does not throw a <code>CacheClosedException</code> or a <code>RegionDestroyedException</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>RegionAttributes</code> of this region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#createSubregion-java.lang.String-org.apache.geode.cache.RegionAttributes-"><code>createSubregion(String, RegionAttributes)</code></a>, 
<a href="../../../../org/apache/geode/cache/AttributesMutator.html" title="interface in org.apache.geode.cache"><code>AttributesMutator</code></a>, 
<a href="../../../../org/apache/geode/cache/AttributesFactory.html" title="class in org.apache.geode.cache"><code>AttributesFactory</code></a>, 
<a href="../../../../org/apache/geode/cache/Region.html#getAttributesMutator--"><code>getAttributesMutator()</code></a></dd>
</dl>
</li>
</ul>
<a name="getAttributesMutator--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttributesMutator</h4>
<pre><a href="../../../../org/apache/geode/cache/AttributesMutator.html" title="interface in org.apache.geode.cache">AttributesMutator</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;getAttributesMutator()</pre>
<div class="block">Returns a mutator object used for modifying this region's attributes after region creation.
 Note that some attributes are immutable after region creation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>AttributesMutator</code> object</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#getAttributes--"><code>getAttributes()</code></a></dd>
</dl>
</li>
</ul>
<a name="getStatistics--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStatistics</h4>
<pre><a href="../../../../org/apache/geode/cache/CacheStatistics.html" title="interface in org.apache.geode.cache">CacheStatistics</a>&nbsp;getStatistics()
                       throws <a href="../../../../org/apache/geode/cache/StatisticsDisabledException.html" title="class in org.apache.geode.cache">StatisticsDisabledException</a></pre>
<div class="block">Returns the <code>CacheStatistics</code> for this region. If the region is a partitioned proxy
 region then the values for all the statistics will be 0.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>CacheStatistics</code> of this region</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/StatisticsDisabledException.html" title="class in org.apache.geode.cache">StatisticsDisabledException</a></code> - if statistics have been disabled for this region</dd>
</dl>
</li>
</ul>
<a name="invalidateRegion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invalidateRegion</h4>
<pre>void&nbsp;invalidateRegion()
               throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block">Invalidates this region. Invalidation cascades to all entries and subregions. After the
 <code>invalidateRegion</code>, this region and the entries in it still exist. To remove all the
 entries and this region, <code>destroyRegion</code> should be used. The region invalidate will
 be distributed to other caches if the scope is not <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for <code>Scope.GLOBAL</code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionInvalidate-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionInvalidate(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="invalidateRegion-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invalidateRegion</h4>
<pre>void&nbsp;invalidateRegion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
               throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block">Invalidates this region. The invalidation will cascade to all the subregions and cached
 entries. After the <code>invalidateRegion</code>, the region and the entries in it still exist.
 In order to remove all the entries and the region, <code>destroyRegion</code> should be used.
 The region invalidate will be distributed to other caches if the scope is not
 <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null. Should be serializable.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if aCallbackArgument is not serializable</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionInvalidate-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionInvalidate(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localInvalidateRegion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localInvalidateRegion</h4>
<pre>void&nbsp;localInvalidateRegion()</pre>
<div class="block">Invalidates this region in the local cache only. Invalidation cascades to all entries and
 subregions. After the <code>invalidateRegion</code>, this region and the entries in it still
 exist. To remove all the entries and this region, destroyRegion should be used.

 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this region is distributed and
         <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionInvalidate-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionInvalidate(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localInvalidateRegion-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localInvalidateRegion</h4>
<pre>void&nbsp;localInvalidateRegion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</pre>
<div class="block">Invalidates this region in the local cache only, and provides a user-defined argument to the
 <code>CacheListener</code>. The invalidation will cascade to all the subregions and cached
 entries. After the <code>invalidateRegion</code>, the region and the entries in it still exist.
 In order to remove all the entries and the region, destroyRegion should be used.

 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the region is distributed and
         <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionInvalidate-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionInvalidate(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="destroyRegion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroyRegion</h4>
<pre>void&nbsp;destroyRegion()
            throws <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a>,
                   <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block">Destroys the whole region. Destroy cascades to all entries and subregions. After the destroy,
 this region object can not be used any more and any attempt to use this region object will get
 <code>RegionDestroyedException</code>. The region destroy will be distributed to other caches
 if the scope is not <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation; if this occurs some
         subregions may have already been successfully destroyed.</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheWriter.beforeRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="destroyRegion-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroyRegion</h4>
<pre>void&nbsp;destroyRegion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
            throws <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a>,
                   <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block">Destroys the whole region and provides a user-defined parameter object to any
 <code>CacheWriter</code> invoked in the process. Destroy cascades to all entries and
 subregions. After the destroy, this region object can not be used any more. Any attempt to use
 this region object will get a <code>RegionDestroyedException</code> exception. The region
 destroy is distributed to other caches if the scope is not <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null. Should be serializable.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation; if this occurs some
         subregions may have already been successfully destroyed.</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if aCallbackArgument is not serializable</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheWriter.beforeRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localDestroyRegion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localDestroyRegion</h4>
<pre>void&nbsp;localDestroyRegion()</pre>
<div class="block">Destroys the whole region in the local cache only. No <code>CacheWriter</code> is invoked.
 Destroy cascades to all entries and subregions. After the destroy, this region object can not
 be used any more and any attempt to use this region object will get
 <a href="../../../../org/apache/geode/cache/RegionDestroyedException.html" title="class in org.apache.geode.cache"><code>RegionDestroyedException</code></a> exception. This operation is not distributed to any other
 cache.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localDestroyRegion-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localDestroyRegion</h4>
<pre>void&nbsp;localDestroyRegion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</pre>
<div class="block">Destroys the whole region in the local cache only, and provides a user-defined argument to a
 <code>CacheListener</code> if any.

 No <code>CacheWriter</code> is invoked. Destroy will cascade to all the entries and subregions.
 After the destroy, this region object can not be used any more. Any attempt to use this region
 object will get <a href="../../../../org/apache/geode/cache/RegionDestroyedException.html" title="class in org.apache.geode.cache"><code>RegionDestroyedException</code></a> exception.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        call. Can be null.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></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">Does a localDestroyRegion, but leaves behind the disk files if this is a region with
 persistBackup set to true. Calls <a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a> on each cache
 listener on the closed region(s). Also calls <a href="../../../../org/apache/geode/cache/CacheCallback.html#close--"><code>CacheCallback.close()</code></a> on each callback on
 the closed region(s).
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#localDestroyRegion--"><code>localDestroyRegion()</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionDestroy-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionDestroy(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="getSnapshotService--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSnapshotService</h4>
<pre><a href="../../../../org/apache/geode/cache/snapshot/RegionSnapshotService.html" title="interface in org.apache.geode.cache.snapshot">RegionSnapshotService</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;getSnapshotService()</pre>
<div class="block">Obtains the snapshot service to allow the cache data to be imported or exported.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the snapshot service for the region</dd>
</dl>
</li>
</ul>
<a name="saveSnapshot-java.io.OutputStream-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>saveSnapshot</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
void&nbsp;saveSnapshot(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;outputStream)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">as of 7.0 use <a href="../../../../org/apache/geode/cache/Region.html#getSnapshotService--"><code>getSnapshotService()</code></a></span></div>
<div class="block">Saves the data in this region in a snapshot file. The data is a "concurrent" snapshot in that
 modifications to the region while the snapshot is being written are not guaranteed to be
 included or excluded from the snapshot. In other words, if there are concurrent modifications
 to the region while the snapshot is being written, the snapshot may not reflect a consistent
 state of the entire region at any moment in time.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>outputStream</code> - the output stream to write to</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if encountered while writing the file</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#loadSnapshot-java.io.InputStream-"><code>loadSnapshot(java.io.InputStream)</code></a></dd>
</dl>
</li>
</ul>
<a name="loadSnapshot-java.io.InputStream-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>loadSnapshot</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
void&nbsp;loadSnapshot(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;inputStream)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a>,
                              <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a>,
                              <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">as of 7.0 use <a href="../../../../org/apache/geode/cache/Region.html#getSnapshotService--"><code>getSnapshotService()</code></a></span></div>
<div class="block">Loads data from a file that was previously created with the saveSnapshot method. This method
 essentially destroys the region and automatically recreates it with the data in the snapshot.
 Any current data in the region is lost, replaced with the data in the snapshot file. Causes
 this region and all other regions with the same name in remote caches in this distributed
 system to be reinitialized: remote regions are cleared of all data and distributed
 <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a> remote regions will do a new getInitialImage
 operation to get the data from this snapshot. Any existing references to this region or any
 region that is reinitialized in this manner become unusable in that any subsequent methods
 invoked on those references will throw a RegionReinitializedException (which is a subclass of
 RegionDestroyedException).
 <p>

 In order to continue working with this region, a new reference needs to be acquired using
 Cache#getRegion or Region#getSubregion (which will block until reinitialization is complete).
 <p>

 NOTE: SUBREGIONS ARE DESTROYED. Since loading a snapshot effectively destroys the region and
 recreates it, all subregions of this region in this cache as well as other remote caches in the
 same distributed system are destroyed.
 <p>

 If any error occurs while loading the snapshot, this region is destroyed and threads in remote
 caches that are attempting to get a reference to this region will get null instead of a region
 reference.

 The only callbacks that are invoked are called for the destroyRegion operation, i.e. the
 CacheWriter and the close methods on callbacks. CacheListeners and other callback objects have
 their close() methods called when the region is destroyed, and then those same callback objects
 will be reinstalled on the new region. Therefore, the callback objects should be able to handle
 a close() followed by events associated with the newly created region.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>inputStream</code> - the inputStream to load the snapshot from</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code> - if a class cannot be found while loading data</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if error encountered while reading file.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the destroyRegion operation; if this
         occurs some subregions may have already been successfully destroyed.</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/RegionReinitializedException.html" title="class in org.apache.geode.cache"><code>RegionReinitializedException</code></a></dd>
</dl>
</li>
</ul>
<a name="getSubregion-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSubregion</h4>
<pre>&lt;SK,SV&gt;&nbsp;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;SK,SV&gt;&nbsp;getSubregion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
<div class="block">Returns a subregion with the specified name or null if doesn't exist. The name is relative from
 this region, so it can be either a simple region name or a relative region path. If
 <code>regionName</code> is the empty string, then this region itself is returned.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>SK</code> - the type of keys in the subregion</dd>
<dd><code>SV</code> - the type of values in the subregion</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - the path to the subregion</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a subregion with the specified relative path from this region, or null if it doesn't
         exist</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if path starts with a forward slash or</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache"><code>Region</code></a>, 
<a href="../../../../org/apache/geode/cache/Region.html#getFullPath--"><code>getFullPath()</code></a></dd>
</dl>
</li>
</ul>
<a name="createSubregion-java.lang.String-org.apache.geode.cache.RegionAttributes-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createSubregion</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
&lt;SK,SV&gt;&nbsp;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;SK,SV&gt;&nbsp;createSubregion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subregionName,
                                                  <a href="../../../../org/apache/geode/cache/RegionAttributes.html" title="interface in org.apache.geode.cache">RegionAttributes</a>&lt;SK,SV&gt;&nbsp;aRegionAttributes)
                                           throws <a href="../../../../org/apache/geode/cache/RegionExistsException.html" title="class in org.apache.geode.cache">RegionExistsException</a>,
                                                  <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">as of 7.0 use <a href="../../../../org/apache/geode/cache/RegionFactory.html#createSubregion-org.apache.geode.cache.Region-java.lang.String-"><code>RegionFactory.createSubregion(Region, String)</code></a> or
             <a href="../../../../org/apache/geode/cache/client/ClientRegionFactory.html#createSubregion-org.apache.geode.cache.Region-java.lang.String-"><code>ClientRegionFactory.createSubregion(Region, String)</code></a>.</span></div>
<div class="block">Creates a subregion with the specified name and <code>RegionAttributes</code>. The name must
 not contain a region name separator. If the subregion is a distributed
 <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a> region, it will be initialized with data from all
 other caches in this distributed system that have the same region.

 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a> and
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> for this region.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>SK</code> - the type of keys in the subregion</dd>
<dd><code>SV</code> - the type of values in the subregion</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subregionName</code> - the subregion name</dd>
<dd><code>aRegionAttributes</code> - the RegionAttributes to be used for the subregion</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a subregion with the specified name</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if aRegionAttributes is null or if regionName is null, the
         empty string, or contains a '/'</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - If the supplied RegionAttributes violate the
         <a href="AttributesFactory.html#creationConstraints">region creation constraints</a>
         with a region of the same name in another cache in the distributed system or with this
         (parent) region.</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/RegionExistsException.html" title="class in org.apache.geode.cache">RegionExistsException</a></code> - if a subregion by the specified name already exists</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/AttributesFactory.html" title="class in org.apache.geode.cache"><code>AttributesFactory</code></a>, 
<a href="../../../../org/apache/geode/cache/Region.html#getFullPath--"><code>getFullPath()</code></a></dd>
</dl>
</li>
</ul>
<a name="subregions-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subregions</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&gt;&nbsp;subregions(boolean&nbsp;recursive)</pre>
<div class="block">Returns a Set of all subregions. If the recursive parameter is set to true, this call will
 recursively collect all subregions contained in this region. Otherwise, this call will only
 return the Set of direct subregions.

 <p>
 This <code>Set</code> is unmodifiable. It is backed by this region. Synchronization is not
 necessary to access or iterate over this set. No <code>ConcurrentModificationException</code>s
 will be thrown, but subregions may be added or removed while a thread is iterating. Iterators
 are intended to be used by one thread at a time. If a stable "snapshot" view of the set is
 required, then call one of the toArray methods on the set and iterate over the array.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>recursive</code> - if false, collects direct subregions only; if true, collects all subregions
        recursively</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Set of subregions</dd>
</dl>
</li>
</ul>
<a name="getEntry-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEntry</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache">Region.Entry</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;getEntry(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
<div class="block">Returns the <code>Region.Entry</code> for the specified key, or null if it doesn't exist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key corresponding to the Entry to return</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Region.Entry for the specified key or null if not found in this region</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if key is null</dd>
</dl>
</li>
</ul>
<a name="get-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;get(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)
throws <a href="../../../../org/apache/geode/cache/CacheLoaderException.html" title="class in org.apache.geode.cache">CacheLoaderException</a>,
      <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></pre>
<div class="block">Returns the value associated with the specified key. If the value is not present locally for
 this entry, a netSearch and/or a CacheLoader may be invoked to get the value, depending on the
 scope of this region. A netSearch looks for a value in every node of the system that defines
 this region. A netLoad invokes remote loaders one at a time until one returns a value or throws
 an exception. If any of these methods successfully retrieves a value than the value is
 immediately returned.
 <p>
 For local scope, a local CacheLoader will be invoked if there is one. For global scope, the
 order is netSearch, localLoad, netLoad. For any other distributed scope, the order is
 localLoad, netSearch, netLoad.
 <p>
 netSearch and netLoad are never performed more than once, so if a loader attempts to do a
 netSearch and one was already done, then another one will not be done.
 <p>
 The value returned by get is not copied, so multi-threaded applications should not modify the
 value directly, but should use the update methods.
 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a>, <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getHitCount--"><code>CacheStatistics.getHitCount()</code></a>,
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getMissCount--"><code>CacheStatistics.getMissCount()</code></a>, and <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> (if a new
 value is loaded) for this region and the entry.
 <p>

 If the <code>CacheWriter</code> throws a <code>CacheWriterException</code> when a new value is
 retrieved from a loader, the value will not be put into the cache (a new entry will not be
 created) but the get will return the value and not propagate the exception.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util">get</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - whose associated value is to be returned. The key Object must implement the equals
        and hashCode methods. Note that even though key is typed as "Object" if a CacheLoader is
        used then make sure you only pass instances of "K" in this parameter.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the value with specified key, or null if the value is not found and can't be loaded</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key does not meet the serializability requirements</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out doing a <a href="../../../../org/apache/geode/cache/Cache.html#getSearchTimeout--"><code>search</code></a> for
         distributed or getting a distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheLoaderException.html" title="class in org.apache.geode.cache">CacheLoaderException</a></code> - if a cache loader throws an exception, or if the cache loader
         returns an object that is not serializable and this is a distributed region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - for a partitioned region fails to invoke a
         <a href="../../../../org/apache/geode/cache/CacheLoader.html" title="interface in org.apache.geode.cache"><code>CacheLoader</code></a></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheLoader.html#load-org.apache.geode.cache.LoaderHelper-"><code>CacheLoader.load(org.apache.geode.cache.LoaderHelper&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="get-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;get(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
      <a href="../../../../org/apache/geode/cache/CacheLoaderException.html" title="class in org.apache.geode.cache">CacheLoaderException</a></pre>
<div class="block">Returns the value associated with the specified key, passing the callback argument to any cache
 loaders or cache writers that are invoked in the operation. If the value is not present locally
 for this entry, a netSearch and/or a CacheLoader may be invoked to get the value, depending on
 the scope of this region. A netSearch looks for a value in every node of the system that
 defines this region. A netLoad invokes remote loaders one at a time until one returns a value
 or throws an exception. If any of these methods successfully retrieves a value than the value
 is immediately returned.
 <p>
 For local scope, a local CacheLoader will be invoked if there is one. For global scope, the
 order is netSearch, localLoad, netLoad. For any other distributed scope, the order is
 localLoad, netSearch, netLoad.
 <p>
 netSearch and netLoad are never performed more than once, so if a loader attempts to do a
 netSearch and one was already done, then another one will not be done.
 <p>
 The value returned by get is not copied, so multi-threaded applications should not modify the
 value directly, but should use the update methods.
 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a>, <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getHitCount--"><code>CacheStatistics.getHitCount()</code></a>,
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getMissCount--"><code>CacheStatistics.getMissCount()</code></a>, and <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> (if a new
 value is loaded) for this region and the entry.

 If the <code>CacheWriter</code> throws a <code>CacheWriterException</code> when a new value is
 retrieved from a loader, then the value will not be put into the cache (a new entry will not be
 created) but the get will return the value and not propagate the exception.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - whose associated value is to be returned. The key Object must implement the equals
        and hashCode methods. Note that even though key is typed as "Object" if a CacheLoader is
        used then make sure you only pass instances of "K" in this parameter.</dd>
<dd><code>aCallbackArgument</code> - an argument passed into the CacheLoader if loader is used. This same
        argument will also be subsequently passed to a CacheWriter if the loader returns a
        non-null value to be placed in the cache. Modifications to this argument made in the
        CacheLoader will be visible to the CacheWriter even if the loader and the writer are
        installed in different cache VMs. It will also be passed to any other callback events
        triggered by this method. May be null. Should be serializable.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the value with specified key, or null if the value is not found and can't be loaded</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if aCallbackArgument is not serializable</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out doing a <a href="../../../../org/apache/geode/cache/Cache.html#getSearchTimeout--"><code>search</code></a> for
         distributed or getting a distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheLoaderException.html" title="class in org.apache.geode.cache">CacheLoaderException</a></code> - if a cache loader throws an exception, or if the cache loader
         returns an object that is not serializable and this is a distributed region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - for a partitioned region fails to invoke a
         <a href="../../../../org/apache/geode/cache/CacheLoader.html" title="interface in org.apache.geode.cache"><code>CacheLoader</code></a></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/RegionAttributes.html" title="interface in org.apache.geode.cache"><code>RegionAttributes</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheLoader.html#load-org.apache.geode.cache.LoaderHelper-"><code>CacheLoader.load(org.apache.geode.cache.LoaderHelper&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</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><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;put(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
      <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)
throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
      <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></pre>
<div class="block">Places a new value into an entry in this region with the specified key. If there is already an
 entry associated with the specified key in this region, the entry's previous value is
 overwritten.

 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a> and
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> for this region and the entry.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#put-K-V-" title="class or interface in java.util">put</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - a key associated with the value to be put into this region. The key object must
        implement the equals and hashCode methods.</dd>
<dd><code>value</code> - the value to be put into the cache</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous value stored locally for the key. If the entry did not exist then
         <code>null</code> is returned. If the entry was "invalid" then <code>null</code> is
         returned. In some cases <code>null</code> may be returned even if a previous value
         exists. If the region is a client proxy then <code>null</code> is returned. If the
         region is partitioned and the put is done on a non-primary then <code>null</code> is
         returned. If the value is not currently stored in memory but is on disk and if the
         region does not have cqs then <code>null</code> is returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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 (use invalidate instead), or if
         the key or value do not meet serializability requirements</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if key does not satisfy the keyConstraint</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#invalidate-java.lang.Object-"><code>invalidate(Object)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheLoader.html#load-org.apache.geode.cache.LoaderHelper-"><code>CacheLoader.load(org.apache.geode.cache.LoaderHelper&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="put-java.lang.Object-java.lang.Object-java.lang.Object-">
<!--   -->
</a><a name="put-K-V-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>put</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;put(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
      <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
      <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></pre>
<div class="block">Places a new value into an entry in this region with the specified key, providing a
 user-defined parameter object to any <code>CacheWriter</code> invoked in the process. If there
 is already an entry associated with the specified key in this region, the entry's previous
 value is overwritten.

 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a> and
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> for this region and the entry.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - a key associated with the value to be put into this region. The key object must
        implement the equals and hashCode methods.</dd>
<dd><code>value</code> - the value to be put into the cache</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null. Should be serializable.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous value stored locally for the key. If the entry did not exist then
         <code>null</code> is returned. If the entry was "invalid" then <code>null</code> is
         returned. In some cases <code>null</code> may be returned even if a previous value
         exists. If the region is a client proxy then <code>null</code> is returned. If the
         region is off-heap and the old value was stored in off-heap memory then
         <code>null</code> is returned. If the region is partitioned and the put is done on a
         non-primary then <code>null</code> is returned. If the value is not currently stored in
         memory but is on disk and if the region does not have cqs then <code>null</code> is
         returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if key, value, or aCallbackArgument do not meet
         serializability requirements</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if key does not satisfy the keyConstraint</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#invalidate-java.lang.Object-"><code>invalidate(Object)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheLoader.html#load-org.apache.geode.cache.LoaderHelper-"><code>CacheLoader.load(org.apache.geode.cache.LoaderHelper&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="create-java.lang.Object-java.lang.Object-">
<!--   -->
</a><a name="create-K-V-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>void&nbsp;create(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
            <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)
     throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
            <a href="../../../../org/apache/geode/cache/EntryExistsException.html" title="class in org.apache.geode.cache">EntryExistsException</a>,
            <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></pre>
<div class="block">Creates a new entry in this region with the specified key and value if and only if an entry
 does not already exist for the specified key. If an entry already exists for the specified
 key, throws <a href="../../../../org/apache/geode/cache/EntryExistsException.html" title="class in org.apache.geode.cache"><code>EntryExistsException</code></a>.

 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a> and
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> for this region and the entry.
 <p>
 If this region has a distributed scope, this operation may cause update events in caches that
 already have this region with this entry, and it will cause create events in other caches that
 have <a href="../../../../org/apache/geode/cache/InterestPolicy.html#ALL"><code>all events</code></a> configured.
 <p>
 This operation gets a distributed lock on the entry if the scope is <code>Scope.GLOBAL</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key for which to create the entry in this region</dd>
<dd><code>value</code> - the value for the new entry, which may be null meaning the new entry starts as if
        it had been locally invalidated</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key or value is not serializable and this is a
         distributed region</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if key does not satisfy the keyConstraint</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryExistsException.html" title="class in org.apache.geode.cache">EntryExistsException</a></code> - if an entry with this key already exists</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="create-java.lang.Object-java.lang.Object-java.lang.Object-">
<!--   -->
</a><a name="create-K-V-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>void&nbsp;create(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
            <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
     throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
            <a href="../../../../org/apache/geode/cache/EntryExistsException.html" title="class in org.apache.geode.cache">EntryExistsException</a>,
            <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></pre>
<div class="block">Creates a new entry in this region with the specified key and value, providing a user-defined
 parameter object to any <code>CacheWriter</code> invoked in the process. If this region has a
 distributed scope, then the value may be updated subsequently if other caches update the value.

 <p>
 Updates the <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastAccessedTime--"><code>CacheStatistics.getLastAccessedTime()</code></a> and
 <a href="../../../../org/apache/geode/cache/CacheStatistics.html#getLastModifiedTime--"><code>CacheStatistics.getLastModifiedTime()</code></a> for this region and the entry.
 <p>
 If this region has a distributed scope, this operation may cause update events in caches that
 already have this region with this entry, and it will cause create events in other caches that
 have <a href="../../../../org/apache/geode/cache/InterestPolicy.html#ALL"><code>all events</code></a> configured.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key for which to create the entry in this region</dd>
<dd><code>value</code> - the value for the new entry, which may be null meaning the new entry starts as if
        it had been locally invalidated.</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null. Should be serializable.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key, value, or aCallbackArgument do not meet
         serializability requirements</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if key does not satisfy the keyConstraint</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryExistsException.html" title="class in org.apache.geode.cache">EntryExistsException</a></code> - if an entry with this key already exists</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="invalidate-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invalidate</h4>
<pre>void&nbsp;invalidate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)
         throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
                <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></pre>
<div class="block">Invalidates the entry with the specified key. Invalidate only removes the value from the entry,
 the key is kept intact. To completely remove the entry, destroy should be used. The invalidate
 will be distributed to other caches if the scope is not Scope.LOCAL.

 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the value to be invalidated</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key does not meet serializability requirements</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if the entry does not exist in this region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterInvalidate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterInvalidate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="invalidate-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invalidate</h4>
<pre>void&nbsp;invalidate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
         throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
                <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></pre>
<div class="block">Invalidates the entry with the specified key, and provides a user-defined argument to the
 <code>CacheListener</code>. Invalidate only removes the value from the entry, the key is kept
 intact. To completely remove the entry, destroy should be used.

 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the value to be invalidated</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null. Should be serializable.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key or the aCallbackArgument do not meet
         serializability requirements</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for <code>Scope.GLOBAL</code></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if this entry does not exist in this region</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterInvalidate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterInvalidate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localInvalidate-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localInvalidate</h4>
<pre>void&nbsp;localInvalidate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)
              throws <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></pre>
<div class="block">Invalidates the value with the specified key in the local cache only. Invalidate will only
 remove the value from the entry, the key will be kept intact. In order to completely remove the
 key, entry and value, destroy should be called.

 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the value to be invalidated</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key does not meet serializability requirements</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this region is distributed and
         <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if the entry does not exist in this region locally</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/UnsupportedOperationInTransactionException.html" title="class in org.apache.geode.cache">UnsupportedOperationInTransactionException</a></code> - If called in a transactional context</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterInvalidate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterInvalidate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localInvalidate-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localInvalidate</h4>
<pre>void&nbsp;localInvalidate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
              throws <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></pre>
<div class="block">Invalidates the value with the specified key in the local cache only, and provides a
 user-defined argument to the <code>CacheListener</code>. Invalidate will only remove the value
 from the entry, the key will be kept intact. In order to completely remove the key, entry and
 value, destroy should be called.

 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the value to be invalidated</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this region is distributed and
         <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if this entry does not exist in this region locally</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/UnsupportedOperationInTransactionException.html" title="class in org.apache.geode.cache">UnsupportedOperationInTransactionException</a></code> - If called in a transactional context</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterInvalidate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterInvalidate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="destroy-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;destroy(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)
   throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
          <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a>,
          <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></pre>
<div class="block">Destroys the entry with the specified key. Destroy removes not only the value but also the key
 and entry from this region. Destroy will be distributed to other caches if the scope is not
 <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the entry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous value stored locally for the key. If the entry was "invalid" then
         <code>null</code> is returned. In some cases <code>null</code> may be returned even if
         a previous value exists. If the region is a client proxy then <code>null</code> is
         returned. If the region is off-heap and the old value was stored in off-heap memory
         then <code>null</code> is returned. If the region is partitioned and the destroy is
         done on a non-primary then <code>null</code> is returned. If the value is not currently
         stored in memory but is on disk and if the region does not have cqs then
         <code>null</code> is returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if key does not meet serializability requirements</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if the entry does not exist in this region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="destroy-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;destroy(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
   throws <a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a>,
          <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a>,
          <a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></pre>
<div class="block">Destroys the entry with the specified key, and provides a user-defined parameter object to any
 <code>CacheWriter</code> invoked in the process. Destroy removes not only the value but also
 the key and entry from this region. Destroy will be distributed to other caches if the scope is
 not <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the entry to destroy</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null. Should be serializable.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous value stored locally for the key. If the entry was "invalid" then
         <code>null</code> is returned. In some cases <code>null</code> may be returned even if
         a previous value exists. If the region is a client proxy then <code>null</code> is
         returned. If the region is off-heap and the old value was stored in off-heap memory
         then <code>null</code> is returned. If the region is partitioned and the destroy is
         done on a non-primary then <code>null</code> is returned. If the value is not currently
         stored in memory but is on disk and if the region does not have cqs then
         <code>null</code> is returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the key or aCallbackArgument do not meet serializability
         requirements</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if the entry does not exist in this region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localDestroy-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localDestroy</h4>
<pre>void&nbsp;localDestroy(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)
           throws <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></pre>
<div class="block">Destroys the value with the specified key in the local cache only, No <code>CacheWriter</code>
 is invoked. Destroy removes not only the value but also the key and entry from this region.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the entry to destroy</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this region is distributed and
         <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if the entry does not exist in this region locally</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/UnsupportedOperationInTransactionException.html" title="class in org.apache.geode.cache">UnsupportedOperationInTransactionException</a></code> - If called in a transactional context</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="localDestroy-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localDestroy</h4>
<pre>void&nbsp;localDestroy(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)
           throws <a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></pre>
<div class="block">Destroys the value with the specified key in the local cache only, and provides a user-defined
 parameter object to the <code>CacheListener</code>, if any. No <code>CacheWriter</code> is
 invoked. Destroy removes not only the value but also the key and entry from this region.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the entry to destroy</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. Can be null.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this region is distributed and
         <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a></dd>
<dd><code><a href="../../../../org/apache/geode/cache/EntryNotFoundException.html" title="class in org.apache.geode.cache">EntryNotFoundException</a></code> - if the entry does not exist in this region locally</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/UnsupportedOperationInTransactionException.html" title="class in org.apache.geode.cache">UnsupportedOperationInTransactionException</a></code> - If called in a transactional context</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="keySet--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>keySet</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;keySet()</pre>
<div class="block">Returns a set of keys in the region.

 <p>
 This <code>Set</code> is unmodifiable. It is backed by this region. Synchronization is not
 necessary to access or iterate over this set. No <code>ConcurrentModificationException</code>s
 will be thrown, but keys may be added or removed to this set while a thread is iterating.
 Iterators are intended to be used by one thread at a time. If a stable "snapshot" view of the
 set is required, then call one of the toArray methods on the set and iterate over the array. If
 you need to lock down the region so this set is not modified while it is being accessed, use
 global scope with a distributed lock.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#keySet--" title="class or interface in java.util">keySet</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Set of all the keys</dd>
</dl>
</li>
</ul>
<a name="values--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>values</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;values()</pre>
<div class="block">Returns a Collection of values in this region.

 <p>
 This <code>Collection</code> is unmodifiable. It is backed by this region. Synchronization is
 not necessary to access or iterate over this collection. No
 <code>ConcurrentModificationException</code>s will be thrown, but values may be added or
 removed to this collection while a thread is iterating. Iterators are intended to be used by
 one thread at a time. If a stable "snapshot" view of the collection is required, then call one
 of the toArray methods on the collection and iterate over the array. If you need to lock down
 the region so this set is not modified while it is being accessed, use global scope with a
 distributed lock on the region.

 <p>
 Null values are not included in the result collection.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#values--" title="class or interface in java.util">values</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Collection of all the objects cached in this region</dd>
</dl>
</li>
</ul>
<a name="entrySet-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entrySet</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache">Region.Entry</a>&lt;?,?&gt;&gt;&nbsp;entrySet(boolean&nbsp;recursive)</pre>
<div class="block">Returns the <code>Set</code> of <code>Region.Entry</code> objects in this region. If the
 recursive parameter is set to true, this call will recursively collect all the entries in this
 region and its subregions and return them in the Set; if false, it only returns entries
 directly contained in this region.

 <p>
 This <code>Set</code> is unmodifiable. It is backed by this region. Synchronization is not
 necessary to access or iterate over this set. No <code>ConcurrentModificationException</code>s
 will be thrown, but entries may be added or removed to this set while a thread is iterating.
 Iterators are intended to be used by one thread at a time. If a stable "snapshot" view of the
 set is required, then call one of the toArray methods on the set and iterate over the array. If
 you need to lock down the region so this set is not modified while it is being accessed, use
 global scope with a distributed lock.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>recursive</code> - if true, this call recursively collects all the entries in this region and its
        subregions; if false, it only returns the entries directly contained in this region</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Set of all the cached objects</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache"><code>Region.Entry</code></a></dd>
</dl>
</li>
</ul>
<a name="getCache--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCache</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
<a href="../../../../org/apache/geode/cache/Cache.html" title="interface in org.apache.geode.cache">Cache</a>&nbsp;getCache()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">as of 6.5 use <a href="../../../../org/apache/geode/cache/Region.html#getRegionService--"><code>getRegionService()</code></a> instead.</span></div>
<div class="block">Returns the <code>Cache</code> associated with this region.
 <p>
 Does not throw a <code>CacheClosedException</code> if the Cache is closed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Cache</dd>
</dl>
</li>
</ul>
<a name="getRegionService--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRegionService</h4>
<pre><a href="../../../../org/apache/geode/cache/RegionService.html" title="interface in org.apache.geode.cache">RegionService</a>&nbsp;getRegionService()</pre>
<div class="block">Returns the <code>cache</code> associated with this region.
 <p>
 Does not throw a <code>CacheClosedException</code> if the cache is closed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the cache</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.5</dd>
</dl>
</li>
</ul>
<a name="getUserAttribute--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserAttribute</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;getUserAttribute()</pre>
<div class="block">Returns the application-defined object associated with this region. GemFire does not use this
 object for any purpose.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the user attribute object or null if it has not been set</dd>
</dl>
</li>
</ul>
<a name="setUserAttribute-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setUserAttribute</h4>
<pre>void&nbsp;setUserAttribute(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block">Sets the application-defined object associated with this region. GemFire does not use this
 object for any purpose.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - the application-defined object</dd>
</dl>
</li>
</ul>
<a name="isDestroyed--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDestroyed</h4>
<pre>boolean&nbsp;isDestroyed()</pre>
<div class="block">Returns whether this region has been destroyed.

 <p>
 Does not throw a <code>RegionDestroyedException</code> if this region has been destroyed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this region has been destroyed</dd>
</dl>
</li>
</ul>
<a name="containsValueForKey-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsValueForKey</h4>
<pre>boolean&nbsp;containsValueForKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
<div class="block">Returns whether there is a valid (non-null) value present for the specified key. This method is
 equivalent to:

 <pre>
 Entry e = getEntry(key);
 return e != null &amp;&amp; e.getValue() != null;
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key to check for a valid value</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if there is an entry in this region for the specified key and it has a valid value</dd>
</dl>
</li>
</ul>
<a name="containsKey-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsKey</h4>
<pre>boolean&nbsp;containsKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
<div class="block">Returns whether the specified key currently exists in this region. This method is equivalent to
 <code>getEntry(key) != null</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#containsKey-java.lang.Object-" title="class or interface in java.util">containsKey</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key to check for an existing entry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if there is an entry in this region for the specified key</dd>
</dl>
</li>
</ul>
<a name="getRegionDistributedLock--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRegionDistributedLock</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;getRegionDistributedLock()
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></pre>
<div class="block">For <a href="../../../../org/apache/geode/cache/Scope.html#GLOBAL"><code>Scope.GLOBAL</code></a> regions, gets a <em>distributed</em> lock on this whole region. This
 region lock cannot be acquired until all other caches release both region locks and any entry
 locks they hold in this region. Likewise, new entry locks cannot be acquired until outstanding
 region locks are released. The only place that a region distributed lock is acquired
 automatically is during region creation for distributed <a href="../../../../org/apache/geode/cache/DataPolicy.html#withReplication--"><code>replicated</code></a> regions when they acquire their initial data.
 <p>
 The operations invalidateRegion and destroyRegion do <em>not</em> automatically acquire a
 distributed lock at all, so it is possible for these operations to cause an entry to be
 invalidated or the region to be destroyed even if a distributed lock is held on an entry. If an
 application requires all entry level locks to be released when a region is destroyed or
 invalidated as a whole, then it can call this method explicitly to get a ock on the entire
 region before calling invalidateRegion or destroyRegion.
 <p>
 See <a href="../../../../org/apache/geode/cache/Region.html#getDistributedLock-java.lang.Object-"><code>getDistributedLock(java.lang.Object)</code></a> for the list of operations that automatically acquire
 distributed entry locks for regions with global scope.
 <p>
 Note that Region locks are potentially very expensive to acquire.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>Lock</code> used for acquiring a distributed lock on the entire region</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the scope of this region is not global</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
</dl>
</li>
</ul>
<a name="getDistributedLock-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDistributedLock</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;getDistributedLock(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></pre>
<div class="block">For <a href="../../../../org/apache/geode/cache/Scope.html#GLOBAL"><code>Scope.GLOBAL</code></a> regions, gets a <em>distributed</em> lock on the entry with the
 specified key. Use of this <code>Lock</code> enables an application to synchronize operations
 on entries at a higher level than provided for by <a href="../../../../org/apache/geode/cache/Scope.html#GLOBAL"><code>Scope.GLOBAL</code></a>. This is the same lock
 that GemFire uses internally for operations that modify the cache with global scope, so this
 lock can be used for high-level synchronization with other caches that have this region with
 global scope. For example, if an application needs to get two values out of a region with
 global scope and guarantee that the first value is not modified before the second value is
 retrieved, it can use this lock in the following manner:

 <pre>
 Lock entry1Lock = myRegion.getDistributedLock(key1);
 Lock entry2Lock = myRegion.getDistributedLock(key2);
 entry1Lock.lock();
 entry2Lock.lock();
 try {
   Object val1 = myRegion.get(key1);
   Object val2 = myRegion.get(key2);
   // do something with val1 and val2
 } finally {
   entry2Lock.unlock();
   entry1Lock.unlock();
 }
 </pre>

 You can also get a lock on an entry that does not exist in the local cache. Doing so guarantees
 that no other cache with the same region using global scope or using the same lock will create
 or update that entry while you have the lock.

 When a region has global scope, the following operations automatically acquire a distributed
 lock on an entry: <code>create</code>, <code>put</code>, <code>destroy</code>,
 <code>invalidate</code>, and <code>get</code> that causes a loader to be invoked.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key on which to get a <em>distributed</em> lock</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>Lock</code> used for acquiring a distributed lock on an entry</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the scope of this region is not global</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
</dl>
</li>
</ul>
<a name="writeToDisk--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeToDisk</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
void&nbsp;writeToDisk()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../org/apache/geode/cache/DiskStore.html#flush--"><code>DiskStore.flush()</code></a> instead.</span></div>
<div class="block">Initiates a flush to asynchronously write unwritten region entries to disk.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - If this region is not configured to write to disk</dd>
<dd><code><a href="../../../../org/apache/geode/cache/DiskAccessException.html" title="class in org.apache.geode.cache">DiskAccessException</a></code> - If problems are encounter while writing to disk</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 3.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/AttributesFactory.html#setPersistBackup-boolean-"><code>AttributesFactory.setPersistBackup(boolean)</code></a></dd>
</dl>
</li>
</ul>
<a name="existsValue-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>existsValue</h4>
<pre>boolean&nbsp;existsValue(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryPredicate)
             throws <a href="../../../../org/apache/geode/cache/query/FunctionDomainException.html" title="class in org.apache.geode.cache.query">FunctionDomainException</a>,
                    <a href="../../../../org/apache/geode/cache/query/TypeMismatchException.html" title="class in org.apache.geode.cache.query">TypeMismatchException</a>,
                    <a href="../../../../org/apache/geode/cache/query/NameResolutionException.html" title="class in org.apache.geode.cache.query">NameResolutionException</a>,
                    <a href="../../../../org/apache/geode/cache/query/QueryInvocationTargetException.html" title="class in org.apache.geode.cache.query">QueryInvocationTargetException</a></pre>
<div class="block">Determines whether there is a value in this <code>Region</code> that matches the given
 <code>queryPredicate</code>. Filters the values of this region using the predicate given as a
 string with the syntax of the <code>WHERE</code> clause of the query language. The predefined
 variable <code>this</code> may be used inside the predicate to denote the current value being
 filtered.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryPredicate</code> - A query language boolean query predicate.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if there is a value in region that matches the predicate, otherwise
         <code>false</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/query/QueryInvalidException.html" title="class in org.apache.geode.cache.query">QueryInvalidException</a></code> - If predicate does not correspond to valid query language syntax.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/FunctionDomainException.html" title="class in org.apache.geode.cache.query">FunctionDomainException</a></code> - If more than one element evaluates to true.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/TypeMismatchException.html" title="class in org.apache.geode.cache.query">TypeMismatchException</a></code> - If a bound parameter is not of the expected type</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/NameResolutionException.html" title="class in org.apache.geode.cache.query">NameResolutionException</a></code> - If a name in the query cannot be resolved.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/QueryInvocationTargetException.html" title="class in org.apache.geode.cache.query">QueryInvocationTargetException</a></code> - If the data referenced in from clause is not available
         for querying</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/query/QueryService.html" title="interface in org.apache.geode.cache.query"><code>QueryService</code></a></dd>
</dl>
</li>
</ul>
<a name="query-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>query</h4>
<pre>&lt;E&gt;&nbsp;<a href="../../../../org/apache/geode/cache/query/SelectResults.html" title="interface in org.apache.geode.cache.query">SelectResults</a>&lt;E&gt;&nbsp;query(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryPredicate)
                    throws <a href="../../../../org/apache/geode/cache/query/FunctionDomainException.html" title="class in org.apache.geode.cache.query">FunctionDomainException</a>,
                           <a href="../../../../org/apache/geode/cache/query/TypeMismatchException.html" title="class in org.apache.geode.cache.query">TypeMismatchException</a>,
                           <a href="../../../../org/apache/geode/cache/query/NameResolutionException.html" title="class in org.apache.geode.cache.query">NameResolutionException</a>,
                           <a href="../../../../org/apache/geode/cache/query/QueryInvocationTargetException.html" title="class in org.apache.geode.cache.query">QueryInvocationTargetException</a></pre>
<div class="block">Filters the values of this region using the <code>queryPredicate</code>. The queryPredicate
 should follow the syntax of query WHERE clause.

 When executed from a client, this method always runs on the server. However application should
 use QueryService to execute queries.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>E</code> - the type of elements in the <code>SelectResults</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryPredicate</code> - A query language boolean query predicate.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <code>SelectResults</code> containing the values of this <code>Region</code> that
         match the <code>predicate</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/query/QueryInvalidException.html" title="class in org.apache.geode.cache.query">QueryInvalidException</a></code> - If exception occurs during query compilation or processing.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/FunctionDomainException.html" title="class in org.apache.geode.cache.query">FunctionDomainException</a></code> - If more than one element evaluates to true.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/TypeMismatchException.html" title="class in org.apache.geode.cache.query">TypeMismatchException</a></code> - If a bound parameter is not of the expected type</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/NameResolutionException.html" title="class in org.apache.geode.cache.query">NameResolutionException</a></code> - If a name in the query cannot be resolved.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/QueryInvocationTargetException.html" title="class in org.apache.geode.cache.query">QueryInvocationTargetException</a></code> - If the data referenced in from clause is not available
         for querying</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/client/Pool.html#getQueryService--"><code>Pool.getQueryService()</code></a>, 
<a href="../../../../org/apache/geode/cache/RegionService.html#getQueryService--"><code>RegionService.getQueryService()</code></a>, 
<a href="../../../../org/apache/geode/cache/query/QueryService.html" title="interface in org.apache.geode.cache.query"><code>QueryService</code></a></dd>
</dl>
</li>
</ul>
<a name="selectValue-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>selectValue</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;selectValue(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryPredicate)
            throws <a href="../../../../org/apache/geode/cache/query/FunctionDomainException.html" title="class in org.apache.geode.cache.query">FunctionDomainException</a>,
                   <a href="../../../../org/apache/geode/cache/query/TypeMismatchException.html" title="class in org.apache.geode.cache.query">TypeMismatchException</a>,
                   <a href="../../../../org/apache/geode/cache/query/NameResolutionException.html" title="class in org.apache.geode.cache.query">NameResolutionException</a>,
                   <a href="../../../../org/apache/geode/cache/query/QueryInvocationTargetException.html" title="class in org.apache.geode.cache.query">QueryInvocationTargetException</a></pre>
<div class="block">Selects the single value in this <code>Region</code> that matches the given query
 <code>predicate</code>. Filters the values of this region using the predicate given as a string
 with the syntax of the where clause of the query language. The predefined variable
 <code>this</code> may be used inside the predicate to denote the element currently being
 filtered.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryPredicate</code> - A query language boolean query predicate.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The single element that evaluates to true for the predicate. If no value in this
         <code>Region</code> matches the predicate, <code>null</code> is returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/query/QueryInvalidException.html" title="class in org.apache.geode.cache.query">QueryInvalidException</a></code> - If predicate does not correspond to valid query language syntax.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/FunctionDomainException.html" title="class in org.apache.geode.cache.query">FunctionDomainException</a></code> - If more than one element evaluates to true.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/TypeMismatchException.html" title="class in org.apache.geode.cache.query">TypeMismatchException</a></code> - If a bound parameter is not of the expected type</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/NameResolutionException.html" title="class in org.apache.geode.cache.query">NameResolutionException</a></code> - If a name in the query cannot be resolved.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/query/QueryInvocationTargetException.html" title="class in org.apache.geode.cache.query">QueryInvocationTargetException</a></code> - If the data referenced in from clause is not available
         for querying</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/query/QueryService.html" title="interface in org.apache.geode.cache.query"><code>QueryService</code></a></dd>
</dl>
</li>
</ul>
<a name="forceRolling--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>forceRolling</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
void&nbsp;forceRolling()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../org/apache/geode/cache/DiskStore.html#forceRoll--"><code>DiskStore.forceRoll()</code></a> instead.</span></div>
<div class="block">Asks the region to start writing to a new oplog (if persistence/overflow is turned on). The old
 one will be asynchronously compressed if compaction is set to true. If the region is not
 persistent/overflow no change in the region will be reflected. The new log will be created in
 the next available directory with free space. If there is no directory with free space
 available and compaction is set to false, then a <code>DiskAccessException</code> saying that
 the disk is full will be thrown. If compaction is true, the application will wait for the other
 oplogs to be compressed and more space to be created.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.1</dd>
</dl>
</li>
</ul>
<a name="becomeLockGrantor--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>becomeLockGrantor</h4>
<pre>void&nbsp;becomeLockGrantor()</pre>
<div class="block">Specifies this member to become the grantor for this region's lock service. The grantor will be
 the lock authority which is responsible for handling all lock requests for this service. Other
 members will request locks from this member. Locking for this member will be optimal as it will
 not require messaging to acquire a given lock.
 <p>
 Calls to this method will block until grantor authority has been transferred to this member.
 <p>
 If another member later calls <code>becomeLockGrantor</code>, that member will transfer grantor
 authority from this member to itself. Multiple calls to this operation will have no effect
 unless another member has transferred grantor authority, in which case, this member will
 transfer grantor authority back to itself.
 <p>
 This region's scope must be <code>Scope.GLOBAL</code> to become a lock grantor.
 <p>
 This operation should not be invoked repeatedly in an application. It is possible to create a
 lock service and have two or more members endlessly calling becomeLockGrantor to transfer
 grantorship back and forth.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if scope is not GLOBAL</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.0</dd>
</dl>
</li>
</ul>
<a name="localClear--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localClear</h4>
<pre>void&nbsp;localClear()</pre>
<div class="block">Removes all local entries from this region. This is not a distributed operation. This operation
 is not allowed on replicated regions.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a replicated region</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionClear-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionClear(org.apache.geode.cache.RegionEvent&lt;K, V&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">Removes all entries from this region. Clear will be distributed to other caches if the scope is
 not <code>Scope.LOCAL</code>.
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#clear--" title="class or interface in java.util">clear</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If the region is a partitioned region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#clear--" title="class or interface in java.util"><code>Map.clear()</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterRegionClear-org.apache.geode.cache.RegionEvent-"><code>CacheListener.afterRegionClear(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeRegionClear-org.apache.geode.cache.RegionEvent-"><code>CacheWriter.beforeRegionClear(org.apache.geode.cache.RegionEvent&lt;K, V&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a name="containsValue-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsValue</h4>
<pre>boolean&nbsp;containsValue(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block">Returns true if this region maps one or more keys to the specified value. More formally,
 returns true if and only if this region contains at least one entry to a value v such that
 (value==null ? v==null : value.equals(v)). This operation is not distributed and only the
 current region will be checked for this value.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#containsValue-java.lang.Object-" title="class or interface in java.util">containsValue</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#containsValue-java.lang.Object-" title="class or interface in java.util"><code>Map.containsValue(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="entrySet--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entrySet</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&gt;&nbsp;entrySet()</pre>
<div class="block">Returns the <code>Set</code> of <code>Region.Entry</code> objects in this region.

 <p>
 This <code>Set</code> is unmodifiable. It is backed by this region. Synchronization is not
 necessary to access or iterate over this set. No <code>ConcurrentModificationException</code>s
 will be thrown, but entries may be added or removed to this set while a thread is iterating.
 Iterators are intended to be used by one thread at a time. If a stable "snapshot" view of the
 set is required, then call one of the toArray methods on the set and iterate over the array. If
 you need to lock down the region so this set is not modified while it is being accessed, use
 global scope with a distributed lock.

 A remove called on an entry via the iterator will result in an UnsupportedOperationException

 The Region.Entry obtained via the iterator is backed by the region. If a setValue on that entry
 is called, it will be similar in effect as calling a put on that key.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#entrySet--" title="class or interface in java.util">entrySet</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Set of all the Region.Entry instances in this region locally</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#entrySet--" title="class or interface in java.util"><code>Map.entrySet()</code></a></dd>
</dl>
</li>
</ul>
<a name="isEmpty--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEmpty</h4>
<pre>boolean&nbsp;isEmpty()</pre>
<div class="block">Returns true if this region contains no entries.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#isEmpty--" title="class or interface in java.util">isEmpty</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this region contains no entries.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#isEmpty--" title="class or interface in java.util"><code>Map.isEmpty()</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="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;map)</pre>
<div class="block">Copies all of the entries from the specified map to this region. The effect of this call is
 equivalent to that of calling <a href="../../../../org/apache/geode/cache/Region.html#put-K-V-"><code>put(Object, Object)</code></a> on this region once for each entry
 in the specified map. This operation will be distributed to other caches if the scope is not
 <code>Scope.LOCAL</code>.

 If an exception is thrown due to this call, it can imply that there may have been a partial
 update performed on the region.
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#putAll-java.util.Map-" title="class or interface in java.util">putAll</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>map</code> - the key/value pairs to put in this region</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/client/ServerOperationException.html" title="class in org.apache.geode.cache.client">ServerOperationException</a></code> - if called from a client, and the server throws an exception
         such as CacheWriterException, PartitionedRegionStorageException or LowMemoryException.
         These server exceptions become the ServerOperationException cause</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/ServerConnectivityException.html" title="class in org.apache.geode.cache.client">ServerConnectivityException</a></code> - if called from a client, and the server throws
         CancelException. CancelException will be the ServerConnectivityException cause</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the key is null, if the value is null (use invalidate instead),
         or if the key or value do not meet serialization requirements</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if key does not satisfy the keyConstraint</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if the lease expired on a
         distributed lock, for regions with Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if the call timed out waiting to acquire a distributed lock for
         regions with Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#invalidate-java.lang.Object-"><code>invalidate(Object)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheLoader.html#load-org.apache.geode.cache.LoaderHelper-"><code>CacheLoader.load(org.apache.geode.cache.LoaderHelper&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#putAll-java.util.Map-" title="class or interface in java.util"><code>Map.putAll(Map map)</code></a></dd>
</dl>
</li>
</ul>
<a name="putAll-java.util.Map-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putAll</h4>
<pre>void&nbsp;putAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;map,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</pre>
<div class="block">Copies all of the entries from the specified map to this region. The effect of this call is
 equivalent to that of calling <a href="../../../../org/apache/geode/cache/Region.html#put-K-V-"><code>put(Object, Object)</code></a> on this region once for each entry
 in the specified map. This operation will be distributed to other caches if the scope is not
 <code>Scope.LOCAL</code>.

 If an exception is thrown due to this call, it can imply that there may have been a partial
 update performed on the region.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>map</code> - the key/value pairs to put in this region</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. May be null. Must be serializable if this operation is distributed</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/geode/cache/client/ServerOperationException.html" title="class in org.apache.geode.cache.client">ServerOperationException</a></code> - if called from a client, and the server throws an exception
         such as CacheWriterException, PartitionedRegionStorageException or LowMemoryException.
         These server exceptions become the ServerOperationException cause</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/ServerConnectivityException.html" title="class in org.apache.geode.cache.client">ServerConnectivityException</a></code> - if called from a client, and the server throws
         CancelException. CancelException will be the ServerConnectivityException cause</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the key is null, if the value is null (use invalidate instead),
         or if the key or value do not meet serialization requirements</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if key does not satisfy the keyConstraint</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if the lease expired on a
         distributed lock, for regions with Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if the call timed out waiting to acquire a distributed lock for
         regions with Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 8.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#invalidate-java.lang.Object-"><code>invalidate(Object)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheLoader.html#load-org.apache.geode.cache.LoaderHelper-"><code>CacheLoader.load(org.apache.geode.cache.LoaderHelper&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterCreate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeCreate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeCreate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeUpdate-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeUpdate(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#putAll-java.util.Map-" title="class or interface in java.util"><code>Map.putAll(Map map)</code></a></dd>
</dl>
</li>
</ul>
<a name="removeAll-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAll</h4>
<pre>void&nbsp;removeAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;keys)</pre>
<div class="block">Removes all of the entries for the specified keys from this region. The effect of this call is
 equivalent to that of calling <a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-"><code>destroy(Object)</code></a> on this region once for each key in the
 specified collection. If an entry does not exist that key is skipped; EntryNotFoundException is
 not thrown. This operation will be distributed to other caches if the scope is not
 <code>Scope.LOCAL</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keys</code> - the keys to remove from this region.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 8.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-"><code>destroy(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="removeAll-java.util.Collection-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAll</h4>
<pre>void&nbsp;removeAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;? extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;keys,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</pre>
<div class="block">Removes all of the entries for the specified keys from this region. The effect of this call is
 equivalent to that of calling <a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-java.lang.Object-"><code>destroy(Object, Object)</code></a> on this region once for each key
 in the specified collection. If an entry does not exist that key is skipped;
 EntryNotFoundException is not thrown. This operation will be distributed to other caches if the
 scope is not <code>Scope.LOCAL</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keys</code> - the keys to remove from this region.</dd>
<dd><code>aCallbackArgument</code> - a user-defined parameter to pass to callback events triggered by this
        method. May be null. Must be serializable if this operation is distributed.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 8.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-java.lang.Object-"><code>destroy(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="getAll-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAll</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;getAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;keys)</pre>
<div class="block">Gets values for all the keys in the input Collection. If a given key does not exist in the
 region then that key's value in the returned map will be <code>null</code>.
 <p>
 Note that the keys collection should extend K since a load may be done and the key in that case
 will be stored in the region. The keys parameter was not changed to extend K for backwards
 compatibility.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keys</code> - A Collection of keys</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Map of values for the input keys</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.7</dd>
</dl>
</li>
</ul>
<a name="getAll-java.util.Collection-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAll</h4>
<pre>&lt;T extends <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;T,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;&nbsp;getAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;keys,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;aCallbackArgument)</pre>
<div class="block">Gets and returns values for all the keys in the input Collection. If a given key does not exist
 in the region then that key's value in the returned map will be <code>null</code>.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - the type of the keys passed to getAll</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keys</code> - A Collection of keys</dd>
<dd><code>aCallbackArgument</code> - an argument passed into the CacheLoader if a loader is used. This same
        argument will also be subsequently passed to a CacheWriter if the loader returns a
        non-null value to be placed in the cache. Modifications to this argument made in the
        CacheLoader will be visible to the CacheWriter even if the loader and the writer are
        installed in different cache VMs. It will also be passed to any other callback events
        triggered by this method. May be null. Must be serializable if this operation is
        distributed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A Map of values for the input keys</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 8.1</dd>
</dl>
</li>
</ul>
<a name="remove-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;remove(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
<div class="block">Removes the entry with the specified key. The operation removes not only the value but also the
 key and entry from this region. Remove will be distributed to other caches if the scope is not
 <code>Scope.LOCAL</code>.
 <p>
 Does not update any <code>CacheStatistics</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#remove-java.lang.Object-" title="class or interface in java.util">remove</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key of the entry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>null</code> is returned if an entry for key does not exist otherwise the value
         that was stored locally for the removed entry is returned. If the entry was "invalid"
         then <code>null</code> is returned. In some cases <code>null</code> may be returned
         even if a previous value exists. If the region is a client proxy then <code>null</code>
         is returned. If the region is off-heap and the old value was stored in off-heap memory
         then <code>null</code> is returned. If the region is partitioned and the remove is done
         on a non-primary then <code>null</code> is returned. If the value is not currently
         stored in memory but is on disk and if the region does not have cqs then
         <code>null</code> is returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if key does not meet serializability requirements</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/Region.html#destroy-java.lang.Object-"><code>destroy(Object)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheListener.html#afterDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheListener.afterDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="../../../../org/apache/geode/cache/CacheWriter.html#beforeDestroy-org.apache.geode.cache.EntryEvent-"><code>CacheWriter.beforeDestroy(org.apache.geode.cache.EntryEvent&lt;K, V&gt;)</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#remove-java.lang.Object-" title="class or interface in java.util"><code>Map.remove(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="size--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre>int&nbsp;size()</pre>
<div class="block">Returns the number of entries present in this region.

 For <a href="../../../../org/apache/geode/cache/DataPolicy.html#PARTITION"><code>DataPolicy.PARTITION</code></a>, this is a distributed operation that returns the number of
 entries present in entire region.

 For all other types of regions, it returns the number of entries present locally, and it is not
 a distributed operation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#size--" title="class or interface in java.util">size</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of entries present in this region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#size--" title="class or interface in java.util"><code>Map.size()</code></a></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>boolean&nbsp;equals(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;other)</pre>
<div class="block">Compares the specified object with this region for equality. Regions are only equal to
 themselves (identity based) so <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang"><code>Object.equals(java.lang.Object)</code></a> is used. Note that some other class that
 implements <code>Map</code> may say that it is equal to an instance of Region (since Region
 implements Map) even though Region will never say that it is equal to that instance.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.util">equals</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>other</code> - Object object to be compared against the this</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><tt>true</tt> if the specified object is equal to this region.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang"><code>Object.equals(java.lang.Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>int&nbsp;hashCode()</pre>
<div class="block">Returns the hash code value for this region. The hash code of a region is based on identity and
 uses <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang"><code>Object.hashCode()</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#hashCode--" title="class or interface in java.util">hashCode</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash code value for this region.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang"><code>Object.hashCode()</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterest-java.lang.Object-">
<!--   -->
</a><a name="registerInterest-K-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterest</h4>
<pre>void&nbsp;registerInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client. Updates to
 this key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. This key is first locally
 cleared from the client and current value for this key is inserted into the local cache before
 this call returns.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest.

        <p>
        ###Deprecated behavior###
        <p>
        The following <code>List</code> and
        'ALL_KEYS' behavior is now deprecated. As an alternative, please use
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForKeys(Iterable, InterestResultPolicy)</code></a>
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForAllKeys(InterestResultPolicy)</code></a>

        <p>
        If the key is a <code>List</code>, then all the keys in the
        <code>List</code> will be registered. The key can also be the special token 'ALL_KEYS',
        which will register interest in all keys in the region. In effect, this will cause an
        update to any key in this region in the CacheServer to be pushed to the client.

        <p>
        <i>Using 'ALL_KEYS' is the same as calling <a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-"><code>registerInterestRegex(String)</code></a> with
        ".*" as the argument. This means that all keys of any type are pushed to the client and
        inserted into the local cache.</i>
        <p>
        ###End of deprecation###

        <p>
        This method uses the default <code>InterestResultPolicy</code>.

        <p>
        If you locally-destroy a key and your region has concurrency-checks-enabled turned off
        you will not receive invalidation events from your interest subscription for that key.
        When concurrency-checks-enabled is turned on GemFire will accept invalidation and
        deliver these events to your client cache.
        <p></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterest-java.lang.Object-org.apache.geode.cache.InterestResultPolicy-">
<!--   -->
</a><a name="registerInterest-K-org.apache.geode.cache.InterestResultPolicy-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterest</h4>
<pre>void&nbsp;registerInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                      <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client. Updates to
 this key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. This key is first locally
 cleared from the client and current value for this key is inserted into the local cache before
 this call returns. (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest.

        <p>
        ###Deprecated behavior###
        <p>
        The following <code>List</code> and
        'ALL_KEYS' behavior is now deprecated. As an alternative, please use
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForKeys(Iterable, InterestResultPolicy)</code></a>
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForAllKeys(InterestResultPolicy)</code></a>

        <p>
        If the key is a <code>List</code>, then all the keys in the
        <code>List</code> will be registered. The key can also be the special token 'ALL_KEYS',
        which will register interest in all keys in the region. In effect, this will cause an
        update to any key in this region in the CacheServer to be pushed to the client.

        <p>
        <i>Using 'ALL_KEYS' is the same as calling <a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-"><code>registerInterestRegex(String)</code></a> with
        ".*" as the argument. This means that all keys of any type are pushed to the client and
        inserted into the local cache.</i>
        <p>
        ###End of deprecation###</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subcriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestForAllKeys--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForAllKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForAllKeys()</pre>
<div class="block">Sends a request to the CacheServer to register interest in all keys for this client. Updates to
 any key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. The keys are first locally
 cleared from the client and current value for the keys are inserted into the local cache before
 this call returns.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
</dl>
</li>
</ul>
<a name="registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForAllKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForAllKeys(<a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</pre>
<div class="block">Sends a request to the CacheServer to register interest in for all keys for this client.
 Updates to any key by other clients will be pushed to this client by the CacheServer. This
 method is currently supported only on clients in a client server topology. The keys are first
 locally cleared from the client and current value for the keys are inserted into the local
 cache before this call returns. (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subcriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForAllKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForAllKeys(<a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                                        boolean&nbsp;isDurable)</pre>
<div class="block">Sends a request to the CacheServer to register interest in all keys for this client. Updates to
 any key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. The keys are first locally
 cleared from the client and the current value for the keys are inserted into the local cache
 before this call returns (if requested).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForAllKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForAllKeys(<a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                                        boolean&nbsp;isDurable,
                                        boolean&nbsp;receiveValues)</pre>
<div class="block">Sends a request to the CacheServer to register interest in all keys for this client. Updates to
 any key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. The keys are first locally
 cleared from the client and the current value for the keys are inserted into the local cache
 before this call returns (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dd><code>receiveValues</code> - defaults to true. set to false to receive create or update events as
        invalidates similar to notify-by-subscription false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestForKeys-java.lang.Iterable-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForKeys(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable)</pre>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client. Updates to any of the keys in the iterable by other clients will be pushed to this
 client by the CacheServer. This method is currently supported only on clients in a client
 server topology. The keys are first locally cleared from the client and current value for the
 keys are inserted into the local cache before this call returns. (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>iterable</code> - The <code>Iterable</code> of keys on which to register interest.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subcriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
</dl>
</li>
</ul>
<a name="registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForKeys(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable,
                                     <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</pre>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client. Updates to any of the keys in the iterable by other clients will be pushed to this
 client by the CacheServer. This method is currently supported only on clients in a client
 server topology. The keys are first locally cleared from the client and current value for the
 keys are inserted into the local cache before this call returns. (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>iterable</code> - The <code>Iterable</code> of keys on which to register interest.</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subcriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForKeys(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable,
                                     <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                                     boolean&nbsp;isDurable)</pre>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client. Updates to any of the keys in the iterable by other clients will be pushed to this
 client by the CacheServer. This method is currently supported only on clients in a client
 server topology. The keys are first locally cleared from the client and current value for the
 keys are inserted into the local cache before this call returns. (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>iterable</code> - The <code>Iterable</code> of keys on which to register interest.</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subcriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestForKeys</h4>
<pre>default&nbsp;void&nbsp;registerInterestForKeys(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;iterable,
                                     <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                                     boolean&nbsp;isDurable,
                                     boolean&nbsp;receiveValues)</pre>
<div class="block">Sends a request to the CacheServer to register interest for all key in the iterable for this
 client. Updates to any of the keys in the iterable by other clients will be pushed to this
 client by the CacheServer. This method is currently supported only on clients in a client
 server topology. The keys are first locally cleared from the client and current value for the
 keys are inserted into the local cache before this call returns. (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>iterable</code> - The <code>Iterable</code> of keys on which to register interest.</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dd><code>receiveValues</code> - defaults to true. set to false to receive create or update events as
        invalidates similar to notify-by-subscription false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subcriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestRegex-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestRegex</h4>
<pre>void&nbsp;registerInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client. Updates to any keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> satisfying this regular expression by
 other clients will be pushed to this client by the CacheServer. This method is currently
 supported only on clients in a client server topology. These keys are first locally cleared
 from the client and the current values for keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> that satisfy the regular
 expression are inserted into the local cache before this call returns.

 <p>
 Note that if the <code>regex</code> is <code>".*"</code> then all keys of any type will be
 pushed to the client.
 <p>
 This method uses the default <code>InterestResultPolicy</code>.

 <p>
 The regular expression string is compiled using the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a> class.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to register interest.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestRegex-java.lang.String-org.apache.geode.cache.InterestResultPolicy-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestRegex</h4>
<pre>void&nbsp;registerInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                           <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client. Updates to any keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> satisfying this regular expression by
 other clients will be pushed to this client by the CacheServer. This method is currently
 supported only on clients in a client server topology. These keys are first locally cleared
 from the client and the current values for keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> that satisfy the regular
 expression are inserted into the local cache before this call returns.

 <p>
 The regular expression string is compiled using the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a> class.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to register interest.</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a></dd>
</dl>
</li>
</ul>
<a name="unregisterInterest-java.lang.Object-">
<!--   -->
</a><a name="unregisterInterest-K-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unregisterInterest</h4>
<pre>void&nbsp;unregisterInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key)</pre>
<div class="block">Sends a request to the CacheServer to unregister interest in a key for this client. Updates to
 this key by other clients will be no longer be pushed to this client by the CacheServer. This
 method is currently supported only on clients in a client server topology.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest. If the key is a <code>List</code>, then all
        the keys in the <code>List</code> will be unregistered.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2</dd>
</dl>
</li>
</ul>
<a name="unregisterInterestRegex-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unregisterInterestRegex</h4>
<pre>void&nbsp;unregisterInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</pre>
<div class="block">Sends a request to the CacheServer to unregister interest in a regular expression pattern for
 this client. Updates to any keys satisfying this regular expression by other clients will no
 longer be pushed to this client by the CacheServer. This method is currently supported only on
 clients in a client server topology.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to unregister interest.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2.3</dd>
</dl>
</li>
</ul>
<a name="getInterestList--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInterestList</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;getInterestList()</pre>
<div class="block">Returns the list of keys on which this client is interested and will be notified of changes.
 This method is currently supported only on clients in a client server topology.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The list of keys on which this client is interested</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2</dd>
</dl>
</li>
</ul>
<a name="registerInterest-java.lang.Object-boolean-">
<!--   -->
</a><a name="registerInterest-K-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterest</h4>
<pre>void&nbsp;registerInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                      boolean&nbsp;isDurable)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client. Updates to
 this key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. This key is first locally
 cleared from the client and the current value for this key is inserted into the local cache
 before this call returns.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest.

        <p>
        ###Deprecated behavior###
        <p>
        The following <code>List</code> and
        'ALL_KEYS' behavior is now deprecated. As an alternative, please use
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForKeys(Iterable, InterestResultPolicy)</code></a>
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForAllKeys(InterestResultPolicy)</code></a>

        <p>
        If the key is a <code>List</code>, then all the keys in the
        <code>List</code> will be registered. The key can also be the special token 'ALL_KEYS',
        which will register interest in all keys in the region. In effect, this will cause an
        update to any key in this region in the CacheServer to be pushed to the client.

        <p>
        <i>Using 'ALL_KEYS' is the same as calling <a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-"><code>registerInterestRegex(String)</code></a> with
        ".*" as the argument. This means that all keys of any type are pushed to the client and
        inserted into the local cache.</i>
        <p>
        ###End of deprecation###

        <p>
        This method uses the default <code>InterestResultPolicy</code>.

        <p>
        If you locally-destroy a key and your region has concurrency-checks-enabled turned off
        you will not receive invalidation events from your interest subscription for that key.
        When concurrency-checks-enabled is turned on GemFire will accept invalidation and
        deliver these events to your client cache.
        <p></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterest-java.lang.Object-boolean-boolean-">
<!--   -->
</a><a name="registerInterest-K-boolean-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterest</h4>
<pre>void&nbsp;registerInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                      boolean&nbsp;isDurable,
                      boolean&nbsp;receiveValues)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client. Updates to
 this key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. This key is first locally
 cleared from the client and the current value for this key is inserted into the local cache
 before this call returns.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest.

        <p>
        ###Deprecated behavior###
        <p>
        The following <code>List</code> and
        'ALL_KEYS' behavior is now deprecated. As an alternative, please use
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForKeys(Iterable, InterestResultPolicy)</code></a>
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForAllKeys(InterestResultPolicy)</code></a>

        <p>
        If the key is a <code>List</code>, then all the keys in the
        <code>List</code> will be registered. The key can also be the special token 'ALL_KEYS',
        which will register interest in all keys in the region. In effect, this will cause an
        update to any key in this region in the CacheServer to be pushed to the client.

        <p>
        <i>Using 'ALL_KEYS' is the same as calling <a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-"><code>registerInterestRegex(String)</code></a> with
        ".*" as the argument. This means that all keys of any type are pushed to the client and
        inserted into the local cache.</i>
        <p>
        ###End of deprecation###

        <p>
        This method uses the default <code>InterestResultPolicy</code>.
        <p></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dd><code>receiveValues</code> - defaults to true. set to false to receive create or update events as
        invalidates similar to notify-by-subscription false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterest-java.lang.Object-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">
<!--   -->
</a><a name="registerInterest-K-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterest</h4>
<pre>void&nbsp;registerInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                      <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                      boolean&nbsp;isDurable,
                      boolean&nbsp;receiveValues)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client. Updates to
 this key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. This key is first locally
 cleared from the client and the current value for this key is inserted into the local cache
 before this call returns (if requested).

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest.

        <p>
        ###Deprecated behavior###
        <p>
        The following <code>List</code> and
        'ALL_KEYS' behavior is now deprecated. As an alternative, please use
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForKeys(Iterable, InterestResultPolicy)</code></a>
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForAllKeys(InterestResultPolicy)</code></a>

        <p>
        If the key is a <code>List</code>, then all the keys in the
        <code>List</code> will be registered. The key can also be the special token 'ALL_KEYS',
        which will register interest in all keys in the region. In effect, this will cause an
        update to any key in this region in the CacheServer to be pushed to the client.

        <p>
        <i>Using 'ALL_KEYS' is the same as calling <a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-"><code>registerInterestRegex(String)</code></a> with
        ".*" as the argument. This means that all keys of any type are pushed to the client and
        inserted into the local cache.</i>
        <p>
        ###End of deprecation###</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dd><code>receiveValues</code> - defaults to true. set to false to receive create or update events as
        invalidates similar to notify-by-subscription false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterest-java.lang.Object-org.apache.geode.cache.InterestResultPolicy-boolean-">
<!--   -->
</a><a name="registerInterest-K-org.apache.geode.cache.InterestResultPolicy-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterest</h4>
<pre>void&nbsp;registerInterest(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                      <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                      boolean&nbsp;isDurable)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a key for this client. Updates to
 this key by other clients will be pushed to this client by the CacheServer. This method is
 currently supported only on clients in a client server topology. This key is first locally
 cleared from the client and the current value for this key is inserted into the local cache
 before this call returns (if requested).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - The key on which to register interest.

        <p>
        ###Deprecated behavior###
        <p>
        The following <code>List</code> and
        'ALL_KEYS' behavior is now deprecated. As an alternative, please use
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForKeys-java.lang.Iterable-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForKeys(Iterable, InterestResultPolicy)</code></a>
        <p>
        <a href="../../../../org/apache/geode/cache/Region.html#registerInterestForAllKeys-org.apache.geode.cache.InterestResultPolicy-"><code>registerInterestForAllKeys(InterestResultPolicy)</code></a>

        <p>
        If the key is a <code>List</code>, then all the keys in the
        <code>List</code> will be registered. The key can also be the special token 'ALL_KEYS',
        which will register interest in all keys in the region. In effect, this will cause an
        update to any key in this region in the CacheServer to be pushed to the client.

        <p>
        <i>Using 'ALL_KEYS' is the same as calling <a href="../../../../org/apache/geode/cache/Region.html#registerInterestRegex-java.lang.String-"><code>registerInterestRegex(String)</code></a> with
        ".*" as the argument. This means that all keys of any type are pushed to the client and
        inserted into the local cache.</i>
        <p>
        ###End of deprecation###

        <p>
        If you locally-destroy a key and your region has concurrency-checks-enabled turned off
        you will not receive invalidation events from your interest subscription for that key.
        When concurrency-checks-enabled is turned on GemFire will accept invalidation and
        deliver these events to your client cache.
        <p></dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestRegex-java.lang.String-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestRegex</h4>
<pre>void&nbsp;registerInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                           boolean&nbsp;isDurable)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client. Updates to any keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> satisfying this regular expression by
 other clients will be pushed to this client by the CacheServer. This method is currently
 supported only on clients in a client server topology. These keys are first locally cleared
 from the client and the current values for keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> that satisfy the regular
 expression are inserted into the local cache before this call returns.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.

 <p>
 Note that if the <code>regex</code> is <code>".*"</code> then all keys of any type will be
 pushed to the client.
 <p>
 This method uses the default <code>InterestResultPolicy</code>.

 <p>
 The regular expression string is compiled using the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a> class.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to register interest.</dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestRegex-java.lang.String-boolean-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestRegex</h4>
<pre>void&nbsp;registerInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                           boolean&nbsp;isDurable,
                           boolean&nbsp;receiveValues)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client. Updates to any keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> satisfying this regular expression by
 other clients will be pushed to this client by the CacheServer. This method is currently
 supported only on clients in a client server topology. These keys are first locally cleared
 from the client and the current values for keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> that satisfy the regular
 expression are inserted into the local cache before this call returns.

 <p>
 Note that if the <code>regex</code> is <code>".*"</code> then all keys of any type will be
 pushed to the client.
 <p>
 This method uses the default <code>InterestResultPolicy</code>.

 <p>
 The regular expression string is compiled using the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a> class.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to register interest.</dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dd><code>receiveValues</code> - defaults to true. set to false to receive create or update events as
        invalidates similar to notify-by-subscription false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestRegex-java.lang.String-org.apache.geode.cache.InterestResultPolicy-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestRegex</h4>
<pre>void&nbsp;registerInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                           <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                           boolean&nbsp;isDurable)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client. Updates to any keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> satisfying this regular expression by
 other clients will be pushed to this client by the CacheServer. This method is currently
 supported only on clients in a client server topology. These keys are first locally cleared
 from the client and the current values for keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> that satisfy the regular
 expression are inserted into the local cache before this call returns.

 <p>
 The regular expression string is compiled using the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a> class.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to register interest.</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a></dd>
</dl>
</li>
</ul>
<a name="registerInterestRegex-java.lang.String-org.apache.geode.cache.InterestResultPolicy-boolean-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInterestRegex</h4>
<pre>void&nbsp;registerInterestRegex(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
                           <a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache">InterestResultPolicy</a>&nbsp;policy,
                           boolean&nbsp;isDurable,
                           boolean&nbsp;receiveValues)</pre>
<div class="block">Sends a request to the CacheServer to register interest in a regular expression pattern for
 this client. Updates to any keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> satisfying this regular expression by
 other clients will be pushed to this client by the CacheServer. This method is currently
 supported only on clients in a client server topology. These keys are first locally cleared
 from the client and the current values for keys of type <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> that satisfy the regular
 expression are inserted into the local cache before this call returns.

 <p>
 The regular expression string is compiled using the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a> class.

 <p>
 If you locally-destroy a key and your region has concurrency-checks-enabled turned off you will
 not receive invalidation events from your interest subscription for that key. When
 concurrency-checks-enabled is turned on GemFire will accept invalidation and deliver these
 events to your client cache.
 <p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>regex</code> - The regular expression on which to register interest.</dd>
<dd><code>policy</code> - The interest result policy. This can be one of:
        <ul>
        <li>InterestResultPolicy.NONE - does not initialize the local cache</li>
        <li>InterestResultPolicy.KEYS - initializes the local cache with the keys satisfying the
        request</li>
        <li>InterestResultPolicy.KEYS_VALUES - initializes the local cache with the keys and
        current values satisfying the request</li>
        </ul></dd>
<dd><code>isDurable</code> - true if the register interest is durable</dd>
<dd><code>receiveValues</code> - defaults to true. set to false to receive create or update events as
        invalidates similar to notify-by-subscription false.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/client/SubscriptionNotEnabledException.html" title="class in org.apache.geode.cache.client">SubscriptionNotEnabledException</a></code> - if the region's pool does not have subscriptions
         enabled.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is a replicate with distributed scope.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/geode/cache/InterestResultPolicy.html" title="class in org.apache.geode.cache"><code>InterestResultPolicy</code></a>, 
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex"><code>Pattern</code></a></dd>
</dl>
</li>
</ul>
<a name="getInterestListRegex--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInterestListRegex</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;getInterestListRegex()</pre>
<div class="block">Returns the list of regular expresssions on which this client is interested and will be
 notified of changes. This method is currently supported only on clients in a client server
 topology.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The list of regular expresssions on which this client is interested</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 4.2.3</dd>
</dl>
</li>
</ul>
<a name="keySetOnServer--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>keySetOnServer</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&gt;&nbsp;keySetOnServer()</pre>
<div class="block">Returns a set of keys in the region on the server.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Set of all the keys in the region on the server</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0.2</dd>
</dl>
</li>
</ul>
<a name="containsKeyOnServer-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsKeyOnServer</h4>
<pre>boolean&nbsp;containsKeyOnServer(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
<div class="block">Returns whether the specified key currently exists in this region on the server.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key to check for an existing entry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if there is an entry in this region for the specified key on the server</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.0.2</dd>
</dl>
</li>
</ul>
<a name="sizeOnServer--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sizeOnServer</h4>
<pre>int&nbsp;sizeOnServer()</pre>
<div class="block">Returns the number of entries present in this region on the server. Entries stored in this
 client region are ignored.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of entries present in this region on the server.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.2.0</dd>
</dl>
</li>
</ul>
<a name="isEmptyOnServer--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEmptyOnServer</h4>
<pre>boolean&nbsp;isEmptyOnServer()</pre>
<div class="block">Returns true if this region contains no entries on the server.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this region contains no entries on the server.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the region is not configured with a pool name.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>Geode 1.2.0</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><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;putIfAbsent(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
              <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)</pre>
<div class="block">If the specified key is not already associated with a value, associate it with the given value.
 This is equivalent to

 <pre>
 if (!map.containsKey(key))
   return map.put(key, value);
 else
   return map.get(key);
 </pre>

 except that the action is performed atomically.

 <p>
 ConcurrentMap operations are supported on partitioned and replicated regions and in client
 caches. They are also supported on non-empty local regions.
 <p>
 Please read the notes on ConcurrentMap operations in the javadoc for Region.
 <p>
 Region allows the value parameter to be null, which will create an invalid entry.
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#putIfAbsent-K-V-" title="class or interface in java.util.concurrent">putIfAbsent</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#putIfAbsent-K-V-" title="class or interface in java.util">putIfAbsent</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">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="returnLabel">Returns:</span></dt>
<dd>the previous value associated with the specified key, or <tt>null</tt> if there was no
         mapping for the key. (A <tt>null</tt> return can also indicate that the map previously
         associated <tt>null</tt> with the key, if the implementation supports null values.)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the <tt>put</tt> operation is not supported by this
         map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the class of the specified key or value prevents it from being
         stored in this map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/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, and this map does not
         permit null keys or values</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if some property of the specified key or value prevents it
         from being stored in this map</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.5</dd>
</dl>
</li>
</ul>
<a name="remove-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre>boolean&nbsp;remove(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block">Removes the entry for a key only if currently mapped to a given value. This is equivalent to

 <pre>
 if (map.containsKey(key) &amp;&amp; map.get(key).equals(value)) {
   map.remove(key);
   return true;
 } else
   return false;
 </pre>

 except that the action is performed atomically.
 <p>
 As of 8.5, if value is an Array then Arrays.equals or Arrays.deepEquals is used instead of
 Object.equals.
 <p>
 ConcurrentMap operations are supported on partitioned and replicated regions and in client
 caches. They are also supported on non-empty local regions.
 <p>
 Please read the notes on ConcurrentMap operations in the javadoc for Region.
 <p>
 Region allows the value parameter to be null, which will match an invalid entry.
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#remove-java.lang.Object-java.lang.Object-" title="class or interface in java.util.concurrent">remove</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#remove-java.lang.Object-java.lang.Object-" title="class or interface in java.util">remove</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - key with which the specified value is associated</dd>
<dd><code>value</code> - value expected to be associated with the specified key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><tt>true</tt> if the value was removed</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the <tt>remove</tt> operation is not supported by this
         map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the key or value is of an inappropriate type for this map
         (optional)</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/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, and this map does not
         permit null keys or values (optional)</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.5</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="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
                <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;oldValue,
                <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;newValue)</pre>
<div class="block">Replaces the entry for a key only if currently mapped to a given value. This is equivalent to

 <pre>
 if (map.containsKey(key) &amp;&amp; map.get(key).equals(oldValue)) {
   map.put(key, newValue);
   return true;
 } else
   return false;
 </pre>

 except that the action is performed atomically.
 <p>
 As of 8.5, if value is an Array then Arrays.equals or Arrays.deepEquals is used instead of
 Object.equals.
 <p>
 ConcurrentMap operations are supported on partitioned and replicated regions and in client
 caches. They are also supported on non-empty local regions.
 <p>
 Please read the notes on ConcurrentMap operations in the javadoc for Region.
 <p>
 Region allows the oldValue parameter to be null, which will match an invalid entry.
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#replace-K-V-V-" title="class or interface in java.util.concurrent">replace</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#replace-K-V-V-" title="class or interface in java.util">replace</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">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="returnLabel">Returns:</span></dt>
<dd><tt>true</tt> if the value was replaced</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the <tt>replace</tt> operation is not supported by
         this map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the class of a specified key or value prevents it from being
         stored in this map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if a specified key is null, and this map does not permit null keys</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if some property of a specified key or value prevents it from
         being stored in this map</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.5</dd>
</dl>
</li>
</ul>
<a name="replace-java.lang.Object-java.lang.Object-">
<!--   -->
</a><a name="replace-K-V-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>replace</h4>
<pre><a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;replace(<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>&nbsp;key,
          <a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&nbsp;value)</pre>
<div class="block">Replaces the entry for a key only if currently mapped to some value. This is equivalent to

 <pre>
 if (map.containsKey(key)) {
   return map.put(key, value);
 } else
   return null;
 </pre>

 except that the action is performed atomically.
 <p>
 ConcurrentMap operations are supported on partitioned and replicated regions and in client
 caches. They are also supported on non-empty local regions.
 <p>
 Please read the notes on ConcurrentMap operations in the javadoc for Region.
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true#replace-K-V-" title="class or interface in java.util.concurrent">replace</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true#replace-K-V-" title="class or interface in java.util">replace</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">K</a>,<a href="../../../../org/apache/geode/cache/Region.html" title="type parameter in Region">V</a>&gt;</code></dd>
<dt><span class="paramLabel">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="returnLabel">Returns:</span></dt>
<dd>the previous value associated with the specified key, or <tt>null</tt> if there was no
         mapping for the key. (A <tt>null</tt> return can also indicate that the map previously
         associated <tt>null</tt> with the key, if the implementation supports null values.)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - if the <tt>put</tt> operation is not supported by this
         map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassCastException.html?is-external=true" title="class or interface in java.lang">ClassCastException</a></code> - if the class of the specified key or value prevents it from being
         stored in this map</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/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, and this map does not
         permit null keys or values</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if some property of the specified key or value prevents it
         from being stored in this map</dd>
<dd><code><a href="../../../../org/apache/geode/distributed/LeaseExpiredException.html" title="class in org.apache.geode.distributed">LeaseExpiredException</a></code> - if lease expired on distributed lock
         for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/TimeoutException.html" title="class in org.apache.geode.cache">TimeoutException</a></code> - if timed out getting distributed lock for Scope.GLOBAL</dd>
<dd><code><a href="../../../../org/apache/geode/cache/CacheWriterException.html" title="class in org.apache.geode.cache">CacheWriterException</a></code> - if a CacheWriter aborts the operation</dd>
<dd><code><a href="../../../../org/apache/geode/cache/PartitionedRegionStorageException.html" title="class in org.apache.geode.cache">PartitionedRegionStorageException</a></code> - if the operation could not be completed on a
         partitioned region.</dd>
<dd><code><a href="../../../../org/apache/geode/cache/LowMemoryException.html" title="class in org.apache.geode.cache">LowMemoryException</a></code> - if a low memory condition is detected.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.5</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/geode/cache/PartitionResolver.html" title="interface in org.apache.geode.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/geode/cache/Region.Entry.html" title="interface in org.apache.geode.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/geode/cache/Region.html" target="_top">Frames</a></li>
<li><a href="Region.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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 ======= -->
</body>
</html>
