db-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From an...@apache.org
Subject svn commit: r851672 [1/12] - in /websites/production/db/content/jdo: ./ guides/ releases/
Date Sat, 23 Feb 2013 14:12:19 GMT
Author: andyj
Date: Sat Feb 23 14:12:18 2013
New Revision: 851672

Log:
latest build with updated impls.xml

Modified:
    websites/production/db/content/jdo/attach_detach.html
    websites/production/db/content/jdo/class_types.html
    websites/production/db/content/jdo/dependencies.html
    websites/production/db/content/jdo/downloads.html
    websites/production/db/content/jdo/enhancement.html
    websites/production/db/content/jdo/exceptions.html
    websites/production/db/content/jdo/extents.html
    websites/production/db/content/jdo/faq.html
    websites/production/db/content/jdo/fetchgroups.html
    websites/production/db/content/jdo/field_types.html
    websites/production/db/content/jdo/get-involved.html
    websites/production/db/content/jdo/glossary.html
    websites/production/db/content/jdo/guides.html
    websites/production/db/content/jdo/guides/maven-jdo.html
    websites/production/db/content/jdo/guides/replication.html
    websites/production/db/content/jdo/impls.html
    websites/production/db/content/jdo/index.html
    websites/production/db/content/jdo/issuetracking.html
    websites/production/db/content/jdo/javadoc.html
    websites/production/db/content/jdo/jdo_3_0_overview.html
    websites/production/db/content/jdo/jdo_dtd.html
    websites/production/db/content/jdo/jdo_v_jpa.html
    websites/production/db/content/jdo/jdo_v_jpa_api.html
    websites/production/db/content/jdo/jdo_v_jpa_orm.html
    websites/production/db/content/jdo/jdocentral.html
    websites/production/db/content/jdo/jdoconfig_dtd.html
    websites/production/db/content/jdo/jdohelper.html
    websites/production/db/content/jdo/jdoql.html
    websites/production/db/content/jdo/jdoql_methods.html
    websites/production/db/content/jdo/jdoql_result.html
    websites/production/db/content/jdo/jdoquery_dtd.html
    websites/production/db/content/jdo/mail-lists.html
    websites/production/db/content/jdo/metadata.html
    websites/production/db/content/jdo/newshistory.html
    websites/production/db/content/jdo/object_retrieval.html
    websites/production/db/content/jdo/orm_dtd.html
    websites/production/db/content/jdo/pm.html
    websites/production/db/content/jdo/pmf.html
    websites/production/db/content/jdo/references.html
    websites/production/db/content/jdo/releases/release-2.0-beta.html
    websites/production/db/content/jdo/releases/release-2.0-rc1.html
    websites/production/db/content/jdo/releases/release-2.0.html
    websites/production/db/content/jdo/releases/release-2.1.1.html
    websites/production/db/content/jdo/releases/release-2.1.html
    websites/production/db/content/jdo/releases/release-2.2.html
    websites/production/db/content/jdo/releases/release-2.3-ea.html
    websites/production/db/content/jdo/releases/release-3.0.1.html
    websites/production/db/content/jdo/releases/release-3.0.html
    websites/production/db/content/jdo/roadmap.html
    websites/production/db/content/jdo/specifications.html
    websites/production/db/content/jdo/state_transition.html
    websites/production/db/content/jdo/svn.html
    websites/production/db/content/jdo/tck.html
    websites/production/db/content/jdo/team-list.html
    websites/production/db/content/jdo/transactions.html
    websites/production/db/content/jdo/why_jdo.html

Modified: websites/production/db/content/jdo/attach_detach.html
==============================================================================
--- websites/production/db/content/jdo/attach_detach.html (original)
+++ websites/production/db/content/jdo/attach_detach.html Sat Feb 23 14:12:18 2013
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Feb 23, 2013 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -11,7 +11,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20130120" />
+    <meta name="Date-Revision-yyyymmdd" content="20130223" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -209,235 +209,235 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        
-    
-        <div class="section"><h2>JDO Attach/Detach<a name="JDO_AttachDetach"></a></h2>
-            <p>
-                JDO provides an interface to the persistence of objects. JDO 1.0 doesn't provide a way of taking 
-                an object that was just persisted and just work on it and update the persisted object later. 
-                The user has to copy the fields manually and copy them back to the persisted object later. 
-                JDO 2.0 introduces a new way of handling this situation, by <b>detaching</b> an object from the 
-                persistence graph, allowing it to be worked on in the users application. It can then be 
-                <b>attached</b> to the persistence graph later. 
-                Please refer to <a href="state_transition.html">Object Lifecycle</a> for where this fits in.
-                The first thing to do to use a class with this facility is to tag it as &quot;detachable&quot;. 
-                This is done by adding the attribute
-            </p>
-            <div class="source"><pre>&lt;class name=&quot;MyClass&quot; detachable=&quot;true&quot;&gt;</pre></div>
-            <p>
-                This acts as an instruction to the <a href="enhancement.html">enhancement process</a> to add 
-                methods necessary to utilise the attach/detach process.
-            </p>
-
-            <p>
-                The following code fragment highlights how to use the attach/detach mechanism
-            </p>
-            <div class="source"><pre>
-Product working_product=null;
-Transaction tx=pm.currentTransaction();
-try
-{
-    tx.begin();
-
-    Product prod=new Product(name,description,price);
-    pm.makePersistent(prod);
-
-    // Detach the product for use
-    working_product = (Product)pm.detachCopy(prod);
-
-    tx.commit();
-}
-catch (Exception e)
-{
-    // Handle the exception
-}
-finally
-{
-    if (tx.isActive())
-    {
-        tx.rollback();
-    }
-}
-
-// Work on the detached object in our application
-working_product.setPrice(new_price);
-
-...
-
-// Reattach the updated object
-tx = pm.currentTransaction();
-try
-{
-    tx.begin();
-
-    Product attached_product = pm.makePersistent(working_product);
-
-    tx.commit();
-}
-catch (Exception e)
-{
-    // Handle the exception
-}
-finally
-{
-    if (tx.isActive())
-    {
-        tx.rollback();
-    }
-}</pre></div>
-            <p>
-                So we now don't need to do any manual copying of object fields just using a simple call to 
-                detach the object, and then attach it again later. Here are a few things to note with 
-                <i>attach/detach</i> :-
-            </p>
-            <ul>
-                <li>Calling <i>detachCopy</i> on an object that is not detachable will return a <b>transient</b> 
-                    instance that is a COPY of the original, so use the COPY thereafter.</li>
-                <li>Calling <i>detachCopy</i> on an object that is detachable will return a <b>detached</b> 
-                    instance that is a COPY of the original, so use this COPY thereafter</li>
-                <li>A <i>detached</i> object retain the id of its datastore entity. Detached objects should be used
-                    where you want to update the objects and attach them later (updating the associated object in the
-                    datastore. If you want to create copies of the objects in the datastore with their own identities
-                    you should use <i>makeTransient</i> instead of <i>detachCopy</i>.</li>
-                <li>Calling <i>detachCopy</i> will detach all fields of that object that are in the current 
-                    <a href="fetchgroups.html">Fetch Group</a> for that class for that <i>PersistenceManager</i>.</li>
-                <li>By default the fields of the object that will be detached are those in the <i>Default Fetch Group</i>.</li>
-                <li>You should choose your <a href="fetchgroups.html">Fetch Group</a> carefully, bearing in mind which
-                    object(s) you want to access whilst detached. Detaching a relation field will detach the related object
-                    as well.</li>
-                <li>If you don't detach a field of an object, you <u>cannot</u> access the value for that field while
-                    the object is detached.</li>
-                <li>If you don't detach a field of an object, you <u>can</u> update the value for that field while detached,
-                    and thereafter you can access the value for that field.</li>
-                <li>Calling <i>makePersistent</i> will return an (attached) copy of the detached object. It will attach all fields that
-                    were originally detached, and will also attach any other fields that were modified whilst detached.</li>
-            </ul>
-
-            <a name="detach_all_on_commit"></a>
-            <div class="section"><h3>Detach All On Commit<a name="Detach_All_On_Commit"></a></h3>
-                <p>
-                    JDO2 also provides a mechanism whereby all objects that were enlisted in a transaction are 
-                    automatically detached when the transaction is committed. You can enable this in one of 3 ways. 
-                    If you want to use this mode globally for all <i>PersistenceManager</i>s (PMs) from a 
-                    <i>PersistenceManagerFactory</i> (PMF) you could either set the PMF property 
-                    &quot;datanucleus.DetachAllOnCommit&quot;, or you could create your PMF and call the PMF method 
-                    <b>setDetachAllOnCommit(true)</b>. If instead you wanted to use this mode only for a particular
-                    PM, or only for a particular transaction for a particular PM, then you can call the PM method
-                    <b>setDetachAllOnCommit(true)</b> before the commit of the transaction, and it will apply for all
-                    transaction commits thereafter, until turned off (<b>setDetachAllOnCommit(false)</b>. 
-                    Here's an example
-                </p>
-                <div class="source"><pre>
-// Create a PMF
-...
-
-// Create an object
-MyObject my = new MyObject();
-
-PersistenceManager pm = pmf.getPersistenceManager();
-Transaction tx = pm.currentTransaction();
-try
-{
-    tx.begin();
-
-    // We want our object to be detached when it's been persisted
-    pm.setDetachAllOnCommit(true);
-
-    // Persist the object that we created earlier
-    pm.makePersistent(my);
-
-    tx.commit();
-    // The object &quot;my&quot; is now in detached state and can be used further
-}
-finally
-{
-    if (tx.isActive)
-    {
-        tx.rollback();
-    }
-}</pre></div>
-                <br />
-            </div>
-
-            <a name="copy_on_attach"></a>
-            <div class="section"><h3>Copy On Attach<a name="Copy_On_Attach"></a></h3>
-                <p>
-                    By default when you are attaching a detached object it will return an attached copy
-                    of the detached object. JDO2.1 provides a new feature that allows this attachment to
-                    just migrate the existing detached object into attached state.
-                </p>
-                <p>
-                    You enable this by setting the <i>PersistenceManagerFactory</i> (PMF) property
-                    <b>datanucleus.CopyOnAttach</b> to false. Alternatively you can use the methods
-                    <i>PersistenceManagerFactory.setCopyOnAttach(boolean flag)</i> or
-                    <i>PersistenceManager.setCopyOnAttach(boolean flag)</i>.
-                    If we return to the example at the start of this page, this now becomes
-                </p>
-                <div class="source"><pre>
-// Reattach the updated object
-pm.setCopyOnAttach(false);
-tx = pm.currentTransaction();
-try
-{
-    tx.begin();
-
-    // working product is currently in detached state
-
-    pm.makePersistent(working_product);
-    // working_product is now in persistent (attached) state
-
-    tx.commit();
-}
-catch (Exception e)
-{
-    // Handle the exception
-}
-finally
-{
-    if (tx.isActive())
-    {
-        tx.rollback();
-    }
-}</pre></div>
-                <p>
-                    Please note that if you try to attach two detached objects representing the same underlying 
-                    persistent object within the same transaction (i.e a persistent object with the same identity
-                    already exists in the level 1 cache), then a JDOUserException will be thrown.
-                </p>
-                <br />
-            </div>
-
-            <div class="section"><h3>Serialization of Detachable classes<a name="Serialization_of_Detachable_classes"></a></h3>
-                <p>
-                    During enhancement of Detachable classes, a field called <i>jdoDetachedState</i> is added to 
-                    the class definition. This field allows reading and changing tracking of detached objects 
-                    while they are not managed by a PersistenceManager.
-                </p>
-                <p>
-                    When serialization occurs on a Detachable object, the <i>jdoDetachedState</i> field is written 
-                    to the serialized object stream. On deserialize, this field is written back to the new 
-                    deserialized instance. This process occurs transparently to the application. However, if 
-                    deserialization occurs with an un-enhanced version of the class, the detached state is lost.
-                </p>
-                <p>
-                    Serialization and deserialization of Detachable classes and un-enhanced versions of the same 
-                    class is only possible if the field <i>serialVersionUID</i> is added. It's recommended during 
-                    development of the class, to define the <i>serialVersionUID</i> and make the class to implement
-                    the <i>java.io.Serializable</i> interface, as the following example:
-                </p>
-<div class="source"><pre>
-class MyClass implements java.io.Serializable
-{
-    private static final long serialVersionUID = 2765740961462495537L; // any random value here
-    
-    //.... other fields
-}
-</pre></div>                        
-                <br />
-            </div>
-        </div>
-
-    
+        
+    
+        <div class="section"><h2>JDO Attach/Detach<a name="JDO_AttachDetach"></a></h2>
+            <p>
+                JDO provides an interface to the persistence of objects. JDO 1.0 doesn't provide a way of taking 
+                an object that was just persisted and just work on it and update the persisted object later. 
+                The user has to copy the fields manually and copy them back to the persisted object later. 
+                JDO 2.0 introduces a new way of handling this situation, by <b>detaching</b> an object from the 
+                persistence graph, allowing it to be worked on in the users application. It can then be 
+                <b>attached</b> to the persistence graph later. 
+                Please refer to <a href="state_transition.html">Object Lifecycle</a> for where this fits in.
+                The first thing to do to use a class with this facility is to tag it as &quot;detachable&quot;. 
+                This is done by adding the attribute
+            </p>
+            <div class="source"><pre>&lt;class name=&quot;MyClass&quot; detachable=&quot;true&quot;&gt;</pre></div>
+            <p>
+                This acts as an instruction to the <a href="enhancement.html">enhancement process</a> to add 
+                methods necessary to utilise the attach/detach process.
+            </p>
+
+            <p>
+                The following code fragment highlights how to use the attach/detach mechanism
+            </p>
+            <div class="source"><pre>
+Product working_product=null;
+Transaction tx=pm.currentTransaction();
+try
+{
+    tx.begin();
+
+    Product prod=new Product(name,description,price);
+    pm.makePersistent(prod);
+
+    // Detach the product for use
+    working_product = (Product)pm.detachCopy(prod);
+
+    tx.commit();
+}
+catch (Exception e)
+{
+    // Handle the exception
+}
+finally
+{
+    if (tx.isActive())
+    {
+        tx.rollback();
+    }
+}
+
+// Work on the detached object in our application
+working_product.setPrice(new_price);
+
+...
+
+// Reattach the updated object
+tx = pm.currentTransaction();
+try
+{
+    tx.begin();
+
+    Product attached_product = pm.makePersistent(working_product);
+
+    tx.commit();
+}
+catch (Exception e)
+{
+    // Handle the exception
+}
+finally
+{
+    if (tx.isActive())
+    {
+        tx.rollback();
+    }
+}</pre></div>
+            <p>
+                So we now don't need to do any manual copying of object fields just using a simple call to 
+                detach the object, and then attach it again later. Here are a few things to note with 
+                <i>attach/detach</i> :-
+            </p>
+            <ul>
+                <li>Calling <i>detachCopy</i> on an object that is not detachable will return a <b>transient</b> 
+                    instance that is a COPY of the original, so use the COPY thereafter.</li>
+                <li>Calling <i>detachCopy</i> on an object that is detachable will return a <b>detached</b> 
+                    instance that is a COPY of the original, so use this COPY thereafter</li>
+                <li>A <i>detached</i> object retain the id of its datastore entity. Detached objects should be used
+                    where you want to update the objects and attach them later (updating the associated object in the
+                    datastore. If you want to create copies of the objects in the datastore with their own identities
+                    you should use <i>makeTransient</i> instead of <i>detachCopy</i>.</li>
+                <li>Calling <i>detachCopy</i> will detach all fields of that object that are in the current 
+                    <a href="fetchgroups.html">Fetch Group</a> for that class for that <i>PersistenceManager</i>.</li>
+                <li>By default the fields of the object that will be detached are those in the <i>Default Fetch Group</i>.</li>
+                <li>You should choose your <a href="fetchgroups.html">Fetch Group</a> carefully, bearing in mind which
+                    object(s) you want to access whilst detached. Detaching a relation field will detach the related object
+                    as well.</li>
+                <li>If you don't detach a field of an object, you <u>cannot</u> access the value for that field while
+                    the object is detached.</li>
+                <li>If you don't detach a field of an object, you <u>can</u> update the value for that field while detached,
+                    and thereafter you can access the value for that field.</li>
+                <li>Calling <i>makePersistent</i> will return an (attached) copy of the detached object. It will attach all fields that
+                    were originally detached, and will also attach any other fields that were modified whilst detached.</li>
+            </ul>
+
+            <a name="detach_all_on_commit"></a>
+            <div class="section"><h3>Detach All On Commit<a name="Detach_All_On_Commit"></a></h3>
+                <p>
+                    JDO2 also provides a mechanism whereby all objects that were enlisted in a transaction are 
+                    automatically detached when the transaction is committed. You can enable this in one of 3 ways. 
+                    If you want to use this mode globally for all <i>PersistenceManager</i>s (PMs) from a 
+                    <i>PersistenceManagerFactory</i> (PMF) you could either set the PMF property 
+                    &quot;datanucleus.DetachAllOnCommit&quot;, or you could create your PMF and call the PMF method 
+                    <b>setDetachAllOnCommit(true)</b>. If instead you wanted to use this mode only for a particular
+                    PM, or only for a particular transaction for a particular PM, then you can call the PM method
+                    <b>setDetachAllOnCommit(true)</b> before the commit of the transaction, and it will apply for all
+                    transaction commits thereafter, until turned off (<b>setDetachAllOnCommit(false)</b>. 
+                    Here's an example
+                </p>
+                <div class="source"><pre>
+// Create a PMF
+...
+
+// Create an object
+MyObject my = new MyObject();
+
+PersistenceManager pm = pmf.getPersistenceManager();
+Transaction tx = pm.currentTransaction();
+try
+{
+    tx.begin();
+
+    // We want our object to be detached when it's been persisted
+    pm.setDetachAllOnCommit(true);
+
+    // Persist the object that we created earlier
+    pm.makePersistent(my);
+
+    tx.commit();
+    // The object &quot;my&quot; is now in detached state and can be used further
+}
+finally
+{
+    if (tx.isActive)
+    {
+        tx.rollback();
+    }
+}</pre></div>
+                <br />
+            </div>
+
+            <a name="copy_on_attach"></a>
+            <div class="section"><h3>Copy On Attach<a name="Copy_On_Attach"></a></h3>
+                <p>
+                    By default when you are attaching a detached object it will return an attached copy
+                    of the detached object. JDO2.1 provides a new feature that allows this attachment to
+                    just migrate the existing detached object into attached state.
+                </p>
+                <p>
+                    You enable this by setting the <i>PersistenceManagerFactory</i> (PMF) property
+                    <b>datanucleus.CopyOnAttach</b> to false. Alternatively you can use the methods
+                    <i>PersistenceManagerFactory.setCopyOnAttach(boolean flag)</i> or
+                    <i>PersistenceManager.setCopyOnAttach(boolean flag)</i>.
+                    If we return to the example at the start of this page, this now becomes
+                </p>
+                <div class="source"><pre>
+// Reattach the updated object
+pm.setCopyOnAttach(false);
+tx = pm.currentTransaction();
+try
+{
+    tx.begin();
+
+    // working product is currently in detached state
+
+    pm.makePersistent(working_product);
+    // working_product is now in persistent (attached) state
+
+    tx.commit();
+}
+catch (Exception e)
+{
+    // Handle the exception
+}
+finally
+{
+    if (tx.isActive())
+    {
+        tx.rollback();
+    }
+}</pre></div>
+                <p>
+                    Please note that if you try to attach two detached objects representing the same underlying 
+                    persistent object within the same transaction (i.e a persistent object with the same identity
+                    already exists in the level 1 cache), then a JDOUserException will be thrown.
+                </p>
+                <br />
+            </div>
+
+            <div class="section"><h3>Serialization of Detachable classes<a name="Serialization_of_Detachable_classes"></a></h3>
+                <p>
+                    During enhancement of Detachable classes, a field called <i>jdoDetachedState</i> is added to 
+                    the class definition. This field allows reading and changing tracking of detached objects 
+                    while they are not managed by a PersistenceManager.
+                </p>
+                <p>
+                    When serialization occurs on a Detachable object, the <i>jdoDetachedState</i> field is written 
+                    to the serialized object stream. On deserialize, this field is written back to the new 
+                    deserialized instance. This process occurs transparently to the application. However, if 
+                    deserialization occurs with an un-enhanced version of the class, the detached state is lost.
+                </p>
+                <p>
+                    Serialization and deserialization of Detachable classes and un-enhanced versions of the same 
+                    class is only possible if the field <i>serialVersionUID</i> is added. It's recommended during 
+                    development of the class, to define the <i>serialVersionUID</i> and make the class to implement
+                    the <i>java.io.Serializable</i> interface, as the following example:
+                </p>
+<div class="source"><pre>
+class MyClass implements java.io.Serializable
+{
+    private static final long serialVersionUID = 2765740961462495537L; // any random value here
+    
+    //.... other fields
+}
+</pre></div>                        
+                <br />
+            </div>
+        </div>
+
+    
 
       </div>
     </div>

Modified: websites/production/db/content/jdo/class_types.html
==============================================================================
--- websites/production/db/content/jdo/class_types.html (original)
+++ websites/production/db/content/jdo/class_types.html Sat Feb 23 14:12:18 2013
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Feb 23, 2013 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -11,7 +11,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20130120" />
+    <meta name="Date-Revision-yyyymmdd" content="20130223" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -209,64 +209,64 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        
-    
-        <div class="section"><h2>JDO Class Types<a name="JDO_Class_Types"></a></h2>
-            <p>
-                JDO provides a means of transparent persistence of objects of user defined classes. With JDO there are actually 
-                3 types of classes.
-            </p>
-            <ul>
-                <li><b>Persistence Capable</b> classes are classes whose instances can be persisted to a datastore. JDO provide the 
-                    mechanism for persisting these instances, and they are core to JDO. These classes need to be <i>enhanced</i> 
-                    according to a JDO Meta-Data specification before use within a JDO environment.</li>
-                <li><b>Persistence Aware</b> classes are classes that manipulate Persistence Capable instances through direct attribute 
-                    manipulation. These classes are typically enhanced with very minimal JDO Meta-Data. The enhancement process performs very 
-                    little changes to these classes.</li>
-                <li><b>Normal</b> classes are classes that aren't themselves persistable, and have no knowledge of persistence either. 
-                    These classes are totally unchanged in JDO, and require no JDO Meta-Data whatsoever.</li>
-            </ul>
-
-            <div class="section"><h3>PersistenceCapable<a name="PersistenceCapable"></a></h3>
-                <p>
-                    Classes are defined as <b>PersistenceCapable</b> either by XML MetaData, like this
-                </p>
-                <div class="source"><pre>
-&lt;class name=&quot;MyClass&quot;&gt;
-    ...
-&lt;/class&gt;</pre></div>
-                <p>
-                    or, in JDO2.1, using Annotations. Like this
-                </p>
-                <div class="source"><pre>
-@PersistenceCapable
-public class MyClass
-{
-    ...
-}</pre></div>
-                <br />
-            </div>
-
-            <div class="section"><h3>PersistenceAware<a name="PersistenceAware"></a></h3>
-                <p>
-                    Classes are defined as <b>PersistenceAware</b> either by XML MetaData, like this
-                </p>
-                <div class="source"><pre>
-&lt;class name=&quot;MyClass&quot; persistence-modifier=&quot;persistence-aware&quot;/&gt;</pre></div>
-                <p>
-                    or, in JDO2.1, using Annotations. Like this
-                </p>
-                <div class="source"><pre>
-@PersistenceAware
-public class MyClass
-{
-    ...
-}</pre></div>
-                <br />
-            </div>
-        </div>
-
-    
+        
+    
+        <div class="section"><h2>JDO Class Types<a name="JDO_Class_Types"></a></h2>
+            <p>
+                JDO provides a means of transparent persistence of objects of user defined classes. With JDO there are actually 
+                3 types of classes.
+            </p>
+            <ul>
+                <li><b>Persistence Capable</b> classes are classes whose instances can be persisted to a datastore. JDO provide the 
+                    mechanism for persisting these instances, and they are core to JDO. These classes need to be <i>enhanced</i> 
+                    according to a JDO Meta-Data specification before use within a JDO environment.</li>
+                <li><b>Persistence Aware</b> classes are classes that manipulate Persistence Capable instances through direct attribute 
+                    manipulation. These classes are typically enhanced with very minimal JDO Meta-Data. The enhancement process performs very 
+                    little changes to these classes.</li>
+                <li><b>Normal</b> classes are classes that aren't themselves persistable, and have no knowledge of persistence either. 
+                    These classes are totally unchanged in JDO, and require no JDO Meta-Data whatsoever.</li>
+            </ul>
+
+            <div class="section"><h3>PersistenceCapable<a name="PersistenceCapable"></a></h3>
+                <p>
+                    Classes are defined as <b>PersistenceCapable</b> either by XML MetaData, like this
+                </p>
+                <div class="source"><pre>
+&lt;class name=&quot;MyClass&quot;&gt;
+    ...
+&lt;/class&gt;</pre></div>
+                <p>
+                    or, in JDO2.1, using Annotations. Like this
+                </p>
+                <div class="source"><pre>
+@PersistenceCapable
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+            </div>
+
+            <div class="section"><h3>PersistenceAware<a name="PersistenceAware"></a></h3>
+                <p>
+                    Classes are defined as <b>PersistenceAware</b> either by XML MetaData, like this
+                </p>
+                <div class="source"><pre>
+&lt;class name=&quot;MyClass&quot; persistence-modifier=&quot;persistence-aware&quot;/&gt;</pre></div>
+                <p>
+                    or, in JDO2.1, using Annotations. Like this
+                </p>
+                <div class="source"><pre>
+@PersistenceAware
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+            </div>
+        </div>
+
+    
 
       </div>
     </div>

Modified: websites/production/db/content/jdo/dependencies.html
==============================================================================
--- websites/production/db/content/jdo/dependencies.html (original)
+++ websites/production/db/content/jdo/dependencies.html Sat Feb 23 14:12:18 2013
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Feb 23, 2013 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -12,7 +12,7 @@
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
       <meta name="author" content="JDO Documentation Team" />
-    <meta name="Date-Revision-yyyymmdd" content="20130120" />
+    <meta name="Date-Revision-yyyymmdd" content="20130223" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -210,80 +210,80 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        <!-- Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software 
-distributed under the License is distributed on an "AS IS" BASIS, 
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-See the License for the specific language governing permissions and 
-limitations under the License. -->
- 
-  <div class="section"><h2>The Apache JDO Project<a name="The_Apache_JDO_Project"></a></h2>
-
-    <p>
-    Apache JDO is a sub-project of the Apache DB TLP. It includes two major areas:
-    </p>
-    <ul>
-    <li>
-JDO 1, Java Specification Request 12, API, Reference Implementation, and 
-Technology Compatibility Kit.
-    </li>
-    <li>
-JDO 2, Java Specification Request 243, API, and Technology Compatibility Kit.
-The Reference Implementation is being developed in parallel by <a class="externalLink" href="http://www.jpox.org">JPOX</a>.
-    </li>
-    </ul>
-
-  <p> 
-  The common external dependencies of JDO include the tools used to build and test it:
-  </p>
-
-  <ul>
-    <li>Subversion</li>
-    <li>Maven</li>
-    <li>Ant</li>
-    <li>JUnit</li>
-  </ul>
-
-  <p>
-  Other external dependencies of JDO are subproject-specific:
-  </p>
-
-  <ul>
-    <li>JDO 2.0 API
-      <ul>
-        <li>Java Transaction API</li>
-      </ul>
-    </li>
-    <li>JDO 2.0 TCK
-      <ul>
-        <li>Java Transaction API</li>
-        <li>Jakarta Commons Logging</li>
-        <li>Log4j</li>
-        <li>Apache Derby</li>
-        <li>Spring Framework Core</li>
-        <li>JPOX
-          <ul>
-            <li>ASM</li>
-            <li>Source Forge c3p0</li>
-            <li>Commons DBCP</li>
-            <li>Commons Pool</li>
-            <li>Commons Collections</li>
-          </ul>
-        </li>
-      </ul>
-    </li>
-  </ul>
-</div>
-
-
+        <!-- Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software 
+distributed under the License is distributed on an "AS IS" BASIS, 
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+See the License for the specific language governing permissions and 
+limitations under the License. -->
+ 
+  <div class="section"><h2>The Apache JDO Project<a name="The_Apache_JDO_Project"></a></h2>
+
+    <p>
+    Apache JDO is a sub-project of the Apache DB TLP. It includes two major areas:
+    </p>
+    <ul>
+    <li>
+JDO 1, Java Specification Request 12, API, Reference Implementation, and 
+Technology Compatibility Kit.
+    </li>
+    <li>
+JDO 2, Java Specification Request 243, API, and Technology Compatibility Kit.
+The Reference Implementation is being developed in parallel by <a class="externalLink" href="http://www.jpox.org">JPOX</a>.
+    </li>
+    </ul>
+
+  <p> 
+  The common external dependencies of JDO include the tools used to build and test it:
+  </p>
+
+  <ul>
+    <li>Subversion</li>
+    <li>Maven</li>
+    <li>Ant</li>
+    <li>JUnit</li>
+  </ul>
+
+  <p>
+  Other external dependencies of JDO are subproject-specific:
+  </p>
+
+  <ul>
+    <li>JDO 2.0 API
+      <ul>
+        <li>Java Transaction API</li>
+      </ul>
+    </li>
+    <li>JDO 2.0 TCK
+      <ul>
+        <li>Java Transaction API</li>
+        <li>Jakarta Commons Logging</li>
+        <li>Log4j</li>
+        <li>Apache Derby</li>
+        <li>Spring Framework Core</li>
+        <li>JPOX
+          <ul>
+            <li>ASM</li>
+            <li>Source Forge c3p0</li>
+            <li>Commons DBCP</li>
+            <li>Commons Pool</li>
+            <li>Commons Collections</li>
+          </ul>
+        </li>
+      </ul>
+    </li>
+  </ul>
+</div>
+
+
 
       </div>
     </div>

Modified: websites/production/db/content/jdo/downloads.html
==============================================================================
--- websites/production/db/content/jdo/downloads.html (original)
+++ websites/production/db/content/jdo/downloads.html Sat Feb 23 14:12:18 2013
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Feb 23, 2013 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -12,7 +12,7 @@
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
       <meta name="author" content="JDO Documentation Team" />
-    <meta name="Date-Revision-yyyymmdd" content="20130120" />
+    <meta name="Date-Revision-yyyymmdd" content="20130223" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -210,111 +210,111 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        <!-- Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software 
-distributed under the License is distributed on an "AS IS" BASIS, 
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-See the License for the specific language governing permissions and 
-limitations under the License. -->
-    
-    <div class="section"><h2>Latest Official Release<a name="Latest_Official_Release"></a></h2>
-        <p>
-            <a href="releases/release-3.0.1.cgi">JDO 3.0.1</a> 
-            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
-            November 13, 2011
-        </p>
-    </div>
-
-    <div class="section"><h2>Previous Official Releases<a name="Previous_Official_Releases"></a></h2>
-        <p>
-            <a href="releases/release-3.0.cgi">JDO 3.0</a> 
-            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
-            July 23, 2010
-        </p>
-        <p>
-            <a href="releases/release-2.2.cgi">JDO 2.2</a> 
-            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
-            October 24, 2008
-        </p>
-        <p>
-            <a href="releases/release-2.1.1.cgi">JDO 2.1.1</a> 
-            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
-            August 29, 2008
-        </p>
-        <p>
-            <a href="releases/release-2.1.cgi">JDO 2.1</a> 
-            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
-            March 17, 2008
-        </p>
-        <p>
-            <a href="releases/release-2.0.cgi">JDO 2.0</a> 
-            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
-            May 1, 2006
-        </p>
-<!-- <p>
-<a href="releases/release-2.0-rc1.cgi">JDO 2.0 rc1</a> 
-<img vspace="0" hspace="8" SRC="images/dot_clear.gif"/>
-Feb 27, 2006
-</p>
-<p>
-<a href="releases/release-2.0-beta.cgi">JDO 2.0 beta</a> 
-<img vspace="0" hspace="8" SRC="images/dot_clear.gif"/>
-Jan 24, 2006
-            </p> -->
-</div>
-
-    <div class="section"><h2>About JDO Releases<a name="About_JDO_Releases"></a></h2>
-        <p>
-            A release of JDO includes the JDO API and the
-            Technology Compatibility Kit (TCK).
-            The TCK is available only in source form. The API
-            project is available as source and binary, and as raw jar files.
-        </p>
-        <ul>
-            <li> 
-            The api project contains source to build jdo-api.jar.
-            The jar file is the only artifact needed for users who wish to compile 
-            their programs using the JDO API.
-            It can be downloaded automatically by maven and placed into the local
-            maven repository if you include the
-            proper dependency in your maven project definition. 
-            Use groupId javax.jdo, artifactId jdo-api, version 3.0,
-            and define your remote repository as 
-            http://www.ibiblio.org/maven.
-            Alternatively, it can be downloaded manually and put into a location 
-            of your choice.
-            </li>
-            <li> 
-            The tck project contains the JDO Technology Compatibility Kit. 
-            The source distribution is the only artifact needed to be downloaded 
-            by the user. 
-            </li>
-        </ul>
-        <p>
-            All are available for download as source, but if you wish
-            to run the TCK you need only download the TCK project.  
-            The dependencies will be automatically downloaded by maven
-            as jar files.
-        </p>
-        <p>
-            For information on running the TCK, see <a href="tck.html">TCK</a>.
-            If downloading multiple source packages, extract them all
-            into the same directory. This will preserve the source
-            dependencies among the projects.
-        </p>
-        <p>
-            See <a href="svn.html">Source Code Version Control</a> for information about downloading the latest source code for all of the JDO projects.
-        </p>
-    </div>
-    
+        <!-- Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software 
+distributed under the License is distributed on an "AS IS" BASIS, 
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+See the License for the specific language governing permissions and 
+limitations under the License. -->
+    
+    <div class="section"><h2>Latest Official Release<a name="Latest_Official_Release"></a></h2>
+        <p>
+            <a href="releases/release-3.0.1.cgi">JDO 3.0.1</a> 
+            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
+            November 13, 2011
+        </p>
+    </div>
+
+    <div class="section"><h2>Previous Official Releases<a name="Previous_Official_Releases"></a></h2>
+        <p>
+            <a href="releases/release-3.0.cgi">JDO 3.0</a> 
+            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
+            July 23, 2010
+        </p>
+        <p>
+            <a href="releases/release-2.2.cgi">JDO 2.2</a> 
+            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
+            October 24, 2008
+        </p>
+        <p>
+            <a href="releases/release-2.1.1.cgi">JDO 2.1.1</a> 
+            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
+            August 29, 2008
+        </p>
+        <p>
+            <a href="releases/release-2.1.cgi">JDO 2.1</a> 
+            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
+            March 17, 2008
+        </p>
+        <p>
+            <a href="releases/release-2.0.cgi">JDO 2.0</a> 
+            <img src="images/dot_clear.gif" vspace="0" hspace="8" alt="" />
+            May 1, 2006
+        </p>
+<!-- <p>
+<a href="releases/release-2.0-rc1.cgi">JDO 2.0 rc1</a> 
+<img vspace="0" hspace="8" SRC="images/dot_clear.gif"/>
+Feb 27, 2006
+</p>
+<p>
+<a href="releases/release-2.0-beta.cgi">JDO 2.0 beta</a> 
+<img vspace="0" hspace="8" SRC="images/dot_clear.gif"/>
+Jan 24, 2006
+            </p> -->
+</div>
+
+    <div class="section"><h2>About JDO Releases<a name="About_JDO_Releases"></a></h2>
+        <p>
+            A release of JDO includes the JDO API and the
+            Technology Compatibility Kit (TCK).
+            The TCK is available only in source form. The API
+            project is available as source and binary, and as raw jar files.
+        </p>
+        <ul>
+            <li> 
+            The api project contains source to build jdo-api.jar.
+            The jar file is the only artifact needed for users who wish to compile 
+            their programs using the JDO API.
+            It can be downloaded automatically by maven and placed into the local
+            maven repository if you include the
+            proper dependency in your maven project definition. 
+            Use groupId javax.jdo, artifactId jdo-api, version 3.0,
+            and define your remote repository as 
+            http://www.ibiblio.org/maven.
+            Alternatively, it can be downloaded manually and put into a location 
+            of your choice.
+            </li>
+            <li> 
+            The tck project contains the JDO Technology Compatibility Kit. 
+            The source distribution is the only artifact needed to be downloaded 
+            by the user. 
+            </li>
+        </ul>
+        <p>
+            All are available for download as source, but if you wish
+            to run the TCK you need only download the TCK project.  
+            The dependencies will be automatically downloaded by maven
+            as jar files.
+        </p>
+        <p>
+            For information on running the TCK, see <a href="tck.html">TCK</a>.
+            If downloading multiple source packages, extract them all
+            into the same directory. This will preserve the source
+            dependencies among the projects.
+        </p>
+        <p>
+            See <a href="svn.html">Source Code Version Control</a> for information about downloading the latest source code for all of the JDO projects.
+        </p>
+    </div>
+    
 
       </div>
     </div>

Modified: websites/production/db/content/jdo/enhancement.html
==============================================================================
--- websites/production/db/content/jdo/enhancement.html (original)
+++ websites/production/db/content/jdo/enhancement.html Sat Feb 23 14:12:18 2013
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Feb 23, 2013 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -11,7 +11,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20130120" />
+    <meta name="Date-Revision-yyyymmdd" content="20130223" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -209,558 +209,558 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        
-    
-        <div class="section"><h2>JDO Enhancement<a name="JDO_Enhancement"></a></h2>
-            <p>
-                JDO defines a byte-code enhancement process that provides for dirty detection of fields.
-                Before a class is used at runtime it is compiled and then &quot;enhanced&quot; to implement the interface
-                <i>PersistenceCapable</i>, and optionally also <i>Detachable</i>.
-            </p>
-            <p>
-                We can demonstrate this by taking a sample class, and seeing it before and after enhancement.
-                We start with the following class
-            </p>
-            <div class="source"><pre>
-package org.apache.jdo.test;
-
-public class A
-{
-    long id;
-    String name;
-    B b;
-
-    public A(String name)
-    {
-        this.name = name;
-    }
-
-    public void setId(long id)
-    {
-        this.id = id;
-    }
-
-    public void setB(B b)
-    {
-        this.b = b;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public B getB()
-    {
-        return b;
-    }
-
-    public long getId()
-    {
-        return id;
-    }
-
-    public String toString()
-    {
-        return &quot;A : id=&quot; + id + &quot; [&quot; + name + &quot;] b=\&quot;&quot; + b + &quot;\&quot;&quot;;
-    }
-}</pre></div>
-            <p>
-                and require it to be <i>PersistenceCapable</i> and <i>Detachable</i>. 
-                The enhancement process needs to intercept all updates of the fields of the class (id, name, b) as well
-                as add on the necessary <i>PersistenceCapable</i>, <i>Detachable</i> methods.
-                After &quot;enhancement&quot; it becomes
-            </p>
-            <div class="source"><pre>
-package org.apache.jdo.test;
-import java.util.BitSet;
-
-import javax.jdo.JDODetachedFieldAccessException;
-import javax.jdo.JDOFatalInternalException;
-import javax.jdo.PersistenceManager;
-import javax.jdo.identity.LongIdentity;
-import javax.jdo.spi.Detachable;
-import javax.jdo.spi.JDOImplHelper;
-import javax.jdo.spi.JDOPermission;
-import javax.jdo.spi.PersistenceCapable;
-import javax.jdo.spi.StateManager;
-
-public class A implements PersistenceCapable, Detachable
-{
-    long id;
-    String name;
-    B b;
-    protected transient StateManager jdoStateManager;
-    protected transient byte jdoFlags;
-    protected Object[] jdoDetachedState;
-    private static final byte[] jdoFieldFlags;
-    private static final Class jdoPersistenceCapableSuperclass;
-    private static final Class[] jdoFieldTypes;
-    private static final String[] jdoFieldNames = __jdoFieldNamesInit();
-    private static final int jdoInheritedFieldCount;
-
-    static
-    {
-        jdoFieldTypes = __jdoFieldTypesInit();
-        jdoFieldFlags = __jdoFieldFlagsInit();
-        jdoInheritedFieldCount = __jdoGetInheritedFieldCount();
-        jdoPersistenceCapableSuperclass = __jdoPersistenceCapableSuperclassInit();
-        JDOImplHelper.registerClass(___jdo$loadClass(&quot;org.apache.jdo.test.A&quot;),
-                    jdoFieldNames, jdoFieldTypes,
-                    jdoFieldFlags,
-                    jdoPersistenceCapableSuperclass, new A());
-    }
-    
-    public void setId(long id)
-    {
-        jdoSetid(this, id);
-    }
-    
-    public void setB(B b)
-    {
-        jdoSetb(this, b);
-    }
-    
-    public String getName()
-    {
-        return jdoGetname(this);
-    }
-    
-    public B getB()
-    {
-        return jdoGetb(this);
-    }
-    
-    public long getId()
-    {
-        return jdoGetid(this);
-    }
-    
-    public String toString()
-    {
-        return new StringBuilder().append(&quot;A : id=&quot;).append(jdoGetid(this))
-           .append(&quot; [&quot;).append(jdoGetname(this))
-           .append(&quot;] b=\&quot;&quot;).append(jdoGetb(this))
-           .append(&quot;\&quot;&quot;).toString();
-    }
-
-    public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
-    {
-        if (fc == null)
-            throw new IllegalArgumentException
-              (&quot;ObjectIdFieldConsumer is null&quot;);
-        if (!(oid instanceof LongIdentity))
-            throw new ClassCastException
-              (&quot;oid is not instanceof javax.jdo.identity.LongIdentity&quot;);
-        LongIdentity o = (LongIdentity) oid;
-        fc.storeLongField(1, o.getKey());
-    }
-    
-    protected void jdoCopyKeyFieldsFromObjectId(Object oid)
-    {
-        if (!(oid instanceof LongIdentity))
-            throw new ClassCastException
-              (&quot;key class is not javax.jdo.identity.LongIdentity or null&quot;);
-        LongIdentity o = (LongIdentity) oid;
-        id = o.getKey();
-    }
-    
-    public final void jdoCopyKeyFieldsToObjectId(Object oid)
-    {
-        throw new JDOFatalInternalException
-          (&quot;It's illegal to call jdoCopyKeyFieldsToObjectId for a class with Single Field Identity.&quot;);
-    }
-    
-    public final void jdoCopyKeyFieldsToObjectId
-    (PersistenceCapable.ObjectIdFieldSupplier fs, Object oid) {
-    throw new JDOFatalInternalException
-          (&quot;It's illegal to call jdoCopyKeyFieldsToObjectId for a class with Single Field Identity.&quot;);
-    }
-    
-    public final Object jdoGetObjectId()
-    {
-        if (jdoStateManager != null)
-            return jdoStateManager.getObjectId(this);
-        if (this.jdoIsDetached() != true)
-            return null;
-        return jdoDetachedState[0];
-    }
-    
-    public final Object jdoGetVersion()
-    {
-        if (jdoStateManager != null)
-            return jdoStateManager.getVersion(this);
-        if (this.jdoIsDetached() != true)
-            return null;
-        return jdoDetachedState[1];
-    }
-    
-    protected final void jdoPreSerialize()
-    {
-        if (jdoStateManager != null)
-            jdoStateManager.preSerialize(this);
-    }
-    
-    public final PersistenceManager jdoGetPersistenceManager()
-    {
-        return (jdoStateManager != null
-            ? jdoStateManager.getPersistenceManager(this) : null);
-    }
-    
-    public final Object jdoGetTransactionalObjectId() 
-    {
-        return (jdoStateManager != null
-           ? jdoStateManager.getTransactionalObjectId(this) : null);
-    }
-    
-    public final boolean jdoIsDeleted()
-    {
-        return (jdoStateManager != null ? jdoStateManager.isDeleted(this): false);
-    }
-    
-    public final boolean jdoIsDirty()
-    {
-        if (jdoStateManager != null)
-            return jdoStateManager.isDirty(this);
-        if (this.jdoIsDetached() != true)
-            return false;
-        if (((BitSet) jdoDetachedState[3]).length() &lt;= 0)
-            return false;
-        return true;
-    }
-    
-    public final boolean jdoIsNew()
-    {
-        return jdoStateManager != null ? jdoStateManager.isNew(this) : false;
-    }
-    
-    public final boolean jdoIsPersistent()
-    {
-        return (jdoStateManager != null ? jdoStateManager.isPersistent(this): false);
-    }
-    
-    public final boolean jdoIsTransactional()
-    {
-        return (jdoStateManager != null ? jdoStateManager.isTransactional(this): false);
-    }
-    
-    public final boolean jdoIsDetached()
-    {
-        if (jdoStateManager == null) {
-            if (jdoDetachedState == null)
-                return false;
-            return true;
-        }
-        return false;
-    }
-    
-    public final void jdoMakeDirty(String fieldName)
-    {
-        if (jdoStateManager != null)
-            jdoStateManager.makeDirty(this, fieldName);
-    }
-    
-    public final Object jdoNewObjectIdInstance() 
-    {
-        return new LongIdentity(getClass(), id);
-    }
-    
-    public final Object jdoNewObjectIdInstance(Object key) 
-    {
-        if (key == null)
-            throw new IllegalArgumentException(&quot;key is null&quot;);
-        if (key instanceof String != true)
-            return new LongIdentity(this.getClass(), (Long) key);
-        return new LongIdentity(this.getClass(), (String) key);
-    }
-    
-    public final void jdoProvideFields(int[] fieldId)
-    {
-        if (fieldId == null)
-            throw new IllegalArgumentException(&quot;argment is null&quot;);
-        int i = fieldId.length - 1;
-        if (i &gt;= 0)
-        {
-            do
-                jdoProvideField(fieldId[i]);
-            while (--i &gt;= 0);
-        }
-    }
-    
-    public final void jdoReplaceFields(int[] fieldId) 
-    {
-        if (fieldId == null)
-            throw new IllegalArgumentException(&quot;argument is null&quot;);
-        int i = fieldId.length;
-        if (i &gt; 0)
-        {
-            int i_0_ = 0;
-            do
-                jdoReplaceField(fieldId[i_0_]);
-            while (++i_0_ &lt; i);
-        }
-    }
-    
-    public final void jdoReplaceFlags()
-    {
-        if (jdoStateManager != null) 
-        {
-            A a = this;
-            a.jdoFlags = a.jdoStateManager.replacingFlags(this);
-        }
-    }
-    
-    public final synchronized void jdoReplaceStateManager(StateManager stateManager)
-    {
-        if (jdoStateManager != null)
-        {
-            A a = this;
-            a.jdoStateManager = a.jdoStateManager.replacingStateManager(this, stateManager);
-        }
-        else
-        {
-            JDOImplHelper.checkAuthorizedStateManager(sm);
-            jdoStateManager = stateManager;
-            jdoFlags = (byte) 1;
-        }
-    }
-    
-    public final synchronized void jdoReplaceDetachedState()
-    {
-        if (jdoStateManager == null)
-            throw new IllegalStateException(&quot;state manager is null&quot;);
-        A a = this;
-        a.jdoDetachedState = a.jdoStateManager.replacingDetachedState(this, jdoDetachedState);
-    }
-    
-    public PersistenceCapable jdoNewInstance(StateManager sm)
-    {
-        A result = new A();
-        A a = result;
-        a.jdoFlags = (byte) 1;
-        a.jdoStateManager = sm;
-        return a;
-    }
-    
-    public PersistenceCapable jdoNewInstance(StateManager sm, Object o)
-    {
-        A result = new A();
-        A a = result;
-        a.jdoFlags = (byte) 1;
-        a.jdoStateManager = sm;
-        result.jdoCopyKeyFieldsFromObjectId(o);
-        return a;
-    }
-    
-    public void jdoReplaceField(int fieldIndex)
-    {
-        if (jdoStateManager == null)
-            throw new IllegalStateException(&quot;state manager is null&quot;);
-        switch (fieldIndex)
-        {
-            case 0:
-            {
-                A a = this;
-                a.b = (B) a.jdoStateManager.replacingObjectField(this, fieldIndex);
-                break;
-            }
-            case 1:
-            {
-                A a = this;
-                a.id = a.jdoStateManager.replacingLongField(this, fieldIndex);
-                break;
-            }
-            case 2:
-            {
-                A a = this;
-                a.name = a.jdoStateManager.replacingStringField(this, fieldIndex);
-                break;
-            }
-            default:
-                throw new IllegalArgumentException(&quot;out of field index :&quot; + fieldIndex);
-        }
-    }
-    
-    public void jdoProvideField(int fieldIndex)
-    {
-        if (jdoStateManager == null)
-            throw new IllegalStateException(&quot;state manager is null&quot;);
-        switch (fieldIndex)
-        {
-            case 0:
-                jdoStateManager.providedObjectField(this, fieldIndex, b);
-                break;
-            case 1:
-                jdoStateManager.providedLongField(this, fieldIndex, id);
-                break;
-            case 2:
-                jdoStateManager.providedStringField(this, fieldIndex, name);
-                break;
-            default:
-                throw new IllegalArgumentException(&quot;out of field index :&quot; + fieldIndex);
-         }
-    }
-    
-    protected final void jdoCopyField(A obj, int index)
-    {
-        switch (index)
-        {
-            case 0:
-                b = obj.b;
-                break;
-            case 1:
-                id = obj.id;
-                break;
-            case 2:
-                name = obj.name;
-                break;
-            default:
-                throw new IllegalArgumentException(&quot;out of field index :&quot; + index);
-        }
-    }
-    
-    public void jdoCopyFields(Object obj, int[] fieldNumbers)
-    {
-        if (jdoStateManager == null)
-            throw new IllegalStateException(&quot;state manager is null&quot;);
-        if (fieldNumbers == null)
-            throw new IllegalStateException(&quot;fieldNumbers is null&quot;);
-        if (obj instanceof A != true)
-            throw new IllegalArgumentException(&quot;object is not org.apache.jdo.test.A&quot;);
-        A me = (A) obj;
-        if (jdoStateManager != me.jdoStateManager)
-            throw new IllegalArgumentException(&quot;state manager unmatch&quot;);
-        int i = fieldNumbers.length - 1;
-        if (i &gt;= 0)
-        {
-            do
-                jdoCopyField(me, fieldNumbers[i]);
-            while (--i &gt;= 0);
-        }
-    }
-    
-    private static final String[] __jdoFieldNamesInit()
-    {
-        return new String[] { &quot;b&quot;, &quot;id&quot;, &quot;name&quot; };
-    }
-    
-    private static final Class[] __jdoFieldTypesInit()
-    {
-        return new Class[] { ___jdo$loadClass(&quot;org.apache.jdo.test.B&quot;), Long.TYPE,
-                 ___jdo$loadClass(&quot;java.lang.String&quot;) };
-    }
-    
-    private static final byte[] __jdoFieldFlagsInit()
-    {
-        return new byte[] { 10, 24, 21 };
-    }
-    
-    protected static int __jdoGetInheritedFieldCount()
-    {
-        return 0;
-    }
-    
-    protected static int jdoGetManagedFieldCount()
-    {
-        return 3;
-    }
-    
-    private static Class __jdoPersistenceCapableSuperclassInit()
-    {
-        return null;
-    }
-    
-    public static Class ___jdo$loadClass(String className)
-    {
-        try
-        {
-            return Class.forName(className);
-        }
-        catch (ClassNotFoundException e)
-        {
-            throw new NoClassDefFoundError(e.getMessage());
-        }
-    }
-    
-    private Object jdoSuperClone()
-    throws CloneNotSupportedException
-    {
-        A o = (A) super.clone();
-        o.jdoFlags = (byte) 0;
-        o.jdoStateManager = null;
-        return o;
-    }
-    
-    public A() 
-    {
-        /* empty */
-    }
-    
-    static void jdoSetb(A objPC, B b_m)
-    {
-        if (objPC.jdoStateManager == null)
-            objPC.b = b_m;
-        else
-            objPC.jdoStateManager.setObjectField(objPC, 0, objPC.b, b_m);
-        if (objPC.jdoIsDetached() == true)
-            ((BitSet) objPC.jdoDetachedState[3]).set(0);
-    }
-    
-    static B jdoGetb(A objPC)
-    {
-        if (objPC.jdoStateManager != null
-        &amp;&amp; !objPC.jdoStateManager.isLoaded(objPC, 0))
-            return (B) objPC.jdoStateManager.getObjectField(objPC, 0, objPC.b);
-        if (objPC.jdoIsDetached() != false
-        &amp;&amp; ((BitSet) objPC.jdoDetachedState[2]).get(0) != true
-        &amp;&amp; ((BitSet) objPC.jdoDetachedState[3]).get(0) != true)
-            throw new JDODetachedFieldAccessException
-              (&quot;You have just attempted to access field \&quot;b\&quot; yet this field was not detached when you detached the object. &quot; +
-               &quot;Either dont access this field, or detach the field when detaching the object.&quot;);
-        return objPC.b;
-    }
-    
-    static void jdoSetid(A objPC, long id_n)
-    {
-        objPC.id = id_n;
-    }
-    
-    static long jdoGetid(A objPC)
-    {
-        return objPC.id;
-    }
-    
-    static void jdoSetname(A objPC, String name_c)
-    {
-        if (objPC.jdoFlags != 0 &amp;&amp; objPC.jdoStateManager != null)
-            objPC.jdoStateManager.setStringField(objPC, 2, objPC.name, name_c);
-        else
-        {
-            objPC.name = name_c;
-            if (objPC.jdoIsDetached() == true)
-                ((BitSet) objPC.jdoDetachedState[3]).set(2);
-        }
-    }
-    
-    static String jdoGetname(A objPC)
-    {
-        if (objPC.jdoFlags &gt; 0 &amp;&amp; objPC.jdoStateManager != null &amp;&amp; !objPC.jdoStateManager.isLoaded(objPC, 2))
-            return objPC.jdoStateManager.getStringField(objPC, 2, objPC.name);
-        if (objPC.jdoIsDetached() != false &amp;&amp; ((BitSet) objPC.jdoDetachedState[2]).get(2) != true)
-            throw new JDODetachedFieldAccessException
-              (&quot;You have just attempted to access field \&quot;name\&quot; yet this field was not detached when you detached the object.&quot; +
-               &quot;Either dont access this field, or detach the field when detaching the object.&quot;);
-        return objPC.name;
-    }
-
-    public A(String name)
-    {
-        jdoSetname(this, name);
-    }
-}</pre></div>
-        </div>
-
-    
+        
+    
+        <div class="section"><h2>JDO Enhancement<a name="JDO_Enhancement"></a></h2>
+            <p>
+                JDO defines a byte-code enhancement process that provides for dirty detection of fields.
+                Before a class is used at runtime it is compiled and then &quot;enhanced&quot; to implement the interface
+                <i>PersistenceCapable</i>, and optionally also <i>Detachable</i>.
+            </p>
+            <p>
+                We can demonstrate this by taking a sample class, and seeing it before and after enhancement.
+                We start with the following class
+            </p>
+            <div class="source"><pre>
+package org.apache.jdo.test;
+
+public class A
+{
+    long id;
+    String name;
+    B b;
+
+    public A(String name)
+    {
+        this.name = name;
+    }
+
+    public void setId(long id)
+    {
+        this.id = id;
+    }
+
+    public void setB(B b)
+    {
+        this.b = b;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public B getB()
+    {
+        return b;
+    }
+
+    public long getId()
+    {
+        return id;
+    }
+
+    public String toString()
+    {
+        return &quot;A : id=&quot; + id + &quot; [&quot; + name + &quot;] b=\&quot;&quot; + b + &quot;\&quot;&quot;;
+    }
+}</pre></div>
+            <p>
+                and require it to be <i>PersistenceCapable</i> and <i>Detachable</i>. 
+                The enhancement process needs to intercept all updates of the fields of the class (id, name, b) as well
+                as add on the necessary <i>PersistenceCapable</i>, <i>Detachable</i> methods.
+                After &quot;enhancement&quot; it becomes
+            </p>
+            <div class="source"><pre>
+package org.apache.jdo.test;
+import java.util.BitSet;
+
+import javax.jdo.JDODetachedFieldAccessException;
+import javax.jdo.JDOFatalInternalException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.identity.LongIdentity;
+import javax.jdo.spi.Detachable;
+import javax.jdo.spi.JDOImplHelper;
+import javax.jdo.spi.JDOPermission;
+import javax.jdo.spi.PersistenceCapable;
+import javax.jdo.spi.StateManager;
+
+public class A implements PersistenceCapable, Detachable
+{
+    long id;
+    String name;
+    B b;
+    protected transient StateManager jdoStateManager;
+    protected transient byte jdoFlags;
+    protected Object[] jdoDetachedState;
+    private static final byte[] jdoFieldFlags;
+    private static final Class jdoPersistenceCapableSuperclass;
+    private static final Class[] jdoFieldTypes;
+    private static final String[] jdoFieldNames = __jdoFieldNamesInit();
+    private static final int jdoInheritedFieldCount;
+
+    static
+    {
+        jdoFieldTypes = __jdoFieldTypesInit();
+        jdoFieldFlags = __jdoFieldFlagsInit();
+        jdoInheritedFieldCount = __jdoGetInheritedFieldCount();
+        jdoPersistenceCapableSuperclass = __jdoPersistenceCapableSuperclassInit();
+        JDOImplHelper.registerClass(___jdo$loadClass(&quot;org.apache.jdo.test.A&quot;),
+                    jdoFieldNames, jdoFieldTypes,
+                    jdoFieldFlags,
+                    jdoPersistenceCapableSuperclass, new A());
+    }
+    
+    public void setId(long id)
+    {
+        jdoSetid(this, id);
+    }
+    
+    public void setB(B b)
+    {
+        jdoSetb(this, b);
+    }
+    
+    public String getName()
+    {
+        return jdoGetname(this);
+    }
+    
+    public B getB()
+    {
+        return jdoGetb(this);
+    }
+    
+    public long getId()
+    {
+        return jdoGetid(this);
+    }
+    
+    public String toString()
+    {
+        return new StringBuilder().append(&quot;A : id=&quot;).append(jdoGetid(this))
+           .append(&quot; [&quot;).append(jdoGetname(this))
+           .append(&quot;] b=\&quot;&quot;).append(jdoGetb(this))
+           .append(&quot;\&quot;&quot;).toString();
+    }
+
+    public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
+    {
+        if (fc == null)
+            throw new IllegalArgumentException
+              (&quot;ObjectIdFieldConsumer is null&quot;);
+        if (!(oid instanceof LongIdentity))
+            throw new ClassCastException
+              (&quot;oid is not instanceof javax.jdo.identity.LongIdentity&quot;);
+        LongIdentity o = (LongIdentity) oid;
+        fc.storeLongField(1, o.getKey());
+    }
+    
+    protected void jdoCopyKeyFieldsFromObjectId(Object oid)
+    {
+        if (!(oid instanceof LongIdentity))
+            throw new ClassCastException
+              (&quot;key class is not javax.jdo.identity.LongIdentity or null&quot;);
+        LongIdentity o = (LongIdentity) oid;
+        id = o.getKey();
+    }
+    
+    public final void jdoCopyKeyFieldsToObjectId(Object oid)
+    {
+        throw new JDOFatalInternalException
+          (&quot;It's illegal to call jdoCopyKeyFieldsToObjectId for a class with Single Field Identity.&quot;);
+    }
+    
+    public final void jdoCopyKeyFieldsToObjectId
+    (PersistenceCapable.ObjectIdFieldSupplier fs, Object oid) {
+    throw new JDOFatalInternalException
+          (&quot;It's illegal to call jdoCopyKeyFieldsToObjectId for a class with Single Field Identity.&quot;);
+    }
+    
+    public final Object jdoGetObjectId()
+    {
+        if (jdoStateManager != null)
+            return jdoStateManager.getObjectId(this);
+        if (this.jdoIsDetached() != true)
+            return null;
+        return jdoDetachedState[0];
+    }
+    
+    public final Object jdoGetVersion()
+    {
+        if (jdoStateManager != null)
+            return jdoStateManager.getVersion(this);
+        if (this.jdoIsDetached() != true)
+            return null;
+        return jdoDetachedState[1];
+    }
+    
+    protected final void jdoPreSerialize()
+    {
+        if (jdoStateManager != null)
+            jdoStateManager.preSerialize(this);
+    }
+    
+    public final PersistenceManager jdoGetPersistenceManager()
+    {
+        return (jdoStateManager != null
+            ? jdoStateManager.getPersistenceManager(this) : null);
+    }
+    
+    public final Object jdoGetTransactionalObjectId() 
+    {
+        return (jdoStateManager != null
+           ? jdoStateManager.getTransactionalObjectId(this) : null);
+    }
+    
+    public final boolean jdoIsDeleted()
+    {
+        return (jdoStateManager != null ? jdoStateManager.isDeleted(this): false);
+    }
+    
+    public final boolean jdoIsDirty()
+    {
+        if (jdoStateManager != null)
+            return jdoStateManager.isDirty(this);
+        if (this.jdoIsDetached() != true)
+            return false;
+        if (((BitSet) jdoDetachedState[3]).length() &lt;= 0)
+            return false;
+        return true;
+    }
+    
+    public final boolean jdoIsNew()
+    {
+        return jdoStateManager != null ? jdoStateManager.isNew(this) : false;
+    }
+    
+    public final boolean jdoIsPersistent()
+    {
+        return (jdoStateManager != null ? jdoStateManager.isPersistent(this): false);
+    }
+    
+    public final boolean jdoIsTransactional()
+    {
+        return (jdoStateManager != null ? jdoStateManager.isTransactional(this): false);
+    }
+    
+    public final boolean jdoIsDetached()
+    {
+        if (jdoStateManager == null) {
+            if (jdoDetachedState == null)
+                return false;
+            return true;
+        }
+        return false;
+    }
+    
+    public final void jdoMakeDirty(String fieldName)
+    {
+        if (jdoStateManager != null)
+            jdoStateManager.makeDirty(this, fieldName);
+    }
+    
+    public final Object jdoNewObjectIdInstance() 
+    {
+        return new LongIdentity(getClass(), id);
+    }
+    
+    public final Object jdoNewObjectIdInstance(Object key) 
+    {
+        if (key == null)
+            throw new IllegalArgumentException(&quot;key is null&quot;);
+        if (key instanceof String != true)
+            return new LongIdentity(this.getClass(), (Long) key);
+        return new LongIdentity(this.getClass(), (String) key);
+    }
+    
+    public final void jdoProvideFields(int[] fieldId)
+    {
+        if (fieldId == null)
+            throw new IllegalArgumentException(&quot;argment is null&quot;);
+        int i = fieldId.length - 1;
+        if (i &gt;= 0)
+        {
+            do
+                jdoProvideField(fieldId[i]);
+            while (--i &gt;= 0);
+        }
+    }
+    
+    public final void jdoReplaceFields(int[] fieldId) 
+    {
+        if (fieldId == null)
+            throw new IllegalArgumentException(&quot;argument is null&quot;);
+        int i = fieldId.length;
+        if (i &gt; 0)
+        {
+            int i_0_ = 0;
+            do
+                jdoReplaceField(fieldId[i_0_]);
+            while (++i_0_ &lt; i);
+        }
+    }
+    
+    public final void jdoReplaceFlags()
+    {
+        if (jdoStateManager != null) 
+        {
+            A a = this;
+            a.jdoFlags = a.jdoStateManager.replacingFlags(this);
+        }
+    }
+    
+    public final synchronized void jdoReplaceStateManager(StateManager stateManager)
+    {
+        if (jdoStateManager != null)
+        {
+            A a = this;
+            a.jdoStateManager = a.jdoStateManager.replacingStateManager(this, stateManager);
+        }
+        else
+        {
+            JDOImplHelper.checkAuthorizedStateManager(sm);
+            jdoStateManager = stateManager;
+            jdoFlags = (byte) 1;
+        }
+    }
+    
+    public final synchronized void jdoReplaceDetachedState()
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException(&quot;state manager is null&quot;);
+        A a = this;
+        a.jdoDetachedState = a.jdoStateManager.replacingDetachedState(this, jdoDetachedState);
+    }
+    
+    public PersistenceCapable jdoNewInstance(StateManager sm)
+    {
+        A result = new A();
+        A a = result;
+        a.jdoFlags = (byte) 1;
+        a.jdoStateManager = sm;
+        return a;
+    }
+    
+    public PersistenceCapable jdoNewInstance(StateManager sm, Object o)
+    {
+        A result = new A();
+        A a = result;
+        a.jdoFlags = (byte) 1;
+        a.jdoStateManager = sm;
+        result.jdoCopyKeyFieldsFromObjectId(o);
+        return a;
+    }
+    
+    public void jdoReplaceField(int fieldIndex)
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException(&quot;state manager is null&quot;);
+        switch (fieldIndex)
+        {
+            case 0:
+            {
+                A a = this;
+                a.b = (B) a.jdoStateManager.replacingObjectField(this, fieldIndex);
+                break;
+            }
+            case 1:
+            {
+                A a = this;
+                a.id = a.jdoStateManager.replacingLongField(this, fieldIndex);
+                break;
+            }
+            case 2:
+            {
+                A a = this;
+                a.name = a.jdoStateManager.replacingStringField(this, fieldIndex);
+                break;
+            }
+            default:
+                throw new IllegalArgumentException(&quot;out of field index :&quot; + fieldIndex);
+        }
+    }
+    
+    public void jdoProvideField(int fieldIndex)
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException(&quot;state manager is null&quot;);
+        switch (fieldIndex)
+        {
+            case 0:
+                jdoStateManager.providedObjectField(this, fieldIndex, b);
+                break;
+            case 1:
+                jdoStateManager.providedLongField(this, fieldIndex, id);
+                break;
+            case 2:
+                jdoStateManager.providedStringField(this, fieldIndex, name);
+                break;
+            default:
+                throw new IllegalArgumentException(&quot;out of field index :&quot; + fieldIndex);
+         }
+    }
+    
+    protected final void jdoCopyField(A obj, int index)
+    {
+        switch (index)
+        {
+            case 0:
+                b = obj.b;
+                break;
+            case 1:
+                id = obj.id;
+                break;
+            case 2:
+                name = obj.name;
+                break;
+            default:
+                throw new IllegalArgumentException(&quot;out of field index :&quot; + index);
+        }
+    }
+    
+    public void jdoCopyFields(Object obj, int[] fieldNumbers)
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException(&quot;state manager is null&quot;);
+        if (fieldNumbers == null)
+            throw new IllegalStateException(&quot;fieldNumbers is null&quot;);
+        if (obj instanceof A != true)
+            throw new IllegalArgumentException(&quot;object is not org.apache.jdo.test.A&quot;);
+        A me = (A) obj;
+        if (jdoStateManager != me.jdoStateManager)
+            throw new IllegalArgumentException(&quot;state manager unmatch&quot;);
+        int i = fieldNumbers.length - 1;
+        if (i &gt;= 0)
+        {
+            do
+                jdoCopyField(me, fieldNumbers[i]);
+            while (--i &gt;= 0);
+        }
+    }
+    
+    private static final String[] __jdoFieldNamesInit()
+    {
+        return new String[] { &quot;b&quot;, &quot;id&quot;, &quot;name&quot; };
+    }
+    
+    private static final Class[] __jdoFieldTypesInit()
+    {
+        return new Class[] { ___jdo$loadClass(&quot;org.apache.jdo.test.B&quot;), Long.TYPE,
+                 ___jdo$loadClass(&quot;java.lang.String&quot;) };
+    }
+    
+    private static final byte[] __jdoFieldFlagsInit()
+    {
+        return new byte[] { 10, 24, 21 };
+    }
+    
+    protected static int __jdoGetInheritedFieldCount()
+    {
+        return 0;
+    }
+    
+    protected static int jdoGetManagedFieldCount()
+    {
+        return 3;
+    }
+    
+    private static Class __jdoPersistenceCapableSuperclassInit()
+    {
+        return null;
+    }
+    
+    public static Class ___jdo$loadClass(String className)
+    {
+        try
+        {
+            return Class.forName(className);
+        }
+        catch (ClassNotFoundException e)
+        {
+            throw new NoClassDefFoundError(e.getMessage());
+        }
+    }
+    
+    private Object jdoSuperClone()
+    throws CloneNotSupportedException
+    {
+        A o = (A) super.clone();
+        o.jdoFlags = (byte) 0;
+        o.jdoStateManager = null;
+        return o;
+    }
+    
+    public A() 
+    {
+        /* empty */
+    }
+    
+    static void jdoSetb(A objPC, B b_m)
+    {
+        if (objPC.jdoStateManager == null)
+            objPC.b = b_m;
+        else
+            objPC.jdoStateManager.setObjectField(objPC, 0, objPC.b, b_m);
+        if (objPC.jdoIsDetached() == true)
+            ((BitSet) objPC.jdoDetachedState[3]).set(0);
+    }
+    
+    static B jdoGetb(A objPC)
+    {
+        if (objPC.jdoStateManager != null
+        &amp;&amp; !objPC.jdoStateManager.isLoaded(objPC, 0))
+            return (B) objPC.jdoStateManager.getObjectField(objPC, 0, objPC.b);
+        if (objPC.jdoIsDetached() != false
+        &amp;&amp; ((BitSet) objPC.jdoDetachedState[2]).get(0) != true
+        &amp;&amp; ((BitSet) objPC.jdoDetachedState[3]).get(0) != true)
+            throw new JDODetachedFieldAccessException
+              (&quot;You have just attempted to access field \&quot;b\&quot; yet this field was not detached when you detached the object. &quot; +
+               &quot;Either dont access this field, or detach the field when detaching the object.&quot;);
+        return objPC.b;
+    }
+    
+    static void jdoSetid(A objPC, long id_n)
+    {
+        objPC.id = id_n;
+    }
+    
+    static long jdoGetid(A objPC)
+    {
+        return objPC.id;
+    }
+    
+    static void jdoSetname(A objPC, String name_c)
+    {
+        if (objPC.jdoFlags != 0 &amp;&amp; objPC.jdoStateManager != null)
+            objPC.jdoStateManager.setStringField(objPC, 2, objPC.name, name_c);
+        else
+        {
+            objPC.name = name_c;
+            if (objPC.jdoIsDetached() == true)
+                ((BitSet) objPC.jdoDetachedState[3]).set(2);
+        }
+    }
+    
+    static String jdoGetname(A objPC)
+    {
+        if (objPC.jdoFlags &gt; 0 &amp;&amp; objPC.jdoStateManager != null &amp;&amp; !objPC.jdoStateManager.isLoaded(objPC, 2))
+            return objPC.jdoStateManager.getStringField(objPC, 2, objPC.name);
+        if (objPC.jdoIsDetached() != false &amp;&amp; ((BitSet) objPC.jdoDetachedState[2]).get(2) != true)
+            throw new JDODetachedFieldAccessException
+              (&quot;You have just attempted to access field \&quot;name\&quot; yet this field was not detached when you detached the object.&quot; +
+               &quot;Either dont access this field, or detach the field when detaching the object.&quot;);
+        return objPC.name;
+    }
+
+    public A(String name)
+    {
+        jdoSetname(this, name);
+    }
+}</pre></div>
+        </div>
+
+    
 
       </div>
     </div>



Mime
View raw message