Modified: websites/production/db/content/jdo/enhancement.html
==============================================================================
--- websites/production/db/content/jdo/enhancement.html (original)
+++ websites/production/db/content/jdo/enhancement.html Mon Jan 21 04:23:17 2013
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 16, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Maven -
+ <title>JDO -
JDO Enhancement</title>
<style type="text/css" media="all">
@import url("./css/maven-base.css");
@@ -11,7 +11,7 @@
@import url("./css/site.css");
</style>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
- <meta name="Date-Revision-yyyymmdd" content="20130116" />
+ <meta name="Date-Revision-yyyymmdd" content="20130120" />
<meta http-equiv="Content-Language" content="en" />
</head>
@@ -30,7 +30,13 @@
<div id="breadcrumbs">
- <div class="xright"> <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
+ <div class="xright"> <a href="https://www.facebook.com/JavaDataObjects" class="externalLink" title="Facebook">Facebook</a>
+ |
+ <a href="https://twitter.com/JavaDataObjects" class="externalLink" title="Twitter">Twitter</a>
+ |
+ <a href="https://plus.google.com/106584233526334524963" class="externalLink" title="Google+">Google+</a>
+ |
+ <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
|
<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630" class="externalLink" title="Issue Tracker">Issue Tracker</a>
|
@@ -203,558 +209,558 @@
</div>
<div id="bodyColumn">
<div id="contentBox">
-
-
- <div class="section"><h2>JDO Enhancement<a name="JDO_Enhancement"></a></h2>
- <p>
- JDO defines a byte-code enhancement process that provides for dirty detection of fields.
- Before a class is used at runtime it is compiled and then "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>
- <div class="source"><pre>
-package org.apache.jdo.test;
-
-public class A
-{
- long id;
- String name;
- B b;
-
- public A(String name)
- {
- this.name = name;
- }
-
- public void setId(long id)
- {
- this.id = id;
- }
-
- public void setB(B b)
- {
- this.b = b;
- }
-
- public String getName()
- {
- return name;
- }
-
- public B getB()
- {
- return b;
- }
-
- public long getId()
- {
- return id;
- }
-
- public String toString()
- {
- return "A : id=" + id + " [" + name + "] b=\"" + b + "\"";
- }
-}</pre></div>
- <p>
- and require it to be <i>PersistenceCapable</i> and <i>Detachable</i>.
- The enhancement process needs to intercept all updates of the fields of the class (id, name, b) as well
- as add on the necessary <i>PersistenceCapable</i>, <i>Detachable</i> methods.
- After "enhancement" it becomes
- </p>
- <div class="source"><pre>
-package org.apache.jdo.test;
-import java.util.BitSet;
-
-import javax.jdo.JDODetachedFieldAccessException;
-import javax.jdo.JDOFatalInternalException;
-import javax.jdo.PersistenceManager;
-import javax.jdo.identity.LongIdentity;
-import javax.jdo.spi.Detachable;
-import javax.jdo.spi.JDOImplHelper;
-import javax.jdo.spi.JDOPermission;
-import javax.jdo.spi.PersistenceCapable;
-import javax.jdo.spi.StateManager;
-
-public class A implements PersistenceCapable, Detachable
-{
- long id;
- String name;
- B b;
- protected transient StateManager jdoStateManager;
- protected transient byte jdoFlags;
- protected Object[] jdoDetachedState;
- private static final byte[] jdoFieldFlags;
- private static final Class jdoPersistenceCapableSuperclass;
- private static final Class[] jdoFieldTypes;
- private static final String[] jdoFieldNames = __jdoFieldNamesInit();
- private static final int jdoInheritedFieldCount;
-
- static
- {
- jdoFieldTypes = __jdoFieldTypesInit();
- jdoFieldFlags = __jdoFieldFlagsInit();
- jdoInheritedFieldCount = __jdoGetInheritedFieldCount();
- jdoPersistenceCapableSuperclass = __jdoPersistenceCapableSuperclassInit();
- JDOImplHelper.registerClass(___jdo$loadClass("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
- {
- JDOImplHelper.checkAuthorizedStateManager(sm);
- 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);
- }
-}</pre></div>
- </div>
-
-
+
+
+ <div class="section"><h2>JDO Enhancement<a name="JDO_Enhancement"></a></h2>
+ <p>
+ JDO defines a byte-code enhancement process that provides for dirty detection of fields.
+ Before a class is used at runtime it is compiled and then "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>
+ <div class="source"><pre>
+package org.apache.jdo.test;
+
+public class A
+{
+ long id;
+ String name;
+ B b;
+
+ public A(String name)
+ {
+ this.name = name;
+ }
+
+ public void setId(long id)
+ {
+ this.id = id;
+ }
+
+ public void setB(B b)
+ {
+ this.b = b;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public B getB()
+ {
+ return b;
+ }
+
+ public long getId()
+ {
+ return id;
+ }
+
+ public String toString()
+ {
+ return "A : id=" + id + " [" + name + "] b=\"" + b + "\"";
+ }
+}</pre></div>
+ <p>
+ and require it to be <i>PersistenceCapable</i> and <i>Detachable</i>.
+ The enhancement process needs to intercept all updates of the fields of the class (id, name, b) as well
+ as add on the necessary <i>PersistenceCapable</i>, <i>Detachable</i> methods.
+ After "enhancement" it becomes
+ </p>
+ <div class="source"><pre>
+package org.apache.jdo.test;
+import java.util.BitSet;
+
+import javax.jdo.JDODetachedFieldAccessException;
+import javax.jdo.JDOFatalInternalException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.identity.LongIdentity;
+import javax.jdo.spi.Detachable;
+import javax.jdo.spi.JDOImplHelper;
+import javax.jdo.spi.JDOPermission;
+import javax.jdo.spi.PersistenceCapable;
+import javax.jdo.spi.StateManager;
+
+public class A implements PersistenceCapable, Detachable
+{
+ long id;
+ String name;
+ B b;
+ protected transient StateManager jdoStateManager;
+ protected transient byte jdoFlags;
+ protected Object[] jdoDetachedState;
+ private static final byte[] jdoFieldFlags;
+ private static final Class jdoPersistenceCapableSuperclass;
+ private static final Class[] jdoFieldTypes;
+ private static final String[] jdoFieldNames = __jdoFieldNamesInit();
+ private static final int jdoInheritedFieldCount;
+
+ static
+ {
+ jdoFieldTypes = __jdoFieldTypesInit();
+ jdoFieldFlags = __jdoFieldFlagsInit();
+ jdoInheritedFieldCount = __jdoGetInheritedFieldCount();
+ jdoPersistenceCapableSuperclass = __jdoPersistenceCapableSuperclassInit();
+ JDOImplHelper.registerClass(___jdo$loadClass("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
+ {
+ JDOImplHelper.checkAuthorizedStateManager(sm);
+ 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);
+ }
+}</pre></div>
+ </div>
+
+
</div>
</div>
Modified: websites/production/db/content/jdo/exceptions.html
==============================================================================
--- websites/production/db/content/jdo/exceptions.html (original)
+++ websites/production/db/content/jdo/exceptions.html Mon Jan 21 04:23:17 2013
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 16, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Maven -
+ <title>JDO -
JDO Exceptions</title>
<style type="text/css" media="all">
@import url("./css/maven-base.css");
@@ -11,7 +11,7 @@
@import url("./css/site.css");
</style>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
- <meta name="Date-Revision-yyyymmdd" content="20130116" />
+ <meta name="Date-Revision-yyyymmdd" content="20130120" />
<meta http-equiv="Content-Language" content="en" />
</head>
@@ -30,7 +30,13 @@
<div id="breadcrumbs">
- <div class="xright"> <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
+ <div class="xright"> <a href="https://www.facebook.com/JavaDataObjects" class="externalLink" title="Facebook">Facebook</a>
+ |
+ <a href="https://twitter.com/JavaDataObjects" class="externalLink" title="Twitter">Twitter</a>
+ |
+ <a href="https://plus.google.com/106584233526334524963" class="externalLink" title="Google+">Google+</a>
+ |
+ <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
|
<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630" class="externalLink" title="Issue Tracker">Issue Tracker</a>
|
@@ -203,102 +209,102 @@
</div>
<div id="bodyColumn">
<div id="contentBox">
-
-
- <div class="section"><h2>JDO Exceptions<a name="JDO_Exceptions"></a></h2>
- <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>
-
- <div class="section"><h3>JDOException<a name="JDOException"></a></h3>
- <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 />
- </div>
-
- <div class="section"><h3>Can Retry Exceptions<a name="Can_Retry_Exceptions"></a></h3>
- <center>
- <img src="images/jdo_exception_canretry.jpg" border="0" alt="JDO Can Retry Exceptions" />
- </center>
- <table border="0" class="bodyTable">
- <tr class="a">
- <th>Exception</th><th>Description</th>
- </tr>
- <tr class="b">
- <td>JDOCanRetryException</td>
- <td>This is the base class for errors that can be retried.</td>
- </tr>
- <tr class="a">
- <td>JDOUserException</td>
- <td>This is the base class for user errors that can be retried.</td>
- </tr>
- <tr class="b">
- <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 class="a">
- <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 class="b">
- <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 />
- </div>
-
- <div class="section"><h3>Fatal Exceptions<a name="Fatal_Exceptions"></a></h3>
- <center>
- <img src="images/jdo_exception_fatal.jpg" border="0" alt="JDO Fatal Exceptions" />
- </center>
- <table border="0" class="bodyTable">
- <tr class="a">
- <th>Exception</th><th>Description</th>
- </tr>
- <tr class="b">
- <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 class="a">
- <td>JDOFatalUserException</td>
- <td>This is the base class for user errors that cannot be retried.</td>
- </tr>
- <tr class="b">
- <td>JDOFatalInternalException</td>
- <td>This is the base class for JDO implementation failures.</td>
- </tr>
- <tr class="a">
- <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 class="b">
- <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 class="a">
- <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>
- </div>
- </div>
-
+
+
+ <div class="section"><h2>JDO Exceptions<a name="JDO_Exceptions"></a></h2>
+ <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>
+
+ <div class="section"><h3>JDOException<a name="JDOException"></a></h3>
+ <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 />
+ </div>
+
+ <div class="section"><h3>Can Retry Exceptions<a name="Can_Retry_Exceptions"></a></h3>
+ <center>
+ <img src="images/jdo_exception_canretry.jpg" border="0" alt="JDO Can Retry Exceptions" />
+ </center>
+ <table border="0" class="bodyTable">
+ <tr class="a">
+ <th>Exception</th><th>Description</th>
+ </tr>
+ <tr class="b">
+ <td>JDOCanRetryException</td>
+ <td>This is the base class for errors that can be retried.</td>
+ </tr>
+ <tr class="a">
+ <td>JDOUserException</td>
+ <td>This is the base class for user errors that can be retried.</td>
+ </tr>
+ <tr class="b">
+ <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 class="a">
+ <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 class="b">
+ <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 />
+ </div>
+
+ <div class="section"><h3>Fatal Exceptions<a name="Fatal_Exceptions"></a></h3>
+ <center>
+ <img src="images/jdo_exception_fatal.jpg" border="0" alt="JDO Fatal Exceptions" />
+ </center>
+ <table border="0" class="bodyTable">
+ <tr class="a">
+ <th>Exception</th><th>Description</th>
+ </tr>
+ <tr class="b">
+ <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 class="a">
+ <td>JDOFatalUserException</td>
+ <td>This is the base class for user errors that cannot be retried.</td>
+ </tr>
+ <tr class="b">
+ <td>JDOFatalInternalException</td>
+ <td>This is the base class for JDO implementation failures.</td>
+ </tr>
+ <tr class="a">
+ <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 class="b">
+ <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 class="a">
+ <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>
+ </div>
+ </div>
+
</div>
</div>
Modified: websites/production/db/content/jdo/extents.html
==============================================================================
--- websites/production/db/content/jdo/extents.html (original)
+++ websites/production/db/content/jdo/extents.html Mon Jan 21 04:23:17 2013
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 16, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Maven -
+ <title>JDO -
JDO Extents</title>
<style type="text/css" media="all">
@import url("./css/maven-base.css");
@@ -11,7 +11,7 @@
@import url("./css/site.css");
</style>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
- <meta name="Date-Revision-yyyymmdd" content="20130116" />
+ <meta name="Date-Revision-yyyymmdd" content="20130120" />
<meta http-equiv="Content-Language" content="en" />
</head>
@@ -30,7 +30,13 @@
<div id="breadcrumbs">
- <div class="xright"> <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
+ <div class="xright"> <a href="https://www.facebook.com/JavaDataObjects" class="externalLink" title="Facebook">Facebook</a>
+ |
+ <a href="https://twitter.com/JavaDataObjects" class="externalLink" title="Twitter">Twitter</a>
+ |
+ <a href="https://plus.google.com/106584233526334524963" class="externalLink" title="Google+">Google+</a>
+ |
+ <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
|
<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630" class="externalLink" title="Issue Tracker">Issue Tracker</a>
|
@@ -203,27 +209,27 @@
</div>
<div id="bodyColumn">
<div id="contentBox">
-
-
- <div class="section"><h2>JDO Extents<a name="JDO_Extents"></a></h2>
- <p>
- JDO implementations manage the persistence of objects into the datastore. An <b>Extent</b>
- is a collection of objects of a particular type of object that have been persisted. When you define
- the MetaData for a class you can define if the class requires an Extent. The default is true.
- You access the Extent as follows
- </p>
- <div class="source"><pre>
-Extent e = pm.getExtent(MyClass.class, true);
- </pre></div>
- <p>
- This example will return an Extent that contains all persisted instances of the class <i>MyClass</i>
- and its subclasses (the second argument in the call). An Extent is useful where you want to restrict a
- Query to query over just that set of objects. It can also be used where you just want to retrieve
- all persisted objects of a type (as an alternative to using a Query).
- </p>
- </div>
-
-
+
+
+ <div class="section"><h2>JDO Extents<a name="JDO_Extents"></a></h2>
+ <p>
+ JDO implementations manage the persistence of objects into the datastore. An <b>Extent</b>
+ is a collection of objects of a particular type of object that have been persisted. When you define
+ the MetaData for a class you can define if the class requires an Extent. The default is true.
+ You access the Extent as follows
+ </p>
+ <div class="source"><pre>
+Extent e = pm.getExtent(MyClass.class, true);
+ </pre></div>
+ <p>
+ This example will return an Extent that contains all persisted instances of the class <i>MyClass</i>
+ and its subclasses (the second argument in the call). An Extent is useful where you want to restrict a
+ Query to query over just that set of objects. It can also be used where you just want to retrieve
+ all persisted objects of a type (as an alternative to using a Query).
+ </p>
+ </div>
+
+
</div>
</div>
Modified: websites/production/db/content/jdo/faq.html
==============================================================================
--- websites/production/db/content/jdo/faq.html (original)
+++ websites/production/db/content/jdo/faq.html Mon Jan 21 04:23:17 2013
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 16, 2013 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 20, 2013 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Maven -
+ <title>JDO -
FAQ</title>
<style type="text/css" media="all">
@import url("./css/maven-base.css");
@@ -12,7 +12,7 @@
</style>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="JDO Documentation Team" />
- <meta name="Date-Revision-yyyymmdd" content="20130116" />
+ <meta name="Date-Revision-yyyymmdd" content="20130120" />
<meta http-equiv="Content-Language" content="en" />
</head>
@@ -31,7 +31,13 @@
<div id="breadcrumbs">
- <div class="xright"> <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
+ <div class="xright"> <a href="https://www.facebook.com/JavaDataObjects" class="externalLink" title="Facebook">Facebook</a>
+ |
+ <a href="https://twitter.com/JavaDataObjects" class="externalLink" title="Twitter">Twitter</a>
+ |
+ <a href="https://plus.google.com/106584233526334524963" class="externalLink" title="Google+">Google+</a>
+ |
+ <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
|
<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630" class="externalLink" title="Issue Tracker">Issue Tracker</a>
|
@@ -204,69 +210,69 @@
</div>
<div id="bodyColumn">
<div id="contentBox">
- <!-- Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License. -->
-
-
- <div class="section"><h2>General<a name="General"></a></h2>
-
- <p>
- <b>What is JDO?</b>
- <cite>
- JDO is Java Data Objects, a datastore-agnostic interface
- for storing Java objects in transactional datastores.
- </cite>
- </p>
-
- <p>
- <b>I'd like to find out more about the project and possibly contribute. What do I do next?</b>
- <cite>Participation on the project is via the mailing
- list and the source code repository. You join by subscribing
- to the mailing list and participating in discussions. You
- can help by contributing your ideas, enthusiasm, code,
- documentation, and tests. The fundamental tenet of the Apache
- Software Foundation is that great communities build great
- code. The emphasis is on community; the code comes from that.
- If you want to help, just join the mailing list, see what
- needs to be done, and do it. Welcome!
- </cite>
- </p>
-
- <p>
- <b>Where is the mailing list, and how can I subscribe?</b>
- <cite>
- The developers mailing list is jdo-dev@db.apache.org, a
- high-volume list currently receiving from 100 to 300 messages
- a month.
- <br />
- The users mailing list is jdo-user@db.apache.org.
- </cite>
- </p>
-
-<p>
- <b>Does this project use a wiki?</b>
- <cite>
- It does - the
- <a class="externalLink" href="http://wiki.apache.org/jdo">JDO wiki</a>
- complements the work taking place on the mailing list and provides
- additional information on the project.
- </cite>
-</p>
-</div>
-
-
+ <!-- Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. -->
+
+
+ <div class="section"><h2>General<a name="General"></a></h2>
+
+ <p>
+ <b>What is JDO?</b>
+ <cite>
+ JDO is Java Data Objects, a datastore-agnostic interface
+ for storing Java objects in transactional datastores.
+ </cite>
+ </p>
+
+ <p>
+ <b>I'd like to find out more about the project and possibly contribute. What do I do next?</b>
+ <cite>Participation on the project is via the mailing
+ list and the source code repository. You join by subscribing
+ to the mailing list and participating in discussions. You
+ can help by contributing your ideas, enthusiasm, code,
+ documentation, and tests. The fundamental tenet of the Apache
+ Software Foundation is that great communities build great
+ code. The emphasis is on community; the code comes from that.
+ If you want to help, just join the mailing list, see what
+ needs to be done, and do it. Welcome!
+ </cite>
+ </p>
+
+ <p>
+ <b>Where is the mailing list, and how can I subscribe?</b>
+ <cite>
+ The developers mailing list is jdo-dev@db.apache.org, a
+ high-volume list currently receiving from 100 to 300 messages
+ a month.
+ <br />
+ The users mailing list is jdo-user@db.apache.org.
+ </cite>
+ </p>
+
+<p>
+ <b>Does this project use a wiki?</b>
+ <cite>
+ It does - the
+ <a class="externalLink" href="http://wiki.apache.org/jdo">JDO wiki</a>
+ complements the work taking place on the mailing list and provides
+ additional information on the project.
+ </cite>
+</p>
+</div>
+
+
</div>
</div>
|