blob: 95d402c1dc4c999d808f1ec14c82bdc4c77be902 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_11) on Mon May 19 19:21:01 PDT 2008 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
QueryCache (OpenJPA 1.1.0 API)
</TITLE>
<META NAME="keywords" CONTENT="org.apache.openjpa.datacache.QueryCache interface">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="QueryCache (OpenJPA 1.1.0 API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/QueryCache.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/ExpirationListener.html" title="interface in org.apache.openjpa.datacache"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/QueryCacheStoreQuery.html" title="class in org.apache.openjpa.datacache"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?org/apache/openjpa/datacache/QueryCache.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="QueryCache.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.openjpa.datacache</FONT>
<BR>
Interface QueryCache</H2>
<DL>
<DT><B>All Superinterfaces:</B> <DD><A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html" title="interface in org.apache.openjpa.lib.util">Closeable</A>, <A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A></DD>
</DL>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../org/apache/openjpa/datacache/AbstractQueryCache.html" title="class in org.apache.openjpa.datacache">AbstractQueryCache</A>, <A HREF="../../../../org/apache/openjpa/datacache/ConcurrentQueryCache.html" title="class in org.apache.openjpa.datacache">ConcurrentQueryCache</A>, <A HREF="../../../../org/apache/openjpa/datacache/DelegatingQueryCache.html" title="class in org.apache.openjpa.datacache">DelegatingQueryCache</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>QueryCache</B><DT>extends <A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A>, <A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html" title="interface in org.apache.openjpa.lib.util">Closeable</A></DL>
</PRE>
<P>
Interface that must be implemented by any level 2 query cache
used by OpenJPA. These methods should be threadsafe.
Most query cache implementations will probably implement
<A HREF="../../../../org/apache/openjpa/lib/conf/Configurable.html" title="interface in org.apache.openjpa.lib.conf"><CODE>Configurable</CODE></A> to receive a handle to the
system configuration on construction.
<P>
<P>
<DL>
<DT><B>Since:</B></DT>
<DD>0.2.5</DD>
<DT><B>Author:</B></DT>
<DD>Patrick Linskey</DD>
</DL>
<HR>
<P>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#addTypesChangedListener(org.apache.openjpa.datacache.TypesChangedListener)">addTypesChangedListener</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A>&nbsp;listen)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add a new types event listener to this cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#clear()">clear</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove all data from this cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#close()">close</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Free the resources used by this cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#get(org.apache.openjpa.datacache.QueryKey)">get</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a list of oids for the given query key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#initialize(org.apache.openjpa.datacache.DataCacheManager)">initialize</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/DataCacheManager.html" title="interface in org.apache.openjpa.datacache">DataCacheManager</A>&nbsp;manager)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize any resources associated with the given
<A HREF="../../../../org/apache/openjpa/datacache/DataCacheManager.html" title="interface in org.apache.openjpa.datacache"><CODE>DataCacheManager</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#pin(org.apache.openjpa.datacache.QueryKey)">pin</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pin the value stored under <code>qk</code> into the
cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#put(org.apache.openjpa.datacache.QueryKey, org.apache.openjpa.datacache.QueryResult)">put</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk,
<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A>&nbsp;oids)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the list of OIDs for the given query key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#remove(org.apache.openjpa.datacache.QueryKey)">remove</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove the value stored under the given query key.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#removeTypesChangedListener(org.apache.openjpa.datacache.TypesChangedListener)">removeTypesChangedListener</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A>&nbsp;listen)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove an types event listener from this cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#unpin(org.apache.openjpa.datacache.QueryKey)">unpin</A></B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unpin the value stored under <code>key</code> into the cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#writeLock()">writeLock</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Obtain a write lock on the cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#writeUnlock()">writeUnlock</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Release the write lock on the cache.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.openjpa.datacache.TypesChangedListener"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from interface org.apache.openjpa.datacache.<A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html#onTypesChanged(org.apache.openjpa.datacache.TypesChangedEvent)">onTypesChanged</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="initialize(org.apache.openjpa.datacache.DataCacheManager)"><!-- --></A><H3>
initialize</H3>
<PRE>
void <B>initialize</B>(<A HREF="../../../../org/apache/openjpa/datacache/DataCacheManager.html" title="interface in org.apache.openjpa.datacache">DataCacheManager</A>&nbsp;manager)</PRE>
<DL>
<DD>Initialize any resources associated with the given
<A HREF="../../../../org/apache/openjpa/datacache/DataCacheManager.html" title="interface in org.apache.openjpa.datacache"><CODE>DataCacheManager</CODE></A>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
<DD>0.4.1</DD>
</DL>
</DD>
</DL>
<HR>
<A NAME="get(org.apache.openjpa.datacache.QueryKey)"><!-- --></A><H3>
get</H3>
<PRE>
<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A> <B>get</B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</PRE>
<DL>
<DD>Return a list of oids for the given query key. This is an
unmodifiable list.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The query results matching the given key, or null if none</DL>
</DD>
</DL>
<HR>
<A NAME="put(org.apache.openjpa.datacache.QueryKey, org.apache.openjpa.datacache.QueryResult)"><!-- --></A><H3>
put</H3>
<PRE>
<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A> <B>put</B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk,
<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A>&nbsp;oids)</PRE>
<DL>
<DD>Set the list of OIDs for the given query key. A reference
to the given list will be stored in the query cache, so the
list should not be modified after invoking this method.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The previously cached value, or <code>null</code> if
the key was not previously cached. See <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put(K, V)" title="class or interface in java.util"><CODE>Map.put(K, V)</CODE></A>
for more information.</DL>
</DD>
</DL>
<HR>
<A NAME="remove(org.apache.openjpa.datacache.QueryKey)"><!-- --></A><H3>
remove</H3>
<PRE>
<A HREF="../../../../org/apache/openjpa/datacache/QueryResult.html" title="class in org.apache.openjpa.datacache">QueryResult</A> <B>remove</B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</PRE>
<DL>
<DD>Remove the value stored under the given query key.
This method is typically not invoked directly from outside
the <code>QueryCache</code> class. Instead, the cache should
be updated by implementing <A HREF="../../../../org/apache/openjpa/event/RemoteCommitListener.html" title="interface in org.apache.openjpa.event"><CODE>RemoteCommitListener</CODE></A>,
which will result in all queries that may be invalid being dropped.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The previously cached value, or <code>null</code> if
the key was not previously cached. See <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Map.remove(java.lang.Object)</CODE></A>
for more information.</DL>
</DD>
</DL>
<HR>
<A NAME="clear()"><!-- --></A><H3>
clear</H3>
<PRE>
void <B>clear</B>()</PRE>
<DL>
<DD>Remove all data from this cache.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="pin(org.apache.openjpa.datacache.QueryKey)"><!-- --></A><H3>
pin</H3>
<PRE>
boolean <B>pin</B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</PRE>
<DL>
<DD>Pin the value stored under <code>qk</code> into the
cache. This method guarantees that <code>qk</code>'s value
will not be expired if the cache exceeds its capacity. It
causes this data to be ignored when determining whether or not
the cache is full, effectively increasing the total amount of
data stored in the cache. This method does not affect the
behavior of <A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#remove(org.apache.openjpa.datacache.QueryKey)"><CODE>remove(org.apache.openjpa.datacache.QueryKey)</CODE></A> or <A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html#onTypesChanged(org.apache.openjpa.datacache.TypesChangedEvent)"><CODE>TypesChangedListener.onTypesChanged(org.apache.openjpa.datacache.TypesChangedEvent)</CODE></A>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD><code>true</code> if <code>key</code>'s value was
pinned into the cache; <code>false</code> if the key is not in the cache.</DL>
</DD>
</DL>
<HR>
<A NAME="unpin(org.apache.openjpa.datacache.QueryKey)"><!-- --></A><H3>
unpin</H3>
<PRE>
boolean <B>unpin</B>(<A HREF="../../../../org/apache/openjpa/datacache/QueryKey.html" title="class in org.apache.openjpa.datacache">QueryKey</A>&nbsp;qk)</PRE>
<DL>
<DD>Unpin the value stored under <code>key</code> into the cache.
This method reverses a previous invocation of <A HREF="../../../../org/apache/openjpa/datacache/QueryCache.html#pin(org.apache.openjpa.datacache.QueryKey)"><CODE>pin(org.apache.openjpa.datacache.QueryKey)</CODE></A>.
This method does not remove anything from the cache; it merely
makes <code>key</code>'s value a candidate for flushing from the cache.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD><code>true</code> if <code>key</code>'s value was
unpinned from the cache; <code>false</code> if the
key is not in the cache.</DL>
</DD>
</DL>
<HR>
<A NAME="writeLock()"><!-- --></A><H3>
writeLock</H3>
<PRE>
void <B>writeLock</B>()</PRE>
<DL>
<DD>Obtain a write lock on the cache.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="writeUnlock()"><!-- --></A><H3>
writeUnlock</H3>
<PRE>
void <B>writeUnlock</B>()</PRE>
<DL>
<DD>Release the write lock on the cache.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="addTypesChangedListener(org.apache.openjpa.datacache.TypesChangedListener)"><!-- --></A><H3>
addTypesChangedListener</H3>
<PRE>
void <B>addTypesChangedListener</B>(<A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A>&nbsp;listen)</PRE>
<DL>
<DD>Add a new types event listener to this cache.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
<DD>0.3.3</DD>
</DL>
</DD>
</DL>
<HR>
<A NAME="removeTypesChangedListener(org.apache.openjpa.datacache.TypesChangedListener)"><!-- --></A><H3>
removeTypesChangedListener</H3>
<PRE>
boolean <B>removeTypesChangedListener</B>(<A HREF="../../../../org/apache/openjpa/datacache/TypesChangedListener.html" title="interface in org.apache.openjpa.datacache">TypesChangedListener</A>&nbsp;listen)</PRE>
<DL>
<DD>Remove an types event listener from this cache.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
<DD>0.3.3</DD>
</DL>
</DD>
</DL>
<HR>
<A NAME="close()"><!-- --></A><H3>
close</H3>
<PRE>
void <B>close</B>()</PRE>
<DL>
<DD>Free the resources used by this cache.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html#close()">close</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html" title="interface in org.apache.openjpa.lib.util">Closeable</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/QueryCache.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/ExpirationListener.html" title="interface in org.apache.openjpa.datacache"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/openjpa/datacache/QueryCacheStoreQuery.html" title="class in org.apache.openjpa.datacache"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?org/apache/openjpa/datacache/QueryCache.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="QueryCache.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright &copy; 2006-2008 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>