<!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.6.0_18) on Fri May 21 07:02:03 BST 2010 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
StateInterrogation (JDO API 3.0)
</TITLE>

<META NAME="date" CONTENT="2010-05-21">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="StateInterrogation (JDO API 3.0)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= 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/StateInterrogation.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="../../../javax/jdo/spi/RegisterClassListener.html" title="interface in javax.jdo.spi"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../javax/jdo/spi/StateManager.html" title="interface in javax.jdo.spi"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html?javax/jdo/spi/StateInterrogation.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="StateInterrogation.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">
javax.jdo.spi</FONT>
<BR>
Interface StateInterrogation</H2>
<HR>
<DL>
<DT><PRE>public interface <B>StateInterrogation</B></DL>
</PRE>

<P>
This interface is implemented by a non-binary-compatible JDO implementation
 to provide state interrogation for non-enhanced persistent classes.

 <P>A call to JDOHelper to get the status of an instance is handled
 internally if the parameter instance implements PersistenceCapable. 
 For non-binary-compatible implementations, there is no requirement
 that persistent instances implement PersistenceCapable. Therefore,
 if the parameter does not implement PersistenceCapable, JDOHelper
 delegates to all registered instances of StateInterrogation until
 an instance can handle the request.
 <P>For JDOHelper isXXX methods, which return boolean, the 
 corresponding method in StateInterrogation returns Boolean. If the
 return value is <code>null</code> then the StateInterrogation does
 not recognize the parameter as being handled by it. A non-null return
 value indicates that the implementation has determined the answer.
 <P>For JDOHelper getXXX methods, which return an Object, each
 registered StateInterrogation is given the parameter until one of 
 them returns a non-null value, which is passed to the caller.
 <P>For JDOHelper makeDirty, each
 registered StateInterrogation is given the parameter until one of 
 them returns true, indicating that it has handled the call.
 An instance that implements this interface must be registered with the
 <A HREF="../../../javax/jdo/spi/JDOImplHelper.html" title="class in javax.jdo.spi"><CODE>JDOImplHelper</CODE></A>.
<P>

<P>
<DL>
<DT><B>Since:</B></DT>
  <DD>2.0</DD>
<DT><B>Version:</B></DT>
  <DD>2.0</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;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#getObjectId(java.lang.Object)">getObjectId</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a copy of the JDO identity associated with the parameter 
 instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/jdo/PersistenceManager.html" title="interface in javax.jdo">PersistenceManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#getPersistenceManager(java.lang.Object)">getPersistenceManager</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the associated <code>PersistenceManager</code> if there is one.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#getTransactionalObjectId(java.lang.Object)">getTransactionalObjectId</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a copy of the JDO identity associated with the parameter 
 instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#getVersion(java.lang.Object)">getVersion</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the version of the parameter instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#isDeleted(java.lang.Object)">isDeleted</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the parameter instance has been deleted.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#isDetached(java.lang.Object)">isDetached</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the parameter instance is detached.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#isDirty(java.lang.Object)">isDirty</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the parameter instance is dirty.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#isNew(java.lang.Object)">isNew</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the parameter instance has been newly made persistent.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#isPersistent(java.lang.Object)">isPersistent</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the parameter instance is persistent.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/jdo/spi/StateInterrogation.html#isTransactional(java.lang.Object)">isTransactional</A></B>(java.lang.Object&nbsp;pc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the parameter instance is transactional.</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="../../../javax/jdo/spi/StateInterrogation.html#makeDirty(java.lang.Object, java.lang.String)">makeDirty</A></B>(java.lang.Object&nbsp;pc,
          java.lang.String&nbsp;fieldName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Explicitly mark the parameter instance and field dirty.</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="isPersistent(java.lang.Object)"><!-- --></A><H3>
isPersistent</H3>
<PRE>
java.lang.Boolean <B>isPersistent</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Tests whether the parameter instance is persistent.

 Instances that represent persistent objects in the data store 
 return <code>Boolean.TRUE</code>. 

 <P>Instances known by the implementation to be non-persistent
 return <code>Boolean.FALSE</code>.

 <P>Instances not recognized by the implementation return
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD><code>Boolean.TRUE</code> if the parameter instance is persistent.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/PersistenceManager.html#makePersistent(T)"><CODE>PersistenceManager.makePersistent(Object pc)</CODE></A>, 
<A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoIsPersistent()"><CODE>PersistenceCapable.jdoIsPersistent()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="isTransactional(java.lang.Object)"><!-- --></A><H3>
isTransactional</H3>
<PRE>
java.lang.Boolean <B>isTransactional</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Tests whether the parameter instance is transactional.

 Instances whose state is associated with the current transaction 
 return <code>Boolean.TRUE</code>. 

 <P>Instances known by the implementation to be non-transactional
 return <code>Boolean.FALSE</code>.

 <P>Instances not recognized by the implementation return
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD><code>Boolean.TRUE</code> if the parameter instance is transactional.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoIsTransactional()"><CODE>PersistenceCapable.jdoIsTransactional()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="isDirty(java.lang.Object)"><!-- --></A><H3>
isDirty</H3>
<PRE>
java.lang.Boolean <B>isDirty</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Tests whether the parameter instance is dirty.

 Instances that have been modified, deleted, newly 
 made persistent in the current transaction,
 or modified while detached return <code>Boolean.TRUE</code>.

 <P>Instances known by the implementation to be non-dirty
 return <code>Boolean.FALSE</code>.

 <P>Instances not recognized by the implementation return
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD><code>Boolean.TRUE</code> if the parameter instance has been modified
 in the current transaction, or while detached.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/spi/StateManager.html#makeDirty(javax.jdo.spi.PersistenceCapable, java.lang.String)"><CODE>StateManager.makeDirty(PersistenceCapable pc, String fieldName)</CODE></A>, 
<A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoIsDirty()"><CODE>PersistenceCapable.jdoIsDirty()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="isNew(java.lang.Object)"><!-- --></A><H3>
isNew</H3>
<PRE>
java.lang.Boolean <B>isNew</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Tests whether the parameter instance has been newly made persistent.

 Instances that have been made persistent in the current transaction 
 return <code>Boolean.TRUE</code>.

 <P>Instances known by the implementation to be non-new
 return <code>Boolean.FALSE</code>.

 <P>Instances not recognized by the implementation return
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD><code>Boolean.TRUE</code> if the parameter instance was made persistent
 in the current transaction.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/PersistenceManager.html#makePersistent(T)"><CODE>PersistenceManager.makePersistent(Object pc)</CODE></A>, 
<A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoIsNew()"><CODE>PersistenceCapable.jdoIsNew()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="isDeleted(java.lang.Object)"><!-- --></A><H3>
isDeleted</H3>
<PRE>
java.lang.Boolean <B>isDeleted</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Tests whether the parameter instance has been deleted.

 Instances that have been deleted in the current transaction 
 return <code>Boolean.TRUE</code>.

 <P>Instances known by the implementation to be non-deleted
 return <code>Boolean.FALSE</code>.

 <P>Instances not recognized by the implementation return
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD><code>Boolean.TRUE</code> if the parameter instance was deleted
 in the current transaction.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/PersistenceManager.html#deletePersistent(java.lang.Object)"><CODE>PersistenceManager.deletePersistent(Object pc)</CODE></A>, 
<A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoIsDeleted()"><CODE>PersistenceCapable.jdoIsDeleted()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="isDetached(java.lang.Object)"><!-- --></A><H3>
isDetached</H3>
<PRE>
java.lang.Boolean <B>isDetached</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Tests whether the parameter instance is detached.

 Instances that are detached return <code>Boolean.TRUE</code>.

 <P>Instances known by the implementation to be non-detached
 return <code>Boolean.FALSE</code>.

 <P>Instances not recognized by the implementation return
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD><code>Boolean.TRUE</code> if the parameter instance is detached.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/PersistenceManager.html#detachCopy(T)"><CODE>PersistenceManager.detachCopy(Object pc)</CODE></A>, 
<A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoIsDeleted()"><CODE>PersistenceCapable.jdoIsDeleted()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getPersistenceManager(java.lang.Object)"><!-- --></A><H3>
getPersistenceManager</H3>
<PRE>
<A HREF="../../../javax/jdo/PersistenceManager.html" title="interface in javax.jdo">PersistenceManager</A> <B>getPersistenceManager</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Return the associated <code>PersistenceManager</code> if there is one.
 Transactional and persistent instances return the associated
 <code>PersistenceManager</code>.  

 <P>Transient non-transactional instances return <code>null</code>.
 <P>Instances unknown by the implementation return <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD>the <code>PersistenceManager</code> associated with the 
 parameter instance.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoGetPersistenceManager()"><CODE>PersistenceCapable.jdoGetPersistenceManager()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getObjectId(java.lang.Object)"><!-- --></A><H3>
getObjectId</H3>
<PRE>
java.lang.Object <B>getObjectId</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Return a copy of the JDO identity associated with the parameter 
 instance.

 <P>Persistent instances of <code>PersistenceCapable</code> classes 
 have a JDO identity
 managed by the <code>PersistenceManager</code>.  This method returns 
 a copy of the
 ObjectId that represents the JDO identity.  
 
 <P>Instances unknown by the implementation return <code>null</code>.
 <P>The ObjectId may be serialized
 and later restored, and used with a <code>PersistenceManager</code> 
 from the same JDO
 implementation to locate a persistent instance with the same data store
 identity.

 <P>If the JDO identity is managed by the application, then the ObjectId
 may be used with a <code>PersistenceManager</code> from any JDO 
 implementation that supports
 the <code>PersistenceCapable</code> class.

 <P>If the JDO identity is not managed by the application or the data 
 store, then the ObjectId returned is only valid within the current 
 transaction.
<P>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD>a copy of the ObjectId of the parameter instance as of the 
 beginning of the transaction.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/PersistenceManager.html#getObjectId(java.lang.Object)"><CODE>PersistenceManager.getObjectId(Object pc)</CODE></A>, 
<A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoGetObjectId()"><CODE>PersistenceCapable.jdoGetObjectId()</CODE></A>, 
<A HREF="../../../javax/jdo/PersistenceManager.html#getObjectById(java.lang.Object, boolean)"><CODE>PersistenceManager.getObjectById(Object oid, boolean validate)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getTransactionalObjectId(java.lang.Object)"><!-- --></A><H3>
getTransactionalObjectId</H3>
<PRE>
java.lang.Object <B>getTransactionalObjectId</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Return a copy of the JDO identity associated with the parameter 
 instance.

 <P>Instances unknown by the implementation return <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD>a copy of the ObjectId of the parameter instance as modified 
 in this transaction.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoGetTransactionalObjectId()"><CODE>PersistenceCapable.jdoGetTransactionalObjectId()</CODE></A>, 
<A HREF="../../../javax/jdo/PersistenceManager.html#getObjectById(java.lang.Object, boolean)"><CODE>PersistenceManager.getObjectById(Object oid, boolean validate)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getVersion(java.lang.Object)"><!-- --></A><H3>
getVersion</H3>
<PRE>
java.lang.Object <B>getVersion</B>(java.lang.Object&nbsp;pc)</PRE>
<DL>
<DD>Return the version of the parameter instance.

 <P>Instances unknown by the implementation return <code>null</code>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.
<DT><B>Returns:</B><DD>a copy of the ObjectId of the parameter instance as modified 
 in this transaction.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoGetVersion()"><CODE>PersistenceCapable.jdoGetVersion()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="makeDirty(java.lang.Object, java.lang.String)"><!-- --></A><H3>
makeDirty</H3>
<PRE>
boolean <B>makeDirty</B>(java.lang.Object&nbsp;pc,
                  java.lang.String&nbsp;fieldName)</PRE>
<DL>
<DD>Explicitly mark the parameter instance and field dirty.
 Normally, <code>PersistenceCapable</code> classes are able to detect 
 changes made
 to their fields.  However, if a reference to an array is given to a
 method outside the class, and the array is modified, then the
 persistent instance is not aware of the change.  This API allows the
 application to notify the instance that a change was made to a field.

 <P>Instances unknown by the implementation are unaffected.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pc</CODE> - the instance.<DD><CODE>fieldName</CODE> - the name of the field to be marked dirty.<DT><B>See Also:</B><DD><A HREF="../../../javax/jdo/spi/PersistenceCapable.html#jdoMakeDirty(java.lang.String)"><CODE>PersistenceCapable.jdoMakeDirty(String fieldName)</CODE></A></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/StateInterrogation.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="../../../javax/jdo/spi/RegisterClassListener.html" title="interface in javax.jdo.spi"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../javax/jdo/spi/StateManager.html" title="interface in javax.jdo.spi"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html?javax/jdo/spi/StateInterrogation.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="StateInterrogation.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; 2005-2010 Apache Software Foundation. All Rights Reserved.
</BODY>
</HTML>
