From jdo-waltersashley@example.com Mon Oct 01 21:43:39 2007 Return-Path: <jdo-waltersashley@example.com> Delivered-To: waltersashley@example.com Received: (qmail 72679 invoked from network); 1 Oct 2007 21:43:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Oct 2007 21:43:38 -0000 Received: (qmail 50920 invoked by uid 500); 1 Oct 2007 21:43:28 -0000 Mailing-List: contact waltersashley@example.com; run by ezmlm Precedence: bulk List-Help: <mailto:waltersashley@example.com> List-Unsubscribe: <mailto:waltersashley@example.com> List-Post: <mailto:waltersashley@example.com> List-Id: <jdo-commits.db.apache.org> Reply-To: waltersashley@example.com Delivered-To: mailing list waltersashley@example.com Received: (qmail 50909 invoked by uid 99); 1 Oct 2007 21:43:28 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Oct 2007 14:43:28 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Oct 2007 21:43:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 659311A9832; Mon, 1 Oct 2007 14:42:37 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r581079 - in /db/jdo/site: docs/documentation.html xdocs/documentation.xml Date: Mon, 01 Oct 2007 21:42:36 -0000 To: waltersashley@example.com From: waltersashley@example.com X-Mailer: svnmailer-1.0.8 Message-Id: <waltersashley@example.com> X-Virus-Checked: Checked by ClamAV on apache.org Author: mcaisse Date: Mon Oct 1 14:42:36 2007 New Revision: 581079 URL: http://svn.apache.org/viewvc?rev=581079&view=rev Log: Fix slight problem with Books section. Modified: db/jdo/site/docs/documentation.html db/jdo/site/xdocs/documentation.xml Modified: db/jdo/site/docs/documentation.html URL: http://svn.apache.org/viewvc/db/jdo/site/docs/documentation.html?rev=581079&r1=581078&r2=581079&view=diff ============================================================================== --- db/jdo/site/docs/documentation.html (original) +++ db/jdo/site/docs/documentation.html Mon Oct 1 14:42:36 2007 @@ -189,11 +189,11 @@ </p> <p><b>Books About JDO</b></p> <ul> - <li><a href="http://www.oreilly.com/catalog/jvadtaobj/">Java Data Objects - <u>Java Data Objects</u> by Craig Russell and David Jordan. Publisher: O'Reilly</a> + <li><a href="http://www.oreilly.com/catalog/jvadtaobj/"> + <u>Java Data Objects</u></a> by Craig Russell and David Jordan. Publisher: O'Reilly </li> <li><a href="http://www.phptr.com/bookstore/product.asp?isbn=0131407317&amp;rl=1"> - <u>Core Java Data Objects</u> by Sameer Tyagi, Michael Vorburger, Keiron McCammon, Heiko Bobzin. Publisher: Prentice Hall</a> + <u>Core Java Data Objects</u></a> by Sameer Tyagi, Michael Vorburger, Keiron McCammon, Heiko Bobzin. Publisher: Prentice Hall </li> </ul> Modified: db/jdo/site/xdocs/documentation.xml URL: http://svn.apache.org/viewvc/db/jdo/site/xdocs/documentation.xml?rev=581079&r1=581078&r2=581079&view=diff ============================================================================== --- db/jdo/site/xdocs/documentation.xml (original) +++ db/jdo/site/xdocs/documentation.xml Mon Oct 1 14:42:36 2007 @@ -65,11 +65,11 @@ <p><b>Books About JDO</b></p> <ul> - <li><a href="http://www.oreilly.com/catalog/jvadtaobj/">Java Data Objects - <u>Java Data Objects</u> by Craig Russell and David Jordan. Publisher: O'Reilly</a> + <li><a href="http://www.oreilly.com/catalog/jvadtaobj/"> + <u>Java Data Objects</u></a> by Craig Russell and David Jordan. Publisher: O'Reilly </li> <li><a href="http://www.phptr.com/bookstore/product.asp?isbn=0131407317&amp;rl=1"> - <u>Core Java Data Objects</u> by Sameer Tyagi, Michael Vorburger, Keiron McCammon, Heiko Bobzin. Publisher: Prentice Hall</a> + <u>Core Java Data Objects</u></a> by Sameer Tyagi, Michael Vorburger, Keiron McCammon, Heiko Bobzin. Publisher: Prentice Hall </li> </ul> From jdo-waltersashley@example.com Tue Oct 02 12:52:52 2007 Return-Path: <jdo-waltersashley@example.com> Delivered-To: waltersashley@example.com Received: (qmail 58708 invoked from network); 2 Oct 2007 12:52:52 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 2 Oct 2007 12:52:52 -0000 Received: (qmail 23312 invoked by uid 500); 2 Oct 2007 12:52:41 -0000 Mailing-List: contact waltersashley@example.com; run by ezmlm Precedence: bulk List-Help: <mailto:waltersashley@example.com> List-Unsubscribe: <mailto:waltersashley@example.com> List-Post: <mailto:waltersashley@example.com> List-Id: <jdo-commits.db.apache.org> Reply-To: waltersashley@example.com Delivered-To: mailing list waltersashley@example.com Received: (qmail 23301 invoked by uid 99); 2 Oct 2007 12:52:41 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Oct 2007 05:52:41 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Oct 2007 12:52:49 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A55EB1A9838; Tue, 2 Oct 2007 05:52:29 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r581216 [1/2] - in /db/jdo/site: ./ xdocs/ xdocs/style/ Date: Tue, 02 Oct 2007 12:52:24 -0000 To: waltersashley@example.com From: waltersashley@example.com X-Mailer: svnmailer-1.0.8 Message-Id: <waltersashley@example.com> X-Virus-Checked: Checked by ClamAV on apache.org 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="waltersashley@example.com">JDO Documentation Team</author> - </properties> +<properties> + <title>JDO Implementations</title> + <author email="waltersashley@example.com">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
{'source': 'Apache Software Foundation Public Mail Archives'}