<!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_15) on Fri Mar 13 09:15:43 CDT 2009 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
DelegatingStoreManager (OpenJPA 1.2.1 API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.openjpa.kernel.DelegatingStoreManager class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="DelegatingStoreManager (OpenJPA 1.2.1 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/DelegatingStoreManager.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/kernel/DelegatingSeq.html" title="class in org.apache.openjpa.kernel"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/DetachedStateManager.html" title="class in org.apache.openjpa.kernel"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/openjpa/kernel/DelegatingStoreManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="DelegatingStoreManager.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;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&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.kernel</FONT>
<BR>
Class DelegatingStoreManager</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.openjpa.kernel.DelegatingStoreManager</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A>, <A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html" title="interface in org.apache.openjpa.lib.util">Closeable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../org/apache/openjpa/datacache/DataCacheStoreManager.html" title="class in org.apache.openjpa.datacache">DataCacheStoreManager</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public abstract class <B>DelegatingStoreManager</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></DL>
</PRE>

<P>
Base class for store manager decorators that delegate to another
 store manager for some operations.
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Abe White</DD>
</DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_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>Field Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.openjpa.kernel.StoreManager"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_ALL">FORCE_LOAD_ALL</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_DFG">FORCE_LOAD_DFG</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_NONE">FORCE_LOAD_NONE</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_REFRESH">FORCE_LOAD_REFRESH</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_DIFFERENT">VERSION_DIFFERENT</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_EARLIER">VERSION_EARLIER</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_LATER">VERSION_LATER</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_SAME">VERSION_SAME</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_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>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#DelegatingStoreManager(org.apache.openjpa.kernel.StoreManager)">DelegatingStoreManager</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A>&nbsp;store)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== 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;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)">assignField</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
            int&nbsp;field,
            boolean&nbsp;preFlush)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assign a value to the given field.</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/kernel/DelegatingStoreManager.html#assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)">assignObjectId</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
               boolean&nbsp;preFlush)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assign an object id to the given new instance.</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/kernel/DelegatingStoreManager.html#beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)">beforeStateChange</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                  <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;fromState,
                  <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;toState)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notification that the given state manager is about to change its
 lifecycle state.</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/kernel/DelegatingStoreManager.html#begin()">begin</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Begin a data store transaction.</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/kernel/DelegatingStoreManager.html#beginOptimistic()">beginOptimistic</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notification that an optimistic transaction has started.</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/kernel/DelegatingStoreManager.html#cancelAll()">cancelAll</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cancel all pending data store statements.</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/kernel/DelegatingStoreManager.html#close()">close</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Free any resources this store manager is using.</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/kernel/DelegatingStoreManager.html#commit()">commit</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commit the current data store transaction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)">compareVersion</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;state,
               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v1,
               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v2)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compare the two version objects.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">copyDataStoreId</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid,
                <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy the given object id value.</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/kernel/DelegatingStoreManager.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop">ResultObjectProvider</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)">executeExtent</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
              boolean&nbsp;subclasses,
              <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a provider for all instances of the given candidate class,
 optionally including subclasses.</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/kernel/DelegatingStoreManager.html#exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">exists</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
       <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verify that the given instance exists in the data store; return false
 if it does not.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#flush(java.util.Collection)">flush</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flush the given state manager collection to the datastore, returning
 a collection of exceptions encountered during flushing.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getClientConnection()">getClientConnection</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a connection to the data store suitable for client use.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdSequence</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;forClass)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a sequence that generates datastore identity values for the
 given class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdType</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the class used by this StoreManager for datastore identity
 values.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getDelegate()">getDelegate</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the wrapped store manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getInnermostDelegate()">getInnermostDelegate</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the base underlying native store manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getManagedType(java.lang.Object)">getManagedType</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the persistent class for the given data store identity value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#getValueSequence(org.apache.openjpa.meta.FieldMetaData)">getValueSequence</A></B>(<A HREF="../../../../org/apache/openjpa/meta/FieldMetaData.html" title="class in org.apache.openjpa.meta">FieldMetaData</A>&nbsp;fmd)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a sequence that generates values for the given field.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#hashCode()">hashCode</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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/kernel/DelegatingStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">initialize</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
           <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
           <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
           <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize the given state manager.</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/kernel/DelegatingStoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)">load</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
     <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/BitSet.html" title="class or interface in java.util">BitSet</A>&nbsp;fields,
     <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
     int&nbsp;lockLevel,
     <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load the given state manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">loadAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms,
        <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
        int&nbsp;load,
        <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
        <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize, load, or validate the existance of all of the given
 objects.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">newDataStoreId</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oidVal,
               <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new unique datastore identity for the given type from
 the given oid value (presumably pk, stringified oid, or oid instance).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#newFetchConfiguration()">newFetchConfiguration</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a fetch configuration suitable for this runtime.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/DelegatingStoreManager.html#newQuery(java.lang.String)">newQuery</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;language)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a query implementation suitable for this store.</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/kernel/DelegatingStoreManager.html#releaseConnection()">releaseConnection</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Instruct the store to release a retained connection.</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/kernel/DelegatingStoreManager.html#retainConnection()">retainConnection</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Instruct the store to retain a connection for continued use.</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/kernel/DelegatingStoreManager.html#rollback()">rollback</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rollback the current data store transaction.</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/kernel/DelegatingStoreManager.html#rollbackOptimistic()">rollbackOptimistic</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notification that an optimistic transaction was rolled back before
 a data store transaction ever began.</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/kernel/DelegatingStoreManager.html#setContext(org.apache.openjpa.kernel.StoreContext)">setContext</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A>&nbsp;ctx)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set a reference to the corresponding context.</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/kernel/DelegatingStoreManager.html#syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">syncVersion</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update the version information in the given state manager to the
 version stored in the data store.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_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>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="DelegatingStoreManager(org.apache.openjpa.kernel.StoreManager)"><!-- --></A><H3>
DelegatingStoreManager</H3>
<PRE>
public <B>DelegatingStoreManager</B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A>&nbsp;store)</PRE>
<DL>
<DD>Constructor. Supply delegate.
<P>
</DL>

<!-- ============ 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="getDelegate()"><!-- --></A><H3>
getDelegate</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A> <B>getDelegate</B>()</PRE>
<DL>
<DD>Return the wrapped store manager.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getInnermostDelegate()"><!-- --></A><H3>
getInnermostDelegate</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A> <B>getInnermostDelegate</B>()</PRE>
<DL>
<DD>Return the base underlying native store manager.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="hashCode()"><!-- --></A><H3>
hashCode</H3>
<PRE>
public int <B>hashCode</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
<DL>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setContext(org.apache.openjpa.kernel.StoreContext)"><!-- --></A><H3>
setContext</H3>
<PRE>
public void <B>setContext</B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A>&nbsp;ctx)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#setContext(org.apache.openjpa.kernel.StoreContext)">StoreManager</A></CODE></B></DD>
<DD>Set a reference to the corresponding context. This method
 will be called before the store manager is used. The store manager
 is responsible for pulling any necessary configuration data from the
 context, including the transaction mode and connection retain mode.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#setContext(org.apache.openjpa.kernel.StoreContext)">setContext</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="beginOptimistic()"><!-- --></A><H3>
beginOptimistic</H3>
<PRE>
public void <B>beginOptimistic</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beginOptimistic()">StoreManager</A></CODE></B></DD>
<DD>Notification that an optimistic transaction has started. This method
 does not replace the <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#begin()"><CODE>StoreManager.begin()</CODE></A> method, which will still be called
 when a true data store transaction should begin.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beginOptimistic()">beginOptimistic</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="rollbackOptimistic()"><!-- --></A><H3>
rollbackOptimistic</H3>
<PRE>
public void <B>rollbackOptimistic</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#rollbackOptimistic()">StoreManager</A></CODE></B></DD>
<DD>Notification that an optimistic transaction was rolled back before
 a data store transaction ever began.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#rollbackOptimistic()">rollbackOptimistic</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="begin()"><!-- --></A><H3>
begin</H3>
<PRE>
public void <B>begin</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#begin()">StoreManager</A></CODE></B></DD>
<DD>Begin a data store transaction. After this method is called,
 it is assumed that all further operations are operating in a single
 transaction that can be committed or rolled back. If optimistic
 transactions are in use, this method will only be called when the
 system requires a transactionally consistent connection due to a
 user request to flush or commit the transaction. In this case, it
 is possible that the optimistic transaction does not have the latest
 versions of all instances (i.e. another transaction has modified the
 same instances and committed since the optimistic transaction started).
 On commit, an exception must be thrown on any attempt to overwrite
 data for an instance with an older version.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#begin()">begin</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="commit()"><!-- --></A><H3>
commit</H3>
<PRE>
public void <B>commit</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#commit()">StoreManager</A></CODE></B></DD>
<DD>Commit the current data store transaction.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#commit()">commit</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="rollback()"><!-- --></A><H3>
rollback</H3>
<PRE>
public void <B>rollback</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#rollback()">StoreManager</A></CODE></B></DD>
<DD>Rollback the current data store transaction.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#rollback()">rollback</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><!-- --></A><H3>
exists</H3>
<PRE>
public boolean <B>exists</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Verify that the given instance exists in the data store; return false
 if it does not.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">exists</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><!-- --></A><H3>
syncVersion</H3>
<PRE>
public boolean <B>syncVersion</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                           <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Update the version information in the given state manager to the
 version stored in the data store.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">syncVersion</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sm</CODE> - the instance to check<DD><CODE>context</CODE> - the current execution data, or null if not
 given to the calling method of the context
<DT><B>Returns:</B><DD>true if the instance still exists in the
 datastore and is up-to-date, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><!-- --></A><H3>
initialize</H3>
<PRE>
public boolean <B>initialize</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                          <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
                          <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Initialize the given state manager. The object id of the
 state manager will be set, and the state manager's metadata be set to
 the class of the instance to load, or possibly one of its superclasses.
 Initialization involves first calling the
 <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)"><CODE>OpenJPAStateManager.initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)</CODE></A> method with
 a new instance of the correct type constructed with the
 <A HREF="../../../../org/apache/openjpa/enhance/PCRegistry.html#newInstance(java.lang.Class, org.apache.openjpa.enhance.StateManager, boolean)"><CODE>PCRegistry.newInstance(Class,
 org.apache.openjpa.enhance.StateManager, boolean)</CODE></A> method
 (this will reset the state manager's metadata if the actual type was a
 subclass). After instance initialization, load any the fields for the
 given fetch configuration that can be efficiently retrieved. If any of
 the configured fields are not loaded in this method, they will be
 loaded with a subsequent call to <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>StoreManager.load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A>. If this method is
 called during a data store transaction, the instance's database record
 should be locked. Version information can be loaded if desired through
 the <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#setVersion(java.lang.Object)"><CODE>OpenJPAStateManager.setVersion(java.lang.Object)</CODE></A> method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">initialize</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sm</CODE> - the instance to initialize<DD><CODE>state</CODE> - the lifecycle state to initialize the state manager with<DD><CODE>fetch</CODE> - configuration for how to load the instance<DD><CODE>context</CODE> - the current execution data, or null if not
 given to the calling method of the broker
<DT><B>Returns:</B><DD>true if the matching instance exists in the data
 store, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><!-- --></A><H3>
load</H3>
<PRE>
public boolean <B>load</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/BitSet.html" title="class or interface in java.util">BitSet</A>&nbsp;fields,
                    <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
                    int&nbsp;lockLevel,
                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Load the given state manager.
 Note that any collection or map types loaded into the state manager
 will be proxied with the correct type; therefore the store manager
 does not have to load the same concrete collection/map types as the
 instance declares. However, array types must be consistent with the
 array type stored by the persistence capable instance. If this method
 is called during a data store transaction, the instance should be
 locked. If the given state manager does not have its version set
 already, version information can be loaded if desired through the
 <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#setVersion(java.lang.Object)"><CODE>OpenJPAStateManager.setVersion(java.lang.Object)</CODE></A> method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)">load</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sm</CODE> - the instance to load<DD><CODE>fields</CODE> - set of fields to load; all field indexes in this
 set must be loaded; this set is mutable<DD><CODE>fetch</CODE> - the fetch configuration to use when loading
 related objects<DD><CODE>lockLevel</CODE> - attempt to load simple fields at this lock level;
 relations should be loaded at the read lock level
 of the fetch configuration<DD><CODE>context</CODE> - the current execution data, or null if not
 given to the calling method of the broker
<DT><B>Returns:</B><DD>false if the object no longer exists in the
 database, true otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><!-- --></A><H3>
loadAll</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>loadAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms,
                          <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
                          int&nbsp;load,
                          <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;context)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Initialize, load, or validate the existance of all of the given
 objects. This method is called from various broker methods that act
 on multiple objects, such as <A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html#retrieveAll(java.util.Collection, boolean, org.apache.openjpa.kernel.OpCallbacks)"><CODE>StoreContext.retrieveAll(java.util.Collection, boolean, org.apache.openjpa.kernel.OpCallbacks)</CODE></A>. It gives
 the store manager an opportunity to efficiently batch-load data for
 several objects. Each of the given state managers will be in one of
 three states, each requiring a different action:
 <ul>
 <li><code>stateManager.getO () == null</code>: An
 uninitialized state manager. Perform the same actions as in
 <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>StoreManager.initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A>.
 <li><code>load != FORCE_LOAD_NONE || stateManager.getPCState ()
 == PCState.HOLLOW</code>: A hollow state manager, or one whose
 fields must be loaded because this is a refresh or retrieve action.
 Peform the same actions as in <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>StoreManager.load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A>, choosing the fields
 to load based on the fetch configuration, or loading all fields
 if <code>load == FORCE_LOAD_ALL</code>. Any required fields left
 unloaded will cause a subsequent invocation of <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>StoreManager.load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A> on
 the individual object in question.</li>
 <li><code>load == FORCE_LOAD_NONE &amp;&amp;
 stateManager.getPCState () != PCState.HOLLOW</code>: A non-hollow
 state manager. Perform the same actions as in <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><CODE>StoreManager.exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)</CODE></A>,
 and load additional state if desired. Non-hollow objects will only
 be included outside of refresh invocations if a user calls
 <code>findAll</code> with the <code>validate</code>
 parameter set to <code>true</code>.</li>
 </ul> 
 Store managers that cannot efficiently batch load can simply test
 for these conditions and delegate to the proper methods.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">loadAll</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sms</CODE> - the state manager instances to load<DD><CODE>state</CODE> - the lifecycle state to initialize uninitialized
 state managers with; may be null if no uninitialized
 instances are included in <code>sms</code><DD><CODE>load</CODE> - one of the FORCE_LOAD_* constants describing the
 fields to force-load if this is a refresh or retrieve action<DD><CODE>fetch</CODE> - the current fetch configuration to use when loading
 related objects<DD><CODE>context</CODE> - the current execution data, or null if not
 given to the calling method of the broker
<DT><B>Returns:</B><DD>a collection of the state manager identities for
 which no data store record exists<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.StoreManager, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>ImplHelper.loadAll(java.util.Collection, org.apache.openjpa.kernel.StoreManager, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)"><!-- --></A><H3>
beforeStateChange</H3>
<PRE>
public void <B>beforeStateChange</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                              <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;fromState,
                              <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;toState)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)">StoreManager</A></CODE></B></DD>
<DD>Notification that the given state manager is about to change its
 lifecycle state. The store manager is not required to do anything in
 this method, but some back ends may need to.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)">beforeStateChange</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="flush(java.util.Collection)"><!-- --></A><H3>
flush</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>flush</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)">StoreManager</A></CODE></B></DD>
<DD>Flush the given state manager collection to the datastore, returning
 a collection of exceptions encountered during flushing.
 The given collection may include states that do not require data
 store action, such as persistent-clean instances or persistent-dirty
 instances that have not been modified since they were last flushed.
 For datastore updates and inserts, the dirty, non-flushed fields of
 each state should be flushed. New instances without an assigned object
 id should be given one via <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#setObjectId(java.lang.Object)"><CODE>OpenJPAStateManager.setObjectId(java.lang.Object)</CODE></A>. New
 instances with value-strategy fields that have not been assigned yet
 should have their fields set. Datastore version information should be
 updated during flush, and the state manager's version indicator
 updated through the <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#setNextVersion(java.lang.Object)"><CODE>OpenJPAStateManager.setNextVersion(java.lang.Object)</CODE></A> method.
 The current version will roll over to this next version upon successful
 commit.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)">flush</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><CODE>org.apache.openjpa.util.ApplicationIds#assign()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)"><!-- --></A><H3>
assignObjectId</H3>
<PRE>
public boolean <B>assignObjectId</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                              boolean&nbsp;preFlush)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)">StoreManager</A></CODE></B></DD>
<DD>Assign an object id to the given new instance. Return false if the
 instance cannot be assigned an identity because a flush is required
 (for example, the identity is determined by the datastore on insert).
 For application identity instances, the assigned object id should be
 based on field state. The implementation is responsible for using the
 proper value strategy according to the instance metadata. This method
 is called the first time a user requests the oid of a new instance
 before flush.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)">assignObjectId</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>preFlush</CODE> - whether this assignment is being requested by the
 system as part of pre-flush activities, and can
 be ignored if it is more efficient to assign within <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)"><CODE>StoreManager.flush(java.util.Collection)</CODE></A><DT><B>See Also:</B><DD><A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)"><CODE>ImplHelper.generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)</CODE></A>, 
<A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#generateIdentityValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.ClassMetaData, int)"><CODE>ImplHelper.generateIdentityValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.ClassMetaData, int)</CODE></A>, 
<CODE>org.apache.openjpa.util.ApplicationIds#assign()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)"><!-- --></A><H3>
assignField</H3>
<PRE>
public boolean <B>assignField</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                           int&nbsp;field,
                           boolean&nbsp;preFlush)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)">StoreManager</A></CODE></B></DD>
<DD>Assign a value to the given field. Return false if the value cannot
 be assigned because a flush is required (for example, the field value
 is determined by the datastore on insert). This method is called the
 first time a user requests the value of a field with a value-strategy
 on a new instance before flush.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)">assignField</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>preFlush</CODE> - whether this assignment is being requested by the
 system as part of pre-flush activities, and can
 be ignored if it is more efficient to assign within <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)"><CODE>StoreManager.flush(java.util.Collection)</CODE></A><DT><B>See Also:</B><DD><A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)"><CODE>ImplHelper.generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getManagedType(java.lang.Object)"><!-- --></A><H3>
getManagedType</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>getManagedType</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getManagedType(java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Return the persistent class for the given data store identity value.
 If the given value is not a datastore identity object, return null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getManagedType(java.lang.Object)">getManagedType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
getDataStoreIdType</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>getDataStoreIdType</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Return the class used by this StoreManager for datastore identity
 values. The given metadata may be null, in which case the return
 value should the common datastore identity class for all classes, or
 null if this store manager does not use a common identity class.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
copyDataStoreId</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>copyDataStoreId</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid,
                              <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Copy the given object id value. Use the described type of the given
 metadata, which may be a subclass of the given oid's described type.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">copyDataStoreId</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
newDataStoreId</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>newDataStoreId</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oidVal,
                             <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Create a new unique datastore identity for the given type from
 the given oid value (presumably pk, stringified oid, or oid instance).
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">newDataStoreId</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getClientConnection()"><!-- --></A><H3>
getClientConnection</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getClientConnection</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getClientConnection()">StoreManager</A></CODE></B></DD>
<DD>Return a connection to the data store suitable for client use. If
 this method is called during a data store transaction, thie connection
 must be transactional. If no connection is in use, this method should
 create one to return.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getClientConnection()">getClientConnection</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="retainConnection()"><!-- --></A><H3>
retainConnection</H3>
<PRE>
public void <B>retainConnection</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#retainConnection()">StoreManager</A></CODE></B></DD>
<DD>Instruct the store to retain a connection for continued use. This
 will be invoked automatically based on the user's configured connection
 retain mode.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#retainConnection()">retainConnection</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="releaseConnection()"><!-- --></A><H3>
releaseConnection</H3>
<PRE>
public void <B>releaseConnection</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#releaseConnection()">StoreManager</A></CODE></B></DD>
<DD>Instruct the store to release a retained connection. This
 will be invoked automatically based on the user's configured connection
 retain mode.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#releaseConnection()">releaseConnection</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)"><!-- --></A><H3>
executeExtent</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop">ResultObjectProvider</A> <B>executeExtent</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
                                          boolean&nbsp;subclasses,
                                          <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)">StoreManager</A></CODE></B></DD>
<DD>Return a provider for all instances of the given candidate class,
 optionally including subclasses. The given candidate may be an
 unmapped type with mapped subclasses. If the provider is iterated
 within a data store transaction, returned instances should be locked.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)">executeExtent</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="newQuery(java.lang.String)"><!-- --></A><H3>
newQuery</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A> <B>newQuery</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;language)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newQuery(java.lang.String)">StoreManager</A></CODE></B></DD>
<DD>Return a query implementation suitable for this store. If the query
 is iterated within a data store transaction, returned instances should
 be locked. Return null if this store does not support native execution
 of the given language. OpenJPA can execute JPQL in memory even without
 back end support.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newQuery(java.lang.String)">newQuery</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>language</CODE> - the query language</DL>
</DD>
</DL>
<HR>

<A NAME="newFetchConfiguration()"><!-- --></A><H3>
newFetchConfiguration</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A> <B>newFetchConfiguration</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newFetchConfiguration()">StoreManager</A></CODE></B></DD>
<DD>Return a fetch configuration suitable for this runtime. Typically
 will be or extend <code>FetchConfigurationImpl</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newFetchConfiguration()">newFetchConfiguration</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="close()"><!-- --></A><H3>
close</H3>
<PRE>
public void <B>close</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#close()">StoreManager</A></CODE></B></DD>
<DD>Free any resources this store manager is using.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#close()">close</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE><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>
<HR>

<A NAME="compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
compareVersion</H3>
<PRE>
public int <B>compareVersion</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;state,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v1,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v2)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Compare the two version objects.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)">compareVersion</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>state</CODE> - the state manager for the object<DD><CODE>v1</CODE> - the first version object to compare<DD><CODE>v2</CODE> - the second version object to compare
<DT><B>Returns:</B><DD><ul>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_LATER"><CODE>StoreManager.VERSION_LATER</CODE></A> if <code>v1</code>
 is later than <code>v2</code></li>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_EARLIER"><CODE>StoreManager.VERSION_EARLIER</CODE></A> if <code>v1</code>
 is earlier than <code>v2</code></li>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_SAME"><CODE>StoreManager.VERSION_SAME</CODE></A> if <code>v1</code>
 is the same as <code>v2</code></li>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_DIFFERENT"><CODE>StoreManager.VERSION_DIFFERENT</CODE></A> if <code>v1</code>
 is different from <code>v2</code>, but the time
 difference of the versions cannot be determined</li>
 </ul></DL>
</DD>
</DL>
<HR>

<A NAME="getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
getDataStoreIdSequence</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A> <B>getDataStoreIdSequence</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;forClass)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Return a sequence that generates datastore identity values for the
 given class. This method will only be called when the identity strategy
 for the class is one of:
 <ul>
 <li><A HREF="../../../../org/apache/openjpa/meta/ValueStrategies.html#NATIVE"><CODE>ValueStrategies.NATIVE</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/meta/ValueStrategies.html#AUTOASSIGN"><CODE>ValueStrategies.AUTOASSIGN</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/meta/ValueStrategies.html#INCREMENT"><CODE>ValueStrategies.INCREMENT</CODE></A></li>
 </ul>
 If the identity strategy cannot be represented as a sequence, return
 null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdSequence</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getValueSequence(org.apache.openjpa.meta.FieldMetaData)"><!-- --></A><H3>
getValueSequence</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A> <B>getValueSequence</B>(<A HREF="../../../../org/apache/openjpa/meta/FieldMetaData.html" title="class in org.apache.openjpa.meta">FieldMetaData</A>&nbsp;fmd)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getValueSequence(org.apache.openjpa.meta.FieldMetaData)">StoreManager</A></CODE></B></DD>
<DD>Return a sequence that generates values for the given field. This
 method will only be called when the value strategy for the field
 is one of:
 <ul>
 <li><A HREF="../../../../org/apache/openjpa/meta/ValueStrategies.html#NATIVE"><CODE>ValueStrategies.NATIVE</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/meta/ValueStrategies.html#AUTOASSIGN"><CODE>ValueStrategies.AUTOASSIGN</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/meta/ValueStrategies.html#INCREMENT"><CODE>ValueStrategies.INCREMENT</CODE></A></li>
 </ul> If the value strategy cannot be represented as a sequence, return
 null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getValueSequence(org.apache.openjpa.meta.FieldMetaData)">getValueSequence</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="cancelAll()"><!-- --></A><H3>
cancelAll</H3>
<PRE>
public boolean <B>cancelAll</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#cancelAll()">StoreManager</A></CODE></B></DD>
<DD>Cancel all pending data store statements.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#cancelAll()">cancelAll</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if any statements cancelled, false otherwise</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/DelegatingStoreManager.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/kernel/DelegatingSeq.html" title="class in org.apache.openjpa.kernel"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/DetachedStateManager.html" title="class in org.apache.openjpa.kernel"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/openjpa/kernel/DelegatingStoreManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="DelegatingStoreManager.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;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2006-2009 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
