You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by an...@apache.org on 2007/10/02 14:52:24 UTC

svn commit: r581216 [1/2] - in /db/jdo/site: ./ xdocs/ xdocs/style/

Author: andyj
Date: Tue Oct  2 05:52:23 2007
New Revision: 581216

URL: http://svn.apache.org/viewvc?rev=581216&view=rev
Log:
JDO-537 Upgrade site to use Maven1 "site". Start process of merging in JPOX JDO docs

Added:
    db/jdo/site/maven.xml
    db/jdo/site/project.properties
    db/jdo/site/project.xml
    db/jdo/site/xdocs/enhancement.xml
    db/jdo/site/xdocs/exceptions.xml
    db/jdo/site/xdocs/glossary.xml
    db/jdo/site/xdocs/jdo_dtd.xml
    db/jdo/site/xdocs/jdo_v_jpa.xml
    db/jdo/site/xdocs/jdo_v_jpa_orm.xml
    db/jdo/site/xdocs/jdohelper.xml
    db/jdo/site/xdocs/jdoquery_dtd.xml
    db/jdo/site/xdocs/navigation.xml
    db/jdo/site/xdocs/orm_dtd.xml
    db/jdo/site/xdocs/site.jsl
    db/jdo/site/xdocs/specifications.xml
    db/jdo/site/xdocs/style/
    db/jdo/site/xdocs/style/maven-base.css
    db/jdo/site/xdocs/style/maven-classic.css
    db/jdo/site/xdocs/style/maven-theme.css
    db/jdo/site/xdocs/style/print.css
Modified:
    db/jdo/site/HOWTO
    db/jdo/site/xdocs/impls.xml

Modified: db/jdo/site/HOWTO
URL: http://svn.apache.org/viewvc/db/jdo/site/HOWTO?rev=581216&r1=581215&r2=581216&view=diff
==============================================================================
--- db/jdo/site/HOWTO (original)
+++ db/jdo/site/HOWTO Tue Oct  2 05:52:23 2007
@@ -1,20 +1,40 @@
 HOWTO for JDO Site
 ==================
 
+Maven1 "site" plugin
+--------------------
+
+The documentation is converted for display by the Maven1 "site" plugin.
+Apache JDO use of site revolves around 3 files
+1) xdocs/navigation.xml : this defines what appears where in the side menu
+   When adding a new doc, make sure you add a reference to it here.
+
+2) xdocs/site.jsl : this defines how the side menu, header and body are
+   merged by "maven site". Only change this if you want to alter the
+   overall site layout.
+
+3). xdocs/style/*.css : CSS files defining fonts, colours etc for display
+
+
 How to change the site content and generate ?
 ---------------------------------------------
 
 1) Make your modifications to the source xml file in xdocs/
-2) Run the default ant target to generate new html
+2) Run Maven1 "site"
 
-    $ ant
+    $ maven -o clean site
 
 3) If errors, fix and repeat step 2
 
-4) If all ok - you can verify by looking at the site locally 
-   with your browser, do a svn commit to ensure that all changes
-   both .xml in the xdocs directory and the .html in the docs 
-   directory get committed.
+4) Check the generated site (stored under "target/docs") using
+   your browser.
+
+5) If all ok, copy the generated site into the SVN locations by
+    $ maven -o savesite
+
+6) Commit all changes to SVN (all changes under "xdocs" as well as
+   all generated "docs").
+
 
 How to update the javadoc
 -------------------------
@@ -30,6 +50,7 @@
 
 4) Copy the api11 javadoc results to the site/docs directory: 
    cp -r jdo/trunk/api11/target/docs/apidocs jdo/site/docs/api11
+
 
 How do I deploy site to the internet?
 -------------------------------------

Added: db/jdo/site/maven.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/maven.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/maven.xml (added)
+++ db/jdo/site/maven.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,25 @@
+<project
+    xmlns:maven="jelly:maven"
+    xmlns:ant="jelly:ant"
+    xmlns:j="jelly:core"
+    xmlns:u="jelly:util">
+
+    <postGoal name="xdoc:jelly-transform">
+        <!-- Copy CSS for site to target area -->
+        <copy todir="${basedir}/target/docs/style" overwrite="yes">
+            <fileset dir="${basedir}/xdocs/style/">
+                <include name="**/*.css"/>
+            </fileset>
+        </copy>
+    </postGoal>
+
+    <goal name="savesite">
+        <!-- Make sure "site" is run first" -->
+        <attainGoal name="site"/>
+
+        <!-- Copy all generated docs to the SVN "docs" area -->
+        <copy todir="${basedir}/docs" overwrite="yes">
+            <fileset dir="${basedir}/target/docs/"/>
+        </copy>
+    </goal>
+</project>

Added: db/jdo/site/project.properties
URL: http://svn.apache.org/viewvc/db/jdo/site/project.properties?rev=581216&view=auto
==============================================================================
--- db/jdo/site/project.properties (added)
+++ db/jdo/site/project.properties Tue Oct  2 05:52:23 2007
@@ -0,0 +1,26 @@
+# ------------------------------------------------------------------------------
+# P R O J E C T  P R O P E R T I E S
+# ------------------------------------------------------------------------------
+
+# User Interface
+maven.xdoc.jsl=xdocs/site.jsl
+maven.xdoc.date=bottom
+maven.xdoc.date.format=dd MMMM yyyy
+maven.xdoc.version=${pom.currentVersion}
+maven.license.licenseFile=${basedir}/LICENSE.txt
+
+maven.ui.body.background=white
+maven.ui.body.foreground=black
+maven.ui.banner.background=#0000BB
+maven.ui.navcol.width = 25%
+
+# Provided documentation
+maven.docs.src=${basedir}/xdocs
+
+# Remove unnecessary links
+maven.xdoc.developmentProcessUrl=
+maven.xdoc.poweredby.image=
+maven.xdoc.poweredby.title=
+maven.xdoc.poweredby.url=
+maven.xdoc.includeProjectDocumentation=no
+

Added: db/jdo/site/project.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/project.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/project.xml (added)
+++ db/jdo/site/project.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<project>
+    <pomVersion>3</pomVersion>
+    <name>Java Data Objects (JDO)</name>
+    <groupId>org.apache.jdo</groupId>
+    <organization>
+        <name>Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+        <!--logo>/images/db-logo-white.png</logo-->
+    </organization>
+    <inceptionYear>2005</inceptionYear>
+    <package>org.apache.jdo</package>
+    <shortDescription>Java Data Objects 2.0 (JDO)</shortDescription>
+    <description><![CDATA[
+        The Java Data Objects 2.0 (JDO) API is a standard interface-based Java
+        model abstraction of persistence, developed as Java Specification
+        Request JSR 243 under the auspices of the Java Community Process.
+        ]]></description>
+    <issueTrackingUrl>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630</issueTrackingUrl>
+    <logo>/images/JDOx120.gif</logo>
+    <siteAddress>http://db.apache.org/jdo</siteAddress>
+    <url>http://db.apache.org/jdo</url>
+
+    <mailingLists/>
+    <licenses/>
+    <dependencies/>
+    <build/>
+
+    <!-- Reports that we are interested in -->
+    <reports>
+        <report>maven-javadoc-plugin</report>
+    </reports>
+</project>

Added: db/jdo/site/xdocs/enhancement.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/enhancement.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/enhancement.xml (added)
+++ db/jdo/site/xdocs/enhancement.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,560 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO Enhancement</title>
+    </properties>
+
+    <body>
+        <section name="JDO Enhancement">
+            <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 "enhanced" 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>
+            <source><![CDATA[
+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 "A : id=" + id + " [" + name + "] b=\"" + b + "\"";
+    }
+}]]></source>
+            <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 "enhancement" it becomes
+            </p>
+            <source><![CDATA[
+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("org.apache.jdo.test.A"),
+                    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("A : id=").append(jdoGetid(this))
+           .append(" [").append(jdoGetname(this))
+           .append("] b=\"").append(jdoGetb(this))
+           .append("\"").toString();
+    }
+
+    public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
+    {
+        if (fc == null)
+            throw new IllegalArgumentException
+              ("ObjectIdFieldConsumer is null");
+        if (!(oid instanceof LongIdentity))
+            throw new ClassCastException
+              ("oid is not instanceof javax.jdo.identity.LongIdentity");
+        LongIdentity o = (LongIdentity) oid;
+        fc.storeLongField(1, o.getKey());
+    }
+    
+    protected void jdoCopyKeyFieldsFromObjectId(Object oid)
+    {
+        if (!(oid instanceof LongIdentity))
+            throw new ClassCastException
+              ("key class is not javax.jdo.identity.LongIdentity or null");
+        LongIdentity o = (LongIdentity) oid;
+        id = o.getKey();
+    }
+    
+    public final void jdoCopyKeyFieldsToObjectId(Object oid)
+    {
+        throw new JDOFatalInternalException
+          ("It's illegal to call jdoCopyKeyFieldsToObjectId for a class with Single Field Identity.");
+    }
+    
+    public final void jdoCopyKeyFieldsToObjectId
+    (PersistenceCapable.ObjectIdFieldSupplier fs, Object oid) {
+    throw new JDOFatalInternalException
+          ("It's illegal to call jdoCopyKeyFieldsToObjectId for a class with Single Field Identity.");
+    }
+    
+    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() <= 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("key is null");
+        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("argment is null");
+        int i = fieldId.length - 1;
+        if (i >= 0)
+        {
+            do
+                jdoProvideField(fieldId[i]);
+            while (--i >= 0);
+        }
+    }
+    
+    public final void jdoReplaceFields(int[] fieldId) 
+    {
+        if (fieldId == null)
+            throw new IllegalArgumentException("argument is null");
+        int i = fieldId.length;
+        if (i > 0)
+        {
+            int i_0_ = 0;
+            do
+                jdoReplaceField(fieldId[i_0_]);
+            while (++i_0_ < 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
+        {
+            SecurityManager securityManager = System.getSecurityManager();
+            if (securityManager != null)
+                securityManager.checkPermission(new JDOPermission("setStateManager"));
+            jdoStateManager = stateManager;
+            jdoFlags = (byte) 1;
+        }
+    }
+    
+    public final synchronized void jdoReplaceDetachedState()
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException("state manager is null");
+        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("state manager is null");
+        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("out of field index :" + fieldIndex);
+        }
+    }
+    
+    public void jdoProvideField(int fieldIndex)
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException("state manager is null");
+        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("out of field index :" + 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("out of field index :" + index);
+        }
+    }
+    
+    public void jdoCopyFields(Object obj, int[] fieldNumbers)
+    {
+        if (jdoStateManager == null)
+            throw new IllegalStateException("state manager is null");
+        if (fieldNumbers == null)
+            throw new IllegalStateException("fieldNumbers is null");
+        if (obj instanceof A != true)
+            throw new IllegalArgumentException("object is not org.apache.jdo.test.A");
+        A me = (A) obj;
+        if (jdoStateManager != me.jdoStateManager)
+            throw new IllegalArgumentException("state manager unmatch");
+        int i = fieldNumbers.length - 1;
+        if (i >= 0)
+        {
+            do
+                jdoCopyField(me, fieldNumbers[i]);
+            while (--i >= 0);
+        }
+    }
+    
+    private static final String[] __jdoFieldNamesInit()
+    {
+        return new String[] { "b", "id", "name" };
+    }
+    
+    private static final Class[] __jdoFieldTypesInit()
+    {
+        return new Class[] { ___jdo$loadClass("org.apache.jdo.test.B"), Long.TYPE,
+                 ___jdo$loadClass("java.lang.String") };
+    }
+    
+    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
+        && !objPC.jdoStateManager.isLoaded(objPC, 0))
+            return (B) objPC.jdoStateManager.getObjectField(objPC, 0, objPC.b);
+        if (objPC.jdoIsDetached() != false
+        && ((BitSet) objPC.jdoDetachedState[2]).get(0) != true
+        && ((BitSet) objPC.jdoDetachedState[3]).get(0) != true)
+            throw new JDODetachedFieldAccessException
+              ("You have just attempted to access field \"b\" yet this field was not detached when you detached the object. " +
+               "Either dont access this field, or detach the field when detaching the object.");
+        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 && 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 > 0 && objPC.jdoStateManager != null && !objPC.jdoStateManager.isLoaded(objPC, 2))
+            return objPC.jdoStateManager.getStringField(objPC, 2, objPC.name);
+        if (objPC.jdoIsDetached() != false && ((BitSet) objPC.jdoDetachedState[2]).get(2) != true)
+            throw new JDODetachedFieldAccessException
+              ("You have just attempted to access field \"name\" yet this field was not detached when you detached the object." +
+               "Either dont access this field, or detach the field when detaching the object.");
+        return objPC.name;
+    }
+
+    public A(String name)
+    {
+        jdoSetname(this, name);
+    }
+}]]></source>
+        </section>
+
+    </body>
+</document>

Added: db/jdo/site/xdocs/exceptions.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/exceptions.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/exceptions.xml (added)
+++ db/jdo/site/xdocs/exceptions.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO Exceptions</title>
+    </properties>
+
+    <body>
+        <section name="JDO Exceptions">
+            <p>
+                All exceptions raised by a JDO implementation are runtime exceptions which means that you can choose to catch 
+                the exceptions or not. The reason for JDO using <I>unchecked</I> exceptions is that JDO tries to provide transparent
+                persistence, and so needs to present the same interface and exceptions whatever the state an object has.
+            </p>
+
+            <subsection name="JDOException">
+                <p>
+                    This is the base class for all JDO exceptions. It is a subclass of RuntimeException, and need not be declared or caught.
+                </p>
+                <br/>
+            </subsection>
+
+            <subsection name="Can Retry Exceptions">
+                <center>
+                    <img src="images/jdo_exception_canretry.jpg" border="0" alt="JDO Can Retry Exceptions"/>
+                </center>
+                <table>
+                    <tr>
+                        <th>Exception</th><th>Description</th>
+                    </tr>
+                    <tr>
+                        <td>JDOCanRetryException</td>
+                        <td>This is the base class for errors that can be retried.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOUserException</td>
+                        <td>This is the base class for user errors that can be retried.</td>
+                    </tr>
+                    <tr>
+                        <td>JDODataStoreException</td>
+                        <td>This is the base class for datastore errors that can be retried.
+                            Any root SQLException that caused this will typically be nested within this exception.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOObjectNotFoundException</td>
+                        <td>This exception is to notify the application that an object does not exist in the 
+                            datastore. When this exception is thrown during a transaction, there has been no change 
+                            in the status of the transaction in progress. If this exception is a nested exception 
+                            thrown during commit, then the transaction is rolled back.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOUnsupportedOptionException</td>
+                        <td>This exception is thrown by an implementation to indicate that it does not implement a 
+                            JDO optional feature.</td>
+                    </tr>
+                </table>
+                <br/>
+            </subsection>
+            
+            <subsection name="Fatal Exceptions">
+                <center>
+                    <img src="images/jdo_exception_fatal.jpg" border="0" alt="JDO Fatal Exceptions"/>
+                </center>
+                <table>
+                    <tr>
+                        <th>Exception</th><th>Description</th>
+                    </tr>
+                    <tr>
+                        <td>JDOFatalException</td>
+                        <td>This is the base class for errors that cannot be retried. This exception generally 
+                            means that the transaction associated with the PersistenceManager has been rolled back, 
+                            and the transaction should be abandoned.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOFatalUserException</td>
+                        <td>This is the base class for user errors that cannot be retried.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOFatalInternalException</td>
+                        <td>This is the base class for JDO implementation failures.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOFatalDataStoreException</td>
+                        <td>This is the base class for fatal datastore errors. When this exception is thrown, the 
+                            transaction has been rolled back. Any root SQLException that caused this will typically be nested 
+                            within this exception.</td>
+                    </tr>
+                    <tr>
+                        <td>JDOOptimisticVerificationException</td>
+                        <td>This exception is the result of a user commit operation in an optimistic transaction 
+                            where the verification of new, modified, or deleted instances fails the verification. 
+                            The user will never see this exception except as a result of commit.</td>
+                    </tr>
+                    <tr>
+                        <td>JDODetachedFieldAccessException</td>
+                        <td>This exception is the result of a user accessing a field of a detached instance, where 
+                            the field was not copied to the detached instance.</td>
+                    </tr>
+                </table>            
+            </subsection>
+        </section>
+    </body>
+</document>

Added: db/jdo/site/xdocs/glossary.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/glossary.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/glossary.xml (added)
+++ db/jdo/site/xdocs/glossary.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO Glossary</title>
+    </properties>
+
+    <body>
+        <section name="JDO Glossary">
+            <p>
+                JDO utilizes some terminology used elsewhere (e.g J2EE) but also introduces some terminology that may be new to people.
+                Below is a glossary of some common terms that may be encountered.
+            </p>
+            <table>
+                <tr>
+                    <th>Term</th>
+                    <th>Definition</th>
+                </tr>
+                <a name="application-identity"/>
+                <tr>
+                    <td>application identity</td>
+                    <td>When the persistence of a class is defined in a MetaData file, the developer can decide that they want 
+                        to control the identity of objects of that class. This is called <B>application identity</B> because 
+                        the application has the control.</td>
+                </tr>
+                <a name="attach-detach"/>
+                <tr>
+                    <td>attach/detach</td>
+                    <td>When you have an object of a class that is associated with a PersistenceManager it is referred to as being 
+                        <I>attached</I>. If you want to stop persistence of that object you can <I>detach</I> the object. This has 
+                        the effect that any changes to the object will not be persisted, and also that the object can be used 
+                        outside transactions.</td>
+                </tr>
+                <a name="datastore-identity"/>
+                <tr>
+                    <td>datastore identity</td>
+                    <td>When the persistence of a class is defined in a MetaData file, the developer can decide that they want the 
+                        identity of objects of that class to be defined by the JDO implementation. This is called <B>datastore 
+                        identity</B></td>
+                </tr>
+                <a name="default-fetch-group"/>
+                <tr>
+                    <td>default-fetch-group (DFG)</td>
+                    <td>When a persisted object is retrieved from the datastore its fields can be retrieved with it, or optionally 
+                        can be retrieved only when needed. If a field is in the <B>default-fetch-group</B> it will be retrieved when 
+                        the object is retrieved. Some field types default to being in the <B>default-fetch-group</B> (e.g primitives, 
+                        wrappers to primtives, java.util.Date) and others (e.g java.util.Set, java.util.List) don't.</td>
+                </tr>
+                <a name="embedded"/>
+                <tr>
+                    <td>embedded</td>
+                    <td>A field can be defined as embedded if it will be stored as a column in the table of its containing object.</td>
+                </tr>
+                <a name="enhancer"/>
+                <tr>
+                    <td>enhancer</td>
+                    <td>JDO 1.0.1 requires the use of a byte-code enhancer that takes the Java compiled classes and "enhances" them, 
+                        adding in information to permit their use in a JDO environment.</td>
+                </tr>
+                <a name="fco"/>
+                <tr>
+                    <td>FCO</td>
+                    <td>JDO defines 2 main groups of Java objects. The first is those objects that have an identity. These are
+                        termed "First Class Objects" or FCO for short.</td>
+                </tr>
+                <a name="JDOQL"/>
+                <tr>
+                    <td>JDOQL</td>
+                    <td>JDO introduces its own Java-like query language as a datastore independent way of retrieving objects from 
+                        the datastore. This is known as JDOQL (JDO Query Language).</td>
+                </tr>
+                <a name="objectid-class"/>
+                <tr>
+                    <td>objectid class</td>
+                    <td>When an object of a class is persisted, it is assigned an object identity. When the developer has chosen to 
+                        use <a href="#application-identity">application identity</a> they can assign a class to represent this 
+                        identity (as a primary key) - this is the object id class.</td>
+                </tr>
+                <a name="optimistic transaction"/>
+                <tr>
+                    <td>optimistic transaction</td>
+                    <td>When working with long duration transactions it is undesirable to have locking and so the assumption is made 
+                        that the data being updated by the transaction will not be modified by any other transaction during the course 
+                        of the (optimistic) transaction. The data is checked just before commit to confirm integrity that no data has 
+                        been changed. See also <a href="#pessimistic-transaction">pessimistic transaction</a> for the contrary type 
+                        which provides locking.</td>
+                </tr>
+                <a name="persistence-by-reachability"/>
+                <tr>
+                    <td>persistence-by-reachability</td>
+                    <td>When you call makePersistent() on an object, the object will be persisted and, in addition, any 
+                        other objects reachable from that object (via relationships) will also be persisted. This is 
+                        known as <B>persistence-by-reachability</B>. This process is repeated at commit() time when 
+                        it checks whether these reachable objects are still reachable and, if not, removes them from persistence.</td>
+                </tr>
+                <a name="persistence-capable"/>
+                <tr>
+                    <td>persistence-capable (PC)</td>
+                    <td>When an class is byte-code enhanced, and has valid MetaData, it is referred to as "Persistence Capable". This 
+                        means that it can be persisted by a JDO implementation.</td>
+                </tr>
+                <a name="persistence-modifier"/>
+                <tr>
+                    <td>persistence-modifier</td>
+                    <td>When defining the persistence of a class, the developer can select particular fields to be persisted, and 
+                        others not depending on their importance in the scope of their application. The <B>persistence-modifier</B> 
+                        defines whether a field is persistent. If this tag is not specified JDO will assign defaults based on the 
+                        field type (primitives, primitive wrappers, java.util.Data, persistence capable fields, etc are by default 
+                        persistent).</td>
+                </tr>
+                <a name="persistent"/>
+                <tr>
+                    <td>persistent</td>
+                    <td>This is an object state where the object is persistent in a datastore.</td>
+                </tr>
+                <a name="pessimistic transaction"/>
+                <tr>
+                    <td>pessimistic transaction</td>
+                    <td>This is the default transaction type in JDO, and is suitable for shortlived operations where there is no 
+                        other blocking activity during the transaction. When data is accessed other transactions are locked out 
+                        from accessing it until the transaction is complete. See also <a href="#optimistic-transaction">optimistic 
+                        transaction</a> for the contrary type which reduces locking.</td>
+                </tr>
+                <a name="requires-extent"/>
+                <tr>
+                    <td>Requires Extent</td>
+                    <td>When the persistent of a class is defined, the developer decides if the object will be stored with its own 
+                        identity (in its own table for example) or whether it will be stored as part of another object. If it will 
+                        have its own identity, it will require and Extent.</td>
+                </tr>
+                <a name="sco"/>
+                <tr>
+                    <td>SCO</td>
+                    <td>JDO defines 2 main groups of Java objects. The second group is those objects that don't have an identity. 
+                        These are termed "Second Class Objects" or SCO for short.</td>
+                </tr>
+                <a name="transient"/>
+                <tr>
+                    <td>transient</td>
+                    <td>This is an object state where the object is not persistent.</td>
+                </tr>
+            </table>
+        </section>
+
+    </body>
+</document>

Modified: db/jdo/site/xdocs/impls.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/impls.xml?rev=581216&r1=581215&r2=581216&view=diff
==============================================================================
--- db/jdo/site/xdocs/impls.xml (original)
+++ db/jdo/site/xdocs/impls.xml Tue Oct  2 05:52:23 2007
@@ -19,76 +19,73 @@
 -->
 
 <document>
-
- <properties>
-  <title>JDO Implementations</title>
-  <author email="jdo-dev@db.apache.org">JDO Documentation Team</author>
- </properties>
+<properties>
+    <title>JDO Implementations</title>
+    <author email="jdo-dev@db.apache.org">JDO Documentation Team</author>
+</properties>
 
 <body>
-<section name="JDO Implementations">
-    <p>
-    To build and run your JDO application, you need a JDO implementation.
-    This page lists commercial and non-commercial JDO implementations.
-    For information on how vendors certify compliance with the JDO 2 specification, see <a href="tck.html">TCK</a>.
-</p>
-</section>
-<section name="JDO Reference Implementation">
-<ul>
-    <li>
-        <a href="http://www.jpox.org">JPOX</a>
-    </li>
-</ul>
-</section>
+    <section name="JDO Implementations">
+        <p>
+            To build and run your JDO application, you need a JDO implementation.
+            This page lists commercial and non-commercial JDO implementations.
+            For information on how vendors certify compliance with the JDO 2 specification, see <a href="tck.html">TCK</a>.
+        </p>
+        <subsection name="JDO Reference Implementations">
+        <ul>
+        <li><b>JDO 2.0</b> : <a href="http://www.jpox.org/docs/1_1/">JPOX 1.1</a></li>
+        <li><b>JDO 2.1</b> : <a href="http://www.jpox.org/docs/1_2/">JPOX 1.2</a></li>
+        </ul>
+        <br/>
+        </subsection>
 
-<section name="Commercial Implementations">
-<ul>
-    <li>
-        <a href="http://www.bea.com/kodo">Kodo</a>
-    </li>
-    <li>
-        <a href="http://www.objectdb.com/">ObjectDB for Java/JDO</a>
-   </li>
-    <li>
-        <a href="http://www.objectivity.com/pages/object-database-solutions/java-data-objects.asp">Objectivity</a>
-   </li>
-    <li>
-        <a href="http://lnx.orientechnologies.com/cms/">Orient</a>
-    </li>
-    <li>
-        <a href="http://pejava.tripod.com/index.html">hywy's PE:J</a>
-    </li>
-    <li>
-        <a href="http://www.signsoft.de/signsoft/en/intelliBO/">
+        <subsection name="Commercial Implementations">
+        <ul>
+            <li><a href="http://www.bea.com/kodo">Kodo</a></li>
+            <li><a href="http://www.objectdb.com/">ObjectDB for Java/JDO</a></li>
+            <li>
+            <a href="http://www.objectivity.com/pages/object-database-solutions/java-data-objects.asp">Objectivity</a>
+            </li>
+            <li>
+            <a href="http://lnx.orientechnologies.com/cms/">Orient</a>
+            </li>
+            <li>
+            <a href="http://pejava.tripod.com/index.html">hywy's PE:J</a>
+            </li>
+            <li>
+            <a href="http://www.signsoft.de/signsoft/en/intelliBO/">
             SignSoft intelliBO</a>
-   </li>
-    <li>
-        <a href="http://www.versant.com/en_US/products/objectdatabase/">Versant</a>
-    </li>
-    <li>
-        <a href="http://www.xcalia.com/xdn/specs/jdo">Xcalia</a>
-    </li>
-</ul>
-</section>
-<section name="Non-commercial Implementations">
-<ul>
-    <li>
-        <a href="http://www.jdoinstruments.org/">JDOInstruments</a>
-    </li>
-    <li>
-        <a href="http://www.jpox.org">JPOX</a>
-    </li>
-    <li>
-        <a href="http://db.apache.org/ojb/">Apache ObJectRelationalBridge</a>
-    </li>
-    <li>
-        <a href="http://speedo.objectweb.org/">Speedo</a>
-    </li>
-    <li>
-        <a href="http://tjdo.sourceforge.net/">TJDO</a>
-    </li>
-</ul>
-</section>
+            </li>
+            <li>
+            <a href="http://www.versant.com/en_US/products/objectdatabase/">Versant</a>
+            </li>
+            <li>
+            <a href="http://www.xcalia.com/xdn/specs/jdo">Xcalia</a>
+            </li>
+        </ul>
+        <br/>
+        </subsection>
+
+        <subsection name="Non-commercial Implementations">
+        <ul>
+            <li>
+            <a href="http://www.jdoinstruments.org/">JDOInstruments</a>
+            </li>
+            <li>
+            <a href="http://www.jpox.org">JPOX</a>
+            </li>
+            <li>
+            <a href="http://db.apache.org/ojb/">Apache ObJectRelationalBridge</a>
+            </li>
+            <li>
+            <a href="http://speedo.objectweb.org/">Speedo</a>
+            </li>
+            <li>
+            <a href="http://tjdo.sourceforge.net/">TJDO</a>
+            </li>
+        </ul>
+        </subsection>
+    </section>
 </body>
 </document>
 

Added: db/jdo/site/xdocs/jdo_dtd.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/jdo_dtd.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/jdo_dtd.xml (added)
+++ db/jdo/site/xdocs/jdo_dtd.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO DTD</title>
+    </properties>
+    <body>
+        <section name="Meta-Data - JDO">
+            <p> 
+                JDO2 defines XML MetaData in <B>jdo</B> files as well as <B>orm</B> files. 
+                As always with XML, the metadata must match the defined DTD/XSD for that file type.
+                This section describes the content of the <B>jdo</B> files.
+                The content of <B>orm</B> files can be found <a href="orm_dtd.html">here</a>.
+                All <B>jdo</B> files must contain a valid DTD/DOCTYPE specification. You can use PUBLIC or SYSTEM versions of these.
+            </p>
+            <p>
+                Here are a few examples valid for <B>jdo</B> files with DTD specifications
+            </p>
+            <source><![CDATA[
+<!DOCTYPE jdo PUBLIC
+    "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
+    "http://java.sun.com/dtd/jdo_2_0.dtd">
+
+
+<!DOCTYPE jdo SYSTEM "file:/javax/jdo/jdo.dtd">]]></source>
+            <br/>
+            <p>
+                Here is an example valid for <B>jdo</B> files with XSD specification
+            </p>
+            <source><![CDATA[
+<?xml version="1.0" encoding="UTF-8" ?>
+<jdo xmlns="http://java.sun.com/xml/ns/jdo/jdo"
+     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+     xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/jdo
+        http://java.sun.com/xml/ns/jdo/jdo_2_0.xsd">
+    ...
+</jdo>]]></source>
+            <p>
+                Your MetaData should match either the <a href="http://java.sun.com/dtd/jdo_2_0.dtd" target="_blank">DTD</a>
+                or the <a href="http://java.sun.com/xml/ns/jdo/jdo_2_0.xsd" target="_blank">XSD</a> specification.
+            </p>
+        </section>
+    </body>
+</document>

Added: db/jdo/site/xdocs/jdo_v_jpa.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/jdo_v_jpa.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/jdo_v_jpa.xml (added)
+++ db/jdo/site/xdocs/jdo_v_jpa.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO .v. JPA</title>
+    </properties>
+    <head>
+        <meta name="keywords" content="JPA,EJB3,JDO,ORM"/>
+    </head>
+
+    <body>
+        <section name="Which Persistence Specification ?">
+            <p>
+                There are several competing persistence technologies available for Java. Two of these are "standardised" 
+                (via the JCP). When developing your application you need to choose the most appropriate technology for your 
+                needs. <B>Java Data Objects (JDO)</B> has been a standard since 2001 with the release of JDO1. It was 
+                improved with the release of JDO2. Just to confuse issues the <B>Java Persistence API (JPA)</B> was 
+                recently approved in its JPA1 form, and JDO2.1 will offer an update to JDO2 building on some of
+                the new features of JPA1. Below we show some of the differences of these 3 standards to give you 
+                assistance in selecting what you need. Highlighted in bold are the notable differences where one 
+                specification provides something not available in the other.
+            </p>
+            <table>
+                <tr>
+                    <th width="20%">Feature</th>
+                    <th width="40%">JDO2</th>
+                    <th width="40%">JPA1</th>
+                </tr>
+                <tr>
+                    <td>JDK Requirement</td>
+                    <td><B>1.3+</B></td>
+                    <td>1.5+</td>
+                </tr>
+                <tr>
+                    <td>Usage</td>
+                    <td>J2EE, J2SE</td>
+                    <td>J2EE, J2SE</td>
+                </tr>
+                <tr>
+                    <td>Persistence specification mechanism</td>
+                    <td>MetaData, Annotations <i>[1]</i></td>
+                    <td>MetaData, Annotations</td>
+                </tr>
+                <tr>
+                    <td>Datastore supported</td>
+                    <td><B>Any</B></td>
+                    <td>RDBMS only</td>
+                </tr>
+                <tr>
+                    <td>Restrictions on persisted classes</td>
+                    <td><B>no-arg constructor (could be added by compiler/enhancer)</B></td>
+                    <td>No final classes. No final methods. Non-private no-arg constructor. Identity Field</td>
+                </tr>
+                <tr>
+                    <td>Transactions</td>
+                    <td><B>Pessimistic</B>, Optimistic</td>
+                    <td>Optimistic</td>
+                </tr>
+                <tr>
+                    <td>Object Identity</td>
+                    <td><B>datastore-identity</B>, application-identity</td>
+                    <td>application-identity</td>
+                </tr>
+                <tr>
+                    <td>Object Identity generation</td>
+                    <td>Sequence, Table, Identity, Auto, <B>UUID String, UUID Hex</B></td>
+                    <td>Sequence, Table, Identity, Auto</td>
+                </tr>
+                <tr>
+                    <td>Change objects identity</td>
+                    <td><B>Throw exception when not allowed</B></td>
+                    <td>Undefined, so expect anything !!</td>
+                </tr>
+                <tr>
+                    <td>Supported types</td>
+                    <td>Java primitive types, wrappers of primitive types, java.lang.String, <B>java.lang.Number</B>, java.math.BigInteger, java.math.BigDecimal,
+                        <B>java.util.Currency, java.util.Locale</B>, java.util.Date, java.sql.Time, java.sql.Date, java.sql.Timestamp, java.io.Serializable,
+                        <B>boolean[]</B>, byte[], char[], <B>double[], float[], int[], long[], short[]</B>,
+                        <B>java.lang.Object</B>, <B>interface</B>,
+                        <B>Boolean[]</B>, Byte[], Character[], <B>Double[], Float[], Integer[], Long[], Short[], BigDecimal[], BigInteger[], String[]</B>,
+                        <B>PersistenceCapable[]</B>, <B>interface[]</B>, <B>Object[]</B>, Enums <i>[1]</i>,
+                        java.util.Collection, java.util.Set, java.util.List, java.util.Map,
+                        <B>Collection/List/Map of simple types</B>, <B>Collection/List/Map of reference (interface/Object) types</B>,
+                        Collection/List/Map of persistable types
+                    </td>
+                    <td>Java primitive types, wrappers of the primitive types, java.lang.String, java.math.BigInteger, java.math.BigDecimal, 
+                        java.util.Date, <B>java.util.Calendar</B>, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.Serializable,
+                        byte[], Byte[], char[], Character[], Enums,
+                        java.util.Collection, java.util.Set, java.util.List, java.util.Map
+                        Collection/List/Map of persistable types</td>
+                </tr>
+                <tr>
+                    <td>Embedded Fields</td>
+                    <td>Embedded persistent objects, <B>Embedded Collections, Embedded Maps</B></td>
+                    <td>Embedded persistent objects</td>
+                </tr>
+                <tr>
+                    <td>Access a non-detached field</td>
+                    <td><B>Throw exception</B></td>
+                    <td>Undefined, so expect anything !!</td>
+                </tr>
+                <tr>
+                    <td>Inheritance</td>
+                    <td><B>Each class has its own strategy</B></td>
+                    <td>Root class defines the strategy</td>
+                </tr>
+                <tr>
+                    <td>Query Language</td>
+                    <td>JDOQL, SQL</td>
+                    <td>JPQL, SQL</td>
+                </tr>
+                <tr>
+                    <td>Query candidates</td>
+                    <td><B>Candidate without subclasses</B>, Candidate and its subclasses</td>
+                    <td>Candidate and its subclasses</td>
+                </tr>
+                <tr>
+                    <td>Object retrieval control</td>
+                    <td>Lazy loading, eager fetching, <B>fetch groups</B></td>
+                    <td>Lazy loading, eager fetching</td>
+                </tr>
+                <tr>
+                    <td>Bulk update/delete</td>
+                    <td>JDOQL Bulk Delete</td>
+                    <td>JPQL Bulk Delete, <B>Bulk Update</B></td>
+                </tr>
+                <tr>
+                    <td>RDBMS Schema Control</td>
+                    <td>Tables, columns, PK columns, <b>PK constraints</b>, FK columns, <b>FK constraints</b>, <b>index columns</b>, 
+                        <b>index constraints</b>, unique key columns, <b>unique key constraints</b></td>
+                    <td>Tables, columns, PK columns, FK columns, unique key columns</td>
+                </tr>
+                <tr>
+                    <td>ORM Relationships</td>
+                    <td><a href="jdo_v_jpa_orm.html"><b>Full range of Collection, Map, List, Array, 1-1, 1-N, M-N using 
+                        PC, Non-PC and interface objects</b></a></td>
+                    <td>Basic 1-1, 1-N, M-N only</td>
+                </tr>
+                <tr>
+                    <td>Caching interface</td>
+                    <td><B>L2 Caching API</B></td>
+                    <td>Nothing</td>
+                </tr>
+            </table>
+            <ul>
+                <li><i>[1]</i> - included in JDO 2.1</li>
+            </ul>
+            <p>
+                As an overall conclusion "JPA1" is a subset of what is already available in "JDO2".
+                "JDO2.1" adds on some of the few new features found in "JPA1".
+            </p>
+        </section>
+
+    </body>
+</document>

Added: db/jdo/site/xdocs/jdo_v_jpa_orm.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/jdo_v_jpa_orm.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/jdo_v_jpa_orm.xml (added)
+++ db/jdo/site/xdocs/jdo_v_jpa_orm.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO .v. JPA : Object/Relational Mapping</title>
+    </properties>
+    <head>
+        <meta name="keywords" content="JPA,EJB3,JDO,ORM"/>
+    </head>
+
+    <body>
+        <section name="Which ORM specification ?">
+            <p>
+				There are 2 prevalent specification in the Java ORM world. JDO2 provides the most complete
+                definition, whilst JPA is the most recent. In this guide we show the different types of ORM relation
+                commonly used, and mark against it which specification supports it. This list is not yet complete but
+                will be added to to provide a comprehensive list of relationship type and where you can find it.
+            </p>
+            <table>
+                <tr>
+                    <th>Field Type</th>
+                    <th>Relation</th>
+                    <th width="50">JDO2</th>
+                    <th width="50">JPA1</th>
+                </tr>
+                <tr>
+                    <td>PC</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_one.html#uni">1-1 Unidirectional</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>PC</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_one.html#bi">1-1 Bidirectional</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>PC</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#PC">1-1 serialised</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>PC</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/compound_identity.html#1_1_uni">1-1 CompoundIdentity Unidirectional</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Interface</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/interfaces.html">1-1 Unidirectional</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Interface</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/interfaces.html">1-1 Bidirectional</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Interface</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#Reference">1-1 serialised</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td>?</td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#fk_uni">1-N ForeignKey Unidirectional Collection</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#fk_bi">1-N ForeignKey Bidirectional Collection</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#join_uni">1-N JoinTable Unidirectional Collection</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#join_bi">1-N JoinTable Bidirectional Collection</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;Non-PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#join_nonpc">1-N JoinTable Collection</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#shared_join">1-N JoinTable Collection using shared JoinTable</a></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_collection.html#shared_fk">1-N ForeignKey Collection using shared ForeignKey</a></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/many_to_many.html">M-N JoinTable</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/compound_identity.html#1_N_uni">1-N CompoundIdentity Unidirectional</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#Collection">1-N serialised Collection</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Collection&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#CollectionElements">1-N JoinTable Collection of serialised elements</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_list.html#fk_uni">1-N ForeignKey Unidirectional Indexed List</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_list.html#fk_bi">1-N ForeignKey Bidirectional Indexed List</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_list.html#join_uni">1-N JoinTable Unidirectional Indexed List</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_list.html#join_bi">1-N JoinTable Bidirectional Indexed List</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;Non-PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_list.html#join_nonpc">1-N JoinTable Indexed List</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jpa_orm/one_to_many_list.html#fk_uni">1-N ForeignKey Unidirectional Ordered List</a></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jpa_orm/one_to_many_list.html#fk_bi">1-N ForeignKey Bidirectional Ordered List</a></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jpa_orm/one_to_many_list.html#join_uni">1-N JoinTable Unidirectional Ordered List</a></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>List&lt;PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jpa_orm/one_to_many_list.html#join_bi">1-N JoinTable Bidirectional Ordered List</a></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;PC, PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#join_pc_pc">1-N JoinTable Map</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;Non-PC, PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#join_simple_pc">1-N JoinTable Map</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;PC, Non-PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#join_pc_simple">1-N JoinTable Map</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;Non-PC, Non-PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#join_simple_simple">1-N JoinTable Map</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;Non-PC, PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#fk_uni_key">1-N ForeignKey Map Unidirectional (key stored in value)</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;Non-PC, PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#fk_bi_key">1-N ForeignKey Map Bidirectional (key stored in value)</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;PC, Non-PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/one_to_many_map.html#fk_uni_value">1-N ForeignKey Map Unidirectional (value stored in key)</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;PC, PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#Map">1-N serialised Map</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Map&lt;PC, PC&gt;</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#MapKeysValues">1-N JoinTable Map of serialised keys/values</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>PC[   ]</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/arrays.html#fk">1-N ForeignKey Unidirectional Array</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>PC[   ]</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/arrays.html#join">1-N JoinTable Unidirectional Array</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>PC[   ]</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/serialised.html#Array">1-N serialised Array</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                </tr>
+                <tr>
+                    <td>Non-PC[   ]</td>
+                    <td><a href="http://www.jpox.org/docs/1_2/jdo_orm/arrays.html#join">1-N JoinTable Unidirectional Array</a></td>
+                    <td><img src="images/icon_success_sml.gif" border="0"/></td>
+                    <td><img src="images/icon_error_sml.gif" border="0"/></td>
+                </tr>
+            </table>
+        </section>
+    </body>
+</document>

Added: db/jdo/site/xdocs/jdohelper.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/jdohelper.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/jdohelper.xml (added)
+++ db/jdo/site/xdocs/jdohelper.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDO Helper</title>
+    </properties>
+
+    <body>
+        <section name="JDO Helper">
+            <p>
+                JDO provides a standard utility that gives access to useful parts of the JDO persistence process.
+                This is known as <b>JDOHelper</b> (javax.jdo.JDOHelper)
+                <a href="http://db.apache.org/jdo/api20/apidocs/javax/jdo/JDOHelper.html" target="_blank"><IMG SRC="../images/javadoc.gif"/></a>
+            </p>
+            <p>
+                The methods in JDOHelper can be split into categories. Here we start with the methods for creating
+                the starting point for persistence, the PersistenceManagerFactory (PMF)
+            </p>
+            <ul>
+                <li><b>getPersistenceManagerFactory(Map props)</b> - 
+                    creates a PMF given a Map of the properties</li>
+                <li><b>getPersistenceManagerFactory(Map props, ClassLoader cl)</b> - 
+                    creates a PMF given a Map of the properties, and a ClassLoader to use</li>
+                <li><b>getPersistenceManagerFactory(String resource)</b> - 
+                    creates a PMF given a resource defining the properties.
+                    This can be used to create a named PMF in JDO2.1</li>
+                <li><b>getPersistenceManagerFactory(String props, ClassLoader cl)</b> - 
+                    creates a PMF given a resource defining the properties, and a ClassLoader to use</li>
+                <li><b>getPersistenceManagerFactory(File props)</b> - 
+                    creates a PMF given a file containing the properties</li>
+                <li><b>getPersistenceManagerFactory(File props, ClassLoader cl)</b> - 
+                    creates a PMF given a file containing the properties and a ClassLoader to use</li>
+                <li><b>getPersistenceManagerFactory(String jndi, Context ctx)</b> - 
+                    creates a PMF given a JNDI resource</li>
+                <li><b>getPersistenceManagerFactory(String jndi, Context ctx, ClassLoader cl)</b> - 
+                    creates a PMF given a JNDI resource and a ClassLoader to use</li>
+                <li><b>getPersistenceManagerFactory(InputStream strm)</b> - 
+                    creates a PMF given an InputStream</li>
+                <li><b>getPersistenceManagerFactory(InputStream strm, ClassLoader cl)</b> - 
+                    creates a PMF given an InputStream and a ClassLoader to use</li>
+            </ul>
+            <p>
+                Now we move onto the operations for persistence.
+            </p>
+            <ul>
+                <li><b>getPersistenceManager(Object pc)</b> - 
+                    returns the PersistenceManager associated with the passed object (if any)</li>
+                <li><b>makeDirty(Object pc, String fieldName)</b> - 
+                    marks the field of the passed object as dirty (meaning that it needs updating in ther datastore)</li>
+                <li><b>getObjectId(Object pc)</b> - 
+                    returns the object identity for the passed object (if persistent)</li>
+                <li><b>getObjectIds(Collection pc)</b> - 
+                    returns the object identities for the passed objects (if persistent)</li>
+                <li><b>getObjectIds(Object[] pc)</b> - 
+                    returns the object identities for the passed objects (if persistent)</li>
+                <li><b>getVersion(Object pc)</b> - 
+                    returns the version for the passed object (if persistent)</li>
+            </ul>
+            <p>
+                Now we move onto lifecycle operations
+            </p>
+            <ul>
+                <li><b>isDirty(Object pc)</b> - 
+                    returns whether the passed object is dirty</li>
+                <li><b>isTransactional(Object pc)</b> - 
+                    returns whether the passed object is transactional</li>
+                <li><b>isPersistent(Object pc)</b> - 
+                    returns whether the passed object is persistent</li>
+                <li><b>isNew(Object pc)</b> -
+                    returns whether the passed object is new</li>
+                <li><b>isDeleted(Object pc)</b> - 
+                    returns whether the passed object is deleted</li>
+                <li><b>isDetached(Object pc)</b> - 
+                    returns whether the passed object is detached</li>
+            </ul>
+        </section>
+
+    </body>
+</document>

Added: db/jdo/site/xdocs/jdoquery_dtd.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/jdoquery_dtd.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/jdoquery_dtd.xml (added)
+++ db/jdo/site/xdocs/jdoquery_dtd.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>JDOQuery DTD</title>
+        <jpoxpagetype>JDO</jpoxpagetype>
+        <jpoxversion>JDO</jpoxversion>
+    </properties>
+    <body>
+        <section name="Meta-Data - JDOQuery">
+            <p> 
+                JDO2 defines XML MetaData in <B>jdo</B> files as well as <B>orm</B> files, but also specifies that named queries can be defined in <I>jdoquery</I> files. 
+                As always with XML, the metadata must match the defined DTD/XSD for that file type.
+                This section describes the content of the <B>jdoquery</B> files.
+                All <B>jdoquery</B> files must contain a valid DTD/DOCTYPE specification. 
+                You can use PUBLIC or SYSTEM versions of these.
+            </p>
+            <p>
+                Here are a few examples valid for <B>jdoquery</B> files eith DTD specification
+            </p>
+            <source><![CDATA[
+<!DOCTYPE jdoquery PUBLIC
+    "-//Sun Microsystems, Inc.//DTD Java Data Objects Query Metadata 2.0//EN"
+    "http://java.sun.com/dtd/jdoquery_2_0.dtd">
+
+
+<!DOCTYPE jdoquery SYSTEM "file:/javax/jdo/jdoquery.dtd">]]></source>
+            <br/>
+            <p>
+                Here is an example valid for <B>jdoquery</B> files with XSD specification
+            </p>
+            <source><![CDATA[
+<?xml version="1.0" encoding="UTF-8" ?>
+<jdo xmlns="http://java.sun.com/xml/ns/jdo/jdo"
+     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+     xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/jdoquery
+        http://java.sun.com/xml/ns/jdo/jdoquery_2_0.xsd">
+    ...
+</jdo>]]></source>
+            <p>
+                Your MetaData should match either the <a href="http://java.sun.com/dtd/jdoquery_2_0.dtd" target="_blank">DTD</a>
+                or the <a href="http://java.sun.com/xml/ns/jdo/jdoquery_2_0.xsd" target="_blank">XSD</a> specification.
+            </p>
+        </section>
+    </body>
+</document>

Added: db/jdo/site/xdocs/navigation.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/navigation.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/navigation.xml (added)
+++ db/jdo/site/xdocs/navigation.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="jdo">
+    <title>Java Data Objects (JDO)</title>
+
+    <body>
+        <menu name="General">
+            <item name="Home" href="/index.html"/>
+            <item name="Downloads" href="/downloads.html"/>
+            <item name="License" href="http://www.apache.org/licenses/LICENSE-2.0"/>
+        </menu>
+
+        <menu name="Documentation">
+            <item name="Specifications" href="/specifications.html"/>
+            <item name="Why JDO?" href="/why_jdo.html"/>
+            <item name="JDO v JPA" href="/jdo_v_jpa.html"/>
+            <item name="JDO v JPA : ORM" href="/jdo_v_jpa_orm.html"/>
+            <item name="Bytecode Enhancement" href="/enhancement.html"/>
+            <item name="Glossary" href="/glossary.html"/>
+            <item name="JDOHelper" href="/jdohelper.html"/>
+            <item name="Exceptions" href="/exceptions.html"/>
+            <item name="API Javadoc" href="/javadoc.html"/>
+            <item name="TCK" href="/tck.html"/>
+            <item name="jdo DTD/XSD" href="/jdo_dtd.html"/>
+            <item name="orm DTD/XSD" href="/orm_dtd.html"/>
+            <item name="jdoquery DTD/XSD" href="/jdoquery_dtd.html"/>
+        </menu>
+
+        <menu name="Tutorials">
+            <item name="Datastore Replication" href="/tutorials/replication.html"/>
+        </menu>
+
+        <menu name="Community">
+            <item name="Get Involved" href="/get-involved.html"/>
+            <item name="Project Team" href="/team-list.html"/>
+            <item name="Mailing Lists" href="/mail-lists.html"/>
+            <item name="Documentation" href="/documentation.html"/>
+            <item name="FAQ" href="/faq.html"/>
+            <item name="Wiki" href="http://wiki.apache.org/jdo"/>
+            <item name="Implementations" href="/impls.html"/>
+        </menu>
+
+        <menu name="Development">
+            <item name="RoadMap / TODO" href="/roadmap.html"/>
+            <item name="Source Code" href="/svn.html"/>
+            <item name="Coding Standards" href="http://cwiki.apache.org/GMOxDEV/coding-standards.html"/>
+            <item name="Issue Tracking" href="/issuetracking.html"/>
+            <item name="Dependencies" href="/dependencies.html"/>
+        </menu>
+
+    </body>
+</project>

Added: db/jdo/site/xdocs/orm_dtd.xml
URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/orm_dtd.xml?rev=581216&view=auto
==============================================================================
--- db/jdo/site/xdocs/orm_dtd.xml (added)
+++ db/jdo/site/xdocs/orm_dtd.xml Tue Oct  2 05:52:23 2007
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<document>
+    <properties>
+        <title>ORM DTD</title>
+    </properties>
+    <body>
+        <section name="Meta-Data - ORM">
+            <p>
+                JDO2 defines XML MetaData in <B>jdo</B> files as well as <B>orm</B> files.
+                As always with XML, the metadata must match the defined DTD/XSD for that file type.
+                This section describes the content of the <B>orm</B> files.
+                The content of <B>jdo</B> files can be found <a href="jdo_dtd.html">here</a>.
+                All <B>orm</B> files must contain a valid DTD/DOCTYPE specification. You can use PUBLIC or SYSTEM versions of these.
+            </p>
+            <p>
+                Here are a couple of examples valid for <B>orm</B> files with DTD specification
+            </p>
+            <source><![CDATA[
+<!DOCTYPE orm PUBLIC
+    "-//Sun Microsystems, Inc.//DTD Java Data Objects Mapping Metadata 2.0//EN"
+    "http://java.sun.com/dtd/orm_2_0.dtd">
+
+
+<!DOCTYPE orm SYSTEM "file:/javax/jdo/orm.dtd">]]></source>
+            <br/>
+            <p>
+                Here is an example valid for <B>orm</B> files with XSD specification
+            </p>
+            <source><![CDATA[
+<?xml version="1.0" encoding="UTF-8" ?>
+<orm xmlns="http://java.sun.com/xml/ns/jdo/orm"
+     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+     xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/orm
+        http://java.sun.com/xml/ns/jdo/orm_2_0.xsd">
+    ...
+</orm>]]></source>
+            <p>
+                Your MetaData should match either the <a href="http://java.sun.com/dtd/orm_2_0.dtd" target="_blank">DTD</a>
+                or the <a href="http://java.sun.com/xml/ns/jdo/orm_2_0.xsd" target="_blank">XSD</a> specification.
+            </p>
+
+        </section>
+    </body>
+</document>