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<PC></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<PC></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<PC></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<PC></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<Non-PC></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<PC></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<PC></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<PC></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<PC></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<PC></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<PC></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<PC></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<PC></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<PC></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<PC></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<Non-PC></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<PC></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<PC></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<PC></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<PC></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<PC, PC></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<Non-PC, PC></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<PC, Non-PC></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<Non-PC, Non-PC></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<Non-PC, PC></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<Non-PC, PC></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<PC, Non-PC></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<PC, PC></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<PC, PC></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>