You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by an...@apache.org on 2009/05/03 12:21:24 UTC

svn commit: r771048 [1/2] - in /db/jdo/trunk/api2/src: java/javax/jdo/ java/javax/jdo/annotations/ java/javax/jdo/metadata/ schema/javax/jdo/

Author: andyj
Date: Sun May  3 10:21:24 2009
New Revision: 771048

URL: http://svn.apache.org/viewvc?rev=771048&view=rev
Log:
JDO-619 Patch from JIRA applied. DTD/XSD for JDO2.3, ComponentMetadata update for serializeRead, @PersistenceCapable update for serializeRead, Query/Transaction update for serializeRead

Added:
    db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.dtd
    db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.xsd
    db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.dtd
    db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.xsd
    db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_3.dtd
    db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_3.xsd
    db/jdo/trunk/api2/src/schema/javax/jdo/orm_2_3.dtd
    db/jdo/trunk/api2/src/schema/javax/jdo/orm_2_3.xsd
Modified:
    db/jdo/trunk/api2/src/java/javax/jdo/Query.java
    db/jdo/trunk/api2/src/java/javax/jdo/Transaction.java
    db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java
    db/jdo/trunk/api2/src/java/javax/jdo/metadata/ComponentMetadata.java

Modified: db/jdo/trunk/api2/src/java/javax/jdo/Query.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/Query.java?rev=771048&r1=771047&r2=771048&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/Query.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/Query.java Sun May  3 10:21:24 2009
@@ -732,4 +732,21 @@
      * @since 2.3
      */
     void cancel(Thread thread);
+
+    /**
+     * If <code>true</code>, a lock will be applied to all objects read in this
+     * query.
+     * <P>If <code>false</code> then retrieved objects will not be locked.
+     * If null will fallback to the value for metadata for the class in question.
+     * @param serialize the value of the serializeRead property
+     * @since 2.3
+     */
+    void setSerializeRead(Boolean serialize);
+
+    /**
+     * Return the current value of the serializeRead property.
+     * @return the value of the serializeRead property
+     * @since 2.3
+     */
+    Boolean getSerializeRead();
 }

Modified: db/jdo/trunk/api2/src/java/javax/jdo/Transaction.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/Transaction.java?rev=771048&r1=771047&r2=771048&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/Transaction.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/Transaction.java Sun May  3 10:21:24 2009
@@ -228,5 +228,21 @@
      * <code>Transaction</code> instance
      */
     PersistenceManager getPersistenceManager();
-    
+
+    /**
+     * If <code>true</code>, a lock will be applied to all objects read in this
+     * transaction.
+     * <P>If <code>false</code> then retrieved objects will not be locked.
+     * If null will fallback to the value for metadata for the class in question.
+     * @param serialize the value of the serializeRead property
+     * @since 2.3
+     */
+    void setSerializeRead(Boolean serialize);
+
+    /**
+     * Return the current value of the serializeRead property.
+     * @return the value of the serializeRead property
+     * @since 2.3
+     */
+    Boolean getSerializeRead();
 }

Modified: db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java?rev=771048&r1=771047&r2=771048&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java Sun May  3 10:21:24 2009
@@ -75,6 +75,11 @@
      */
     String cacheable() default "true";
 
+    /** Whether objects of this type should, by default, be locked when read.
+     * @since 2.3
+     */
+    String serializeRead() default "false";
+
     /** Any vendor extensions.
      */
     Extension[] extensions() default {};

Modified: db/jdo/trunk/api2/src/java/javax/jdo/metadata/ComponentMetadata.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/metadata/ComponentMetadata.java?rev=771048&r1=771047&r2=771048&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/metadata/ComponentMetadata.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/metadata/ComponentMetadata.java Sun May  3 10:21:24 2009
@@ -103,6 +103,20 @@
     boolean getCacheable();
 
     /**
+     * Method to set the default value of serializeRead for objects of this type.
+     * 
+     * @param flag serializeRead
+     */
+    ComponentMetadata setSerializeRead(boolean flag);
+
+    /**
+     * Accessor for the value of serializeRead for objects of this type.
+     * 
+     * @return SerializeRead?
+     */
+    boolean getSerializeRead();
+
+    /**
      * Method to set whether it is stored only as embedded in other objects.
      * 
      * @param embedded Whether it is only stored embedded

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.dtd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.dtd?rev=771048&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.dtd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.dtd Sun May  3 10:21:24 2009
@@ -0,0 +1,253 @@
+<!--
+  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.
+-->
+<!-- The DOCTYPE should be as follows for metadata documents.
+<!DOCTYPE jdo
+    PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.3//EN"
+    "http://java.sun.com/dtd/jdo_2_3.dtd">
+-->
+<!ELEMENT jdo (extension*, (package|query|fetch-plan)+, extension*)>
+<!ATTLIST jdo catalog CDATA #IMPLIED>
+<!ATTLIST jdo schema CDATA #IMPLIED>
+
+<!ELEMENT package (extension*, (interface|class|sequence)+, extension*)>
+<!ATTLIST package name CDATA ''>
+<!ATTLIST package catalog CDATA #IMPLIED>
+<!ATTLIST package schema CDATA #IMPLIED>
+
+<!ELEMENT interface (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, property*, query*, fetch-group*, extension*)>
+<!ATTLIST interface name CDATA #REQUIRED>
+<!ATTLIST interface table CDATA #IMPLIED>
+<!ATTLIST interface identity-type (datastore|application|nondurable) #IMPLIED>
+<!ATTLIST interface objectid-class CDATA #IMPLIED>
+<!ATTLIST interface requires-extent (true|false) 'true'>
+<!ATTLIST interface detachable (true|false) 'false'>
+<!ATTLIST interface embedded-only (true|false) #IMPLIED>
+<!ATTLIST interface catalog CDATA #IMPLIED>
+<!ATTLIST interface schema CDATA #IMPLIED>
+<!ATTLIST interface cacheable (true|false) 'true'>
+<!ATTLIST interface serialize-read (true|false) 'false'>
+
+<!ELEMENT property (extension*, (array|collection|map)?, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST property name CDATA #REQUIRED>
+<!ATTLIST property persistence-modifier (persistent|transactional|none) #IMPLIED>
+<!ATTLIST property default-fetch-group (true|false) #IMPLIED>
+<!ATTLIST property load-fetch-group CDATA #IMPLIED>
+<!ATTLIST property null-value (default|exception|none) 'none'>
+<!ATTLIST property dependent (true|false) #IMPLIED>
+<!ATTLIST property embedded (true|false) #IMPLIED>
+<!ATTLIST property primary-key (true|false) 'false'>
+<!ATTLIST property value-strategy CDATA #IMPLIED>
+<!ATTLIST property sequence CDATA #IMPLIED>
+<!ATTLIST property serialized (true|false) #IMPLIED>
+<!ATTLIST property field-type CDATA #IMPLIED>
+<!ATTLIST property table CDATA #IMPLIED>
+<!ATTLIST property column CDATA #IMPLIED>
+<!ATTLIST property delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST property indexed (true|false|unique) #IMPLIED>
+<!ATTLIST property unique (true|false) #IMPLIED>
+<!ATTLIST property mapped-by CDATA #IMPLIED>
+<!ATTLIST property recursion-depth CDATA #IMPLIED>
+<!ATTLIST property field-name CDATA #IMPLIED>
+<!ATTLIST property cacheable (true|false) 'true'>
+
+<!ELEMENT class (extension*, implements*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, column*, field*, property*, query*, fetch-group*, extension*)>
+<!ATTLIST class name CDATA #REQUIRED>
+<!ATTLIST class identity-type (application|datastore|nondurable) #IMPLIED>
+<!ATTLIST class objectid-class CDATA #IMPLIED>
+<!ATTLIST class table CDATA #IMPLIED>
+<!ATTLIST class requires-extent (true|false) 'true'>
+<!ATTLIST class persistence-capable-superclass CDATA #IMPLIED>
+<!ATTLIST class detachable (true|false) 'false'>
+<!ATTLIST class embedded-only (true|false) #IMPLIED>
+<!ATTLIST class persistence-modifier (persistence-capable|persistence-aware|non-persistent) #IMPLIED>
+<!ATTLIST class catalog CDATA #IMPLIED>
+<!ATTLIST class schema CDATA #IMPLIED>
+<!ATTLIST class cacheable (true|false) 'true'>
+<!ATTLIST class serialize-read (true|false) 'false'>
+
+<!ELEMENT primary-key (extension*, column*, extension*)>
+<!ATTLIST primary-key name CDATA #IMPLIED>
+<!ATTLIST primary-key column CDATA #IMPLIED>
+
+<!ELEMENT join (extension*, primary-key?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST join table CDATA #IMPLIED>
+<!ATTLIST join column CDATA #IMPLIED>
+<!ATTLIST join outer (true|false) 'false'>
+<!ATTLIST join delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST join indexed (true|false|unique) #IMPLIED>
+<!ATTLIST join unique (true|false) #IMPLIED>
+
+<!ELEMENT version (extension*, column*, index?, extension*)>
+<!ATTLIST version strategy CDATA #IMPLIED>
+<!ATTLIST version column CDATA #IMPLIED>
+<!ATTLIST version indexed (true|false|unique) #IMPLIED>
+
+<!ELEMENT datastore-identity (extension*, column*, extension*)>
+<!ATTLIST datastore-identity column CDATA #IMPLIED>
+<!ATTLIST datastore-identity strategy CDATA 'native'>
+<!ATTLIST datastore-identity sequence CDATA #IMPLIED>
+
+<!ELEMENT implements (extension*, property*, extension*)>
+<!ATTLIST implements name CDATA #REQUIRED>
+
+<!ELEMENT inheritance (extension*, join?, discriminator?, extension*)>
+<!ATTLIST inheritance strategy CDATA #IMPLIED>
+
+<!ELEMENT discriminator (extension*, column*, index?, extension*)>
+<!ATTLIST discriminator column CDATA #IMPLIED>
+<!ATTLIST discriminator value CDATA #IMPLIED>
+<!ATTLIST discriminator strategy CDATA #IMPLIED>
+<!ATTLIST discriminator indexed (true|false|unique) #IMPLIED>
+
+<!ELEMENT column (extension*)>
+<!ATTLIST column name CDATA #IMPLIED>
+<!ATTLIST column target CDATA #IMPLIED>
+<!ATTLIST column target-field CDATA #IMPLIED>
+<!ATTLIST column jdbc-type CDATA #IMPLIED>
+<!ATTLIST column sql-type CDATA #IMPLIED>
+<!ATTLIST column length CDATA #IMPLIED>
+<!ATTLIST column scale CDATA #IMPLIED>
+<!ATTLIST column allows-null (true|false) #IMPLIED>
+<!ATTLIST column default-value CDATA #IMPLIED>
+<!ATTLIST column insert-value CDATA #IMPLIED>
+
+<!ELEMENT field (extension*, (array|collection|map)?, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST field name CDATA #REQUIRED>
+<!ATTLIST field persistence-modifier (persistent|transactional|none) #IMPLIED>
+<!ATTLIST field field-type CDATA #IMPLIED>
+<!ATTLIST field table CDATA #IMPLIED>
+<!ATTLIST field column CDATA #IMPLIED>
+<!ATTLIST field primary-key (true|false) 'false'>
+<!ATTLIST field null-value (exception|default|none) 'none'>
+<!ATTLIST field default-fetch-group (true|false) #IMPLIED>
+<!ATTLIST field embedded (true|false) #IMPLIED>
+<!ATTLIST field serialized (true|false) #IMPLIED>
+<!ATTLIST field dependent (true|false) #IMPLIED>
+<!ATTLIST field value-strategy CDATA #IMPLIED>
+<!ATTLIST field delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST field indexed (true|false|unique) #IMPLIED>
+<!ATTLIST field unique (true|false) #IMPLIED>
+<!ATTLIST field sequence CDATA #IMPLIED>
+<!ATTLIST field load-fetch-group CDATA #IMPLIED>
+<!ATTLIST field recursion-depth CDATA #IMPLIED>
+<!ATTLIST field mapped-by CDATA #IMPLIED>
+<!ATTLIST field cacheable (true|false) 'true'>
+
+<!ELEMENT foreign-key (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST foreign-key table CDATA #IMPLIED>
+<!ATTLIST foreign-key deferred (true|false) #IMPLIED>
+<!ATTLIST foreign-key delete-action (restrict|cascade|null|default|none) 'restrict'>
+<!ATTLIST foreign-key update-action (restrict|cascade|null|default|none) 'restrict'>
+<!ATTLIST foreign-key unique (true|false) #IMPLIED>
+<!ATTLIST foreign-key name CDATA #IMPLIED>
+
+<!ELEMENT collection (extension*)>
+<!ATTLIST collection element-type CDATA #IMPLIED>
+<!ATTLIST collection embedded-element (true|false) #IMPLIED>
+<!ATTLIST collection dependent-element (true|false) #IMPLIED>
+<!ATTLIST collection serialized-element (true|false) #IMPLIED>
+
+<!ELEMENT map (extension)*>
+<!ATTLIST map key-type CDATA #IMPLIED>
+<!ATTLIST map embedded-key (true|false) #IMPLIED>
+<!ATTLIST map dependent-key (true|false) #IMPLIED>
+<!ATTLIST map serialized-key (true|false) #IMPLIED>
+<!ATTLIST map value-type CDATA #IMPLIED>
+<!ATTLIST map embedded-value (true|false) #IMPLIED>
+<!ATTLIST map dependent-value (true|false) #IMPLIED>
+<!ATTLIST map serialized-value (true|false) #IMPLIED>
+
+<!ELEMENT key (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST key column CDATA #IMPLIED>
+<!ATTLIST key table CDATA #IMPLIED>
+<!ATTLIST key delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST key update-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST key indexed (true|false|unique) #IMPLIED>
+<!ATTLIST key unique (true|false) #IMPLIED>
+<!ATTLIST key mapped-by CDATA #IMPLIED>
+
+<!ELEMENT value (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST value column CDATA #IMPLIED>
+<!ATTLIST value table CDATA #IMPLIED>
+<!ATTLIST value delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST value update-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST value indexed (true|false|unique) #IMPLIED>
+<!ATTLIST value unique (true|false) #IMPLIED>
+<!ATTLIST value mapped-by CDATA #IMPLIED>
+
+<!ELEMENT array (extension*)>
+<!ATTLIST array element-type CDATA #IMPLIED>
+<!ATTLIST array embedded-element (true|false) #IMPLIED>
+<!ATTLIST array dependent-element (true|false) #IMPLIED>
+<!ATTLIST array serialized-element (true|false) #IMPLIED>
+
+<!ELEMENT element (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST element column CDATA #IMPLIED>
+<!ATTLIST element table CDATA #IMPLIED>
+<!ATTLIST element delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST element update-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST element indexed (true|false|unique) #IMPLIED>
+<!ATTLIST element unique (true|false) #IMPLIED>
+<!ATTLIST element mapped-by CDATA #IMPLIED>
+
+<!ELEMENT order (extension*, column*, index?, extension*)>
+<!ATTLIST order column CDATA #IMPLIED>
+<!ATTLIST order mapped-by CDATA #IMPLIED>
+
+<!ELEMENT fetch-group (extension*, (fetch-group|field|property)*, extension*)>
+<!ATTLIST fetch-group name CDATA #REQUIRED>
+<!ATTLIST fetch-group post-load (true|false) #IMPLIED>
+
+<!ELEMENT fetch-plan (fetch-group*)>
+<!ATTLIST fetch-plan name CDATA #REQUIRED>
+<!ATTLIST fetch-plan max-fetch-depth CDATA #IMPLIED>
+<!ATTLIST fetch-plan fetch-size CDATA #IMPLIED>
+
+<!ELEMENT embedded (extension*, (field|property)*, extension*)>
+<!ATTLIST embedded owner-field CDATA #IMPLIED>
+<!ATTLIST embedded null-indicator-column CDATA #IMPLIED>
+<!ATTLIST embedded null-indicator-value CDATA #IMPLIED>
+
+<!ELEMENT sequence (extension*)>
+<!ATTLIST sequence name CDATA #REQUIRED>
+<!ATTLIST sequence datastore-sequence CDATA #IMPLIED>
+<!ATTLIST sequence factory-class CDATA #IMPLIED>
+<!ATTLIST sequence strategy (nontransactional|contiguous|noncontiguous) #REQUIRED>
+
+<!ELEMENT index (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST index name CDATA #IMPLIED>
+<!ATTLIST index table CDATA #IMPLIED>
+<!ATTLIST index unique (true|false) 'false'>
+
+<!ELEMENT query (#PCDATA|extension)*>
+<!ATTLIST query name CDATA #REQUIRED>
+<!ATTLIST query language CDATA #IMPLIED>
+<!ATTLIST query unmodifiable (true|false) 'false'>
+<!ATTLIST query unique (true|false) #IMPLIED>
+<!ATTLIST query result-class CDATA #IMPLIED>
+<!ATTLIST query fetch-plan CDATA #IMPLIED>
+
+<!ELEMENT unique (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST unique name CDATA #IMPLIED>
+<!ATTLIST unique table CDATA #IMPLIED>
+<!ATTLIST unique deferred (true|false) 'false'>
+
+<!ELEMENT extension ANY>
+<!ATTLIST extension vendor-name CDATA #REQUIRED>
+<!ATTLIST extension key CDATA #IMPLIED>
+<!ATTLIST extension value CDATA #IMPLIED>
+

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.xsd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.xsd?rev=771048&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.xsd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_3.xsd Sun May  3 10:21:24 2009
@@ -0,0 +1,1303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema targetNamespace="http://java.sun.com/xml/ns/jdo/jdo"
+           xmlns="http://java.sun.com/xml/ns/jdo/jdo"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           version="2.3">
+    <xs:element name="jdo">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="package"/>
+                <xs:element ref="query"/>
+                <xs:element ref="fetch-plan"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.jdo"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.jdo">
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+    </xs:attributeGroup>
+    <xs:element name="fetch-plan">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="fetch-group"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.fetch-plan"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.fetch-plan">
+        <xs:attribute name="name" default=""/>
+        <xs:attribute name="max-fetch-depth" default="1"/>
+        <xs:attribute name="fetch-size" default="0"/>
+    </xs:attributeGroup>
+    <xs:element name="package">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="interface"/>
+                <xs:element ref="class"/>
+                <xs:element ref="sequence"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.package"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.package">
+        <xs:attribute name="name" default=""/>
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+    </xs:attributeGroup>
+    <xs:element name="interface">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - datastore-identity
+                    - primary-key
+                    - inheritance
+                    - version
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="datastore-identity"/>
+                <xs:element ref="primary-key"/>
+                <xs:element ref="inheritance"/>
+                <xs:element ref="version"/>
+                <xs:element ref="join"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+                <xs:element ref="property"/>
+                <xs:element ref="query"/>
+                <xs:element ref="fetch-group"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.interface"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.interface">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="identity-type">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="datastore"/>
+                    <xs:enumeration value="application"/>
+                    <xs:enumeration value="nondurable"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="objectid-class"/>
+        <xs:attribute name="requires-extent" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="detachable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded-only">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialize-read" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="property">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of array, collection and map,
+                    - join
+                    - embedded
+                    - key
+                    - value
+                    - order
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice minOccurs="0" maxOccurs="1">
+                    <xs:element ref="array"/>
+                    <xs:element ref="collection"/>
+                    <xs:element ref="map"/>
+                </xs:choice>
+                <xs:element ref="join"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="element"/>
+                <xs:element ref="key"/>
+                <xs:element ref="value"/>
+                <xs:element ref="order"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.property"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.property">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="persistence-modifier">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="persistent"/>
+                    <xs:enumeration value="transactional"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="default-fetch-group">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="load-fetch-group"/>
+        <xs:attribute name="null-value" default="none">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="exception"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="primary-key" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="value-strategy"/>
+        <xs:attribute name="sequence"/>
+        <xs:attribute name="serialized">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="field-type"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+        <xs:attribute name="recursion-depth"/>
+        <xs:attribute name="field-name"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="class">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - datastore-identity
+                    - primary-key
+                    - inheritance
+                    - version
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="implements"/>
+                <xs:element ref="datastore-identity"/>
+                <xs:element ref="primary-key"/>
+                <xs:element ref="inheritance"/>
+                <xs:element ref="version"/>
+                <xs:element ref="join"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+                <xs:element ref="column"/>
+                <xs:element ref="field"/>
+                <xs:element ref="property"/>
+                <xs:element ref="query"/>
+                <xs:element ref="fetch-group"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.class"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.class">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="identity-type">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="application"/>
+                    <xs:enumeration value="datastore"/>
+                    <xs:enumeration value="nondurable"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="objectid-class"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="requires-extent" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="persistence-capable-superclass"/>
+        <xs:attribute name="detachable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded-only">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="persistence-modifier">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="persistence-capable"/>
+                    <xs:enumeration value="persistence-aware"/>
+                    <xs:enumeration value="non-persistent"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialize-read" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="primary-key">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.primary-key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.primary-key">
+        <xs:attribute name="name"/>
+        <xs:attribute name="column"/>
+    </xs:attributeGroup>
+    <xs:element name="join">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - primary-key
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="primary-key"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.join"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.join">
+        <xs:attribute name="table"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="outer" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="version">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - index
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+                <xs:element ref="index"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.version"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.version">
+        <xs:attribute name="strategy"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="datastore-identity">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.datastore-identity"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.datastore-identity">
+        <xs:attribute name="column"/>
+        <xs:attribute name="strategy" default="native"/>
+        <xs:attribute name="sequence"/>
+    </xs:attributeGroup>
+    <xs:element name="implements">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="property"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.implements"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.implements">
+        <xs:attribute name="name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="inheritance">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - join
+                    - discriminator
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="join"/>
+                <xs:element ref="discriminator"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.inheritance"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.inheritance">
+        <xs:attribute name="strategy"/>
+    </xs:attributeGroup>
+    <xs:element name="discriminator">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - index
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+                <xs:element ref="index"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.discriminator"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.discriminator">
+        <xs:attribute name="column"/>
+        <xs:attribute name="value"/>
+        <xs:attribute name="strategy"/>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="column">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.column"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.column">
+        <xs:attribute name="name"/>
+        <xs:attribute name="target"/>
+        <xs:attribute name="target-field"/>
+        <xs:attribute name="jdbc-type"/>
+        <xs:attribute name="sql-type"/>
+        <xs:attribute name="length"/>
+        <xs:attribute name="scale"/>
+        <xs:attribute name="allows-null">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="default-value"/>
+        <xs:attribute name="insert-value"/>
+    </xs:attributeGroup>
+    <xs:element name="field">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of array, collection, and map
+                    - join
+                    - embedded
+                    - key
+                    - value
+                    - order
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice minOccurs="0" maxOccurs="1">
+                    <xs:element ref="array"/>
+                    <xs:element ref="collection"/>
+                    <xs:element ref="map"/>
+                </xs:choice>
+                <xs:element ref="join"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="element"/>
+                <xs:element ref="key"/>
+                <xs:element ref="value"/>
+                <xs:element ref="order"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="persistence-modifier">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="persistent"/>
+                    <xs:enumeration value="transactional"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="field-type"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="primary-key" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="null-value" default="none">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="exception"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="default-fetch-group">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="value-strategy"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="sequence"/>
+        <xs:attribute name="load-fetch-group"/>
+        <xs:attribute name="recursion-depth"/>
+        <xs:attribute name="mapped-by"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="foreign-key">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of columns, fields and properties
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice minOccurs="0" maxOccurs="1">
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+                </xs:choice>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.foreign-key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.foreign-key">
+        <xs:attribute name="table"/>
+        <xs:attribute name="deferred">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="delete-action" default="restrict">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action" default="restrict">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="name"/>
+    </xs:attributeGroup>
+    <xs:element name="collection">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.collection"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.collection">
+        <xs:attribute name="element-type"/>
+        <xs:attribute name="embedded-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="map">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.map"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.map">
+        <xs:attribute name="key-type"/>
+        <xs:attribute name="embedded-key">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-key">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-key">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="value-type"/>
+        <xs:attribute name="embedded-value">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-value">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-value">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="key">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - embedded
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.key">
+        <xs:attribute name="column"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="value">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - embedded
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.value">
+        <xs:attribute name="column"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="array">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.array"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.array">
+        <xs:attribute name="element-type"/>
+        <xs:attribute name="embedded-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="element">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - embedded
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.element"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.element">
+        <xs:attribute name="column"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="order">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - index
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+                <xs:element ref="index"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.order"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.order">
+        <xs:attribute name="column"/>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="fetch-group">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="fetch-group"/>
+                <xs:element ref="field"/>
+                <xs:element ref="property"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.fetch-group"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.fetch-group">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="post-load">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="embedded">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="field"/>
+                <xs:element ref="property"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.embedded"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.embedded">
+        <xs:attribute name="owner-field"/>
+        <xs:attribute name="null-indicator-column"/>
+        <xs:attribute name="null-indicator-value"/>
+    </xs:attributeGroup>
+    <xs:element name="sequence">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.sequence"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.sequence">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="datastore-sequence"/>
+        <xs:attribute name="factory-class"/>
+        <xs:attribute name="strategy" use="required">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="nontransactional"/>
+                    <xs:enumeration value="contiguous"/>
+                    <xs:enumeration value="noncontiguous"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="index">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of columns, fields or properties
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+                </xs:choice>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.index"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.index">
+        <xs:attribute name="name"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="unique" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="query">
+        <xs:complexType mixed="true">
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.query"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.query">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="language"/>
+        <xs:attribute name="unmodifiable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="result-class"/>
+        <xs:attribute name="fetch-plan"/>
+    </xs:attributeGroup>
+    <xs:element name="unique">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of columns, fields or properties
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+                </xs:choice>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.unique"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.unique">
+        <xs:attribute name="name"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="deferred" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="extension">
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="any">
+                    <xs:attributeGroup ref="attlist.extension"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.extension">
+        <xs:attribute name="vendor-name" use="required"/>
+        <xs:attribute name="key"/>
+        <xs:attribute name="value"/>
+    </xs:attributeGroup>
+    <xs:complexType name="any" mixed="true">
+        <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.dtd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.dtd?rev=771048&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.dtd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.dtd Sun May  3 10:21:24 2009
@@ -0,0 +1,54 @@
+<!--
+  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.
+-->
+<!--
+<!DOCTYPE jdoconfig
+    PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Configuration 2.3//EN"
+    "http://java.sun.com/dtd/jdoconfig_2_3.dtd">
+-->
+<!ELEMENT jdoconfig (persistence-manager-factory+)>
+
+<!ELEMENT persistence-manager-factory (property*, instance-lifecycle-listener*)>
+<!ATTLIST persistence-manager-factory class CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory name CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory persistence-unit-name CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory optimistic (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory readonly (true|false) CDATA 'false'>
+<!ATTLIST persistence-manager-factory retain-values (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory restore-values (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory ignore-cache (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory nontransactional-read (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory nontransactional-write (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory multithreaded (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory transaction-isolation-level CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory connection-driver-name CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory connection-user-name CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory connection-password CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory connection-url CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory connection-factory-name CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory connection-factory2-name CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory mapping CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory detach-all-on-commit (true|false) CDATA #IMPLIED>
+<!ATTLIST persistence-manager-factory server-time-zone-id CDATA #IMPLIED>
+
+<!ELEMENT property EMPTY>
+<!ATTLIST property name CDATA #REQUIRED>
+<!ATTLIST property value CDATA #IMPLIED>
+
+<!ELEMENT instance-lifecycle-listener EMPTY>
+<!ATTLIST instance-lifecycle-listener listener CDATA #REQUIRED>
+<!ATTLIST instance-lifecycle-listener classes CDATA #IMPLIED>
+

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.xsd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.xsd?rev=771048&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.xsd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdoconfig_2_3.xsd Sun May  3 10:21:24 2009
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+
+<xs:schema
+  targetNamespace="http://java.sun.com/xml/ns/jdo/jdoconfig"
+  xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:jdoconfig="http://java.sun.com/xml/ns/jdo/jdoconfig"
+  elementFormDefault="qualified"
+  attributeFormDefault="unqualified"
+  version="2.3">
+  <xs:annotation>
+    <xs:documentation>
+      This is the XML Schema for the JDO configuration file.
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:element name="jdoconfig">
+    <xs:complexType>
+      <xs:annotation>
+        <xs:documentation>
+          The root configuration element for JDO.
+        </xs:documentation>
+      </xs:annotation>
+      <xs:sequence>
+        <xs:element name="persistence-manager-factory" minOccurs="1"
+              maxOccurs="unbounded">
+          <xs:complexType>
+            <xs:annotation>
+              <xs:documentation>
+                Standard JDO PersistenceManagerFactory configuration properties.
+                Vendor-specific properties are set using additional 
+                vendor-specific attributes and/or property elements.
+              </xs:documentation>
+            </xs:annotation>
+            <xs:sequence minOccurs="0" maxOccurs="1">
+              <xs:element name="property" minOccurs="0"
+                    maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:annotation>
+                    <xs:documentation>
+                      Vendor-specific properties.
+                    </xs:documentation>
+                  </xs:annotation>
+                  <xs:attributeGroup ref="attlist.property"/>
+                </xs:complexType>
+              </xs:element>
+              <xs:element name="instance-lifecycle-listener"
+                    minOccurs="0" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:annotation>
+                    <xs:documentation>
+                      javax.jdo.listener.InstanceLifecycleListener instance 
+                      configuration. There is one instance-lifecycle-listener 
+                      element per listener instance. Only one instance of the 
+                      listener class is supported in this configuration file.
+                      If multiple instances of the same listener class is 
+                      required, then the API
+                      PersistenceManagerFactory.addInstanceLifecycleListener(...)
+                      must be used.
+
+                      If attribute "classes" is missing, all persistence-capable
+                      instances are observed; otherwise it is a comma- or
+                      whitespace-delimited list of persistence-capable
+                      classes whose instances will be observed.
+                    </xs:documentation>
+                  </xs:annotation>
+                  <xs:attributeGroup
+                    ref="attlist.instance-lifecycle-listener"/>
+                </xs:complexType>
+              </xs:element>
+            </xs:sequence>
+            <xs:attributeGroup
+              ref="attlist.persistence-manager-factory"/>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+      <xs:attributeGroup ref="attlist.jdoconfig"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:attributeGroup name="attlist.jdoconfig"/>
+
+  <xs:attributeGroup name="attlist.persistence-manager-factory">
+    <xs:annotation>
+      <xs:documentation>
+        These are attributes corresponding to the standard properties
+        defined in JDO.
+        Any other attributes present, if unrecognized by a JDO
+        implementation, may be silently ignored.
+      </xs:documentation>
+    </xs:annotation>
+
+    <!-- Corresponds to standard JDO property javax.jdo.PersistenceManagerFactoryClass. -->
+    <xs:attribute name="class" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.Name.
+        The absence of this attribute implies the anonymous PMF. -->
+    <xs:attribute name="name" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.PersistenceUnitName. -->
+    <xs:attribute name="persistence-unit-name" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.Optimistic. -->
+    <xs:attribute name="optimistic" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ReadOnly. -->
+    <xs:attribute name="readonly" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.RetainValues. -->
+    <xs:attribute name="retain-values" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.RestoreValues. -->
+    <xs:attribute name="restore-values" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.IgnoreCache. -->
+    <xs:attribute name="ignore-cache" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.NontransactionalRead. -->
+    <xs:attribute name="nontransactional-read" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.NontransactionalWrite. -->
+    <xs:attribute name="nontransactional-write" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.Multithreaded. -->
+    <xs:attribute name="multithreaded" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.TransactionIsolationLevel. -->
+    <xs:attribute name="transaction-isolation-level" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ConnectionDriverName. -->
+    <xs:attribute name="connection-driver-name" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ConnectionUserName. -->
+    <xs:attribute name="connection-user-name" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ConnectionPassword. -->
+    <xs:attribute name="connection-password" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ConnectionURL. -->
+    <xs:attribute name="connection-url" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ConnectionFactoryName. -->
+    <xs:attribute name="connection-factory-name" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ConnectionFactory2Name. -->
+    <xs:attribute name="connection-factory2-name" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.Mapping. -->
+    <xs:attribute name="mapping" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.DetachAllOnCommit. -->
+    <xs:attribute name="detach-all-on-commit" use="optional"/>
+    <!-- Corresponds to standard JDO property javax.jdo.option.ServerTimeZoneID. -->
+    <xs:attribute name="server-time-zone-id" use="optional"/>
+    <!-- Any other vendor-specific attributes are allowed and passed literally 
+        to the underlying implementation. -->
+    <xs:anyAttribute processContents="lax"/>
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="attlist.property">
+    <!-- The name of the vendor-specific property. -->
+    <xs:attribute name="name" use="required"/>
+    <!-- The value of the vendor-specific property. -->
+    <xs:attribute name="value" use="optional"/>
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="attlist.instance-lifecycle-listener">
+    <!-- The name of the listener class to instantiate. -->
+    <xs:attribute name="listener" use="required"/>
+    <!-- Comma- or whitespace-delimited list of persistence-capable classes 
+        whose instances to observe.  The absence of this attribute means 
+        to observe all. -->
+    <xs:attribute name="classes" use="optional"/>
+  </xs:attributeGroup>
+
+</xs:schema>
+

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_3.dtd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_3.dtd?rev=771048&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_3.dtd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_3.dtd Sun May  3 10:21:24 2009
@@ -0,0 +1,43 @@
+<!--
+  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.
+-->
+<!-- The DOCTYPE should be as follows for jdoquery documents.
+<!DOCTYPE jdoquery
+    PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Query Metadata 2.3//EN"
+    "http://java.sun.com/dtd/jdoquery_2_3.dtd">
+-->
+<!ELEMENT jdoquery (extension*, (package|query)+, (extension)*)>
+
+<!ELEMENT package (extension*, (interface|class)+, (extension)*)>
+<!ATTLIST package name CDATA ''>
+
+<!ELEMENT interface (extension*, query+, extension*)>
+<!ATTLIST interface name CDATA #REQUIRED>
+
+<!ELEMENT class (extension*, query+, extension*)>
+<!ATTLIST class name CDATA #REQUIRED>
+
+<!ELEMENT query (#PCDATA|extension)*>
+<!ATTLIST query name CDATA #REQUIRED>
+<!ATTLIST query language CDATA #IMPLIED>
+<!ATTLIST query unmodifiable (true|false) 'false'>
+<!ATTLIST query unique (true|false) #IMPLIED>
+<!ATTLIST query result-class CDATA #IMPLIED>
+
+<!ELEMENT extension ANY>
+<!ATTLIST extension vendor-name CDATA #REQUIRED>
+<!ATTLIST extension key CDATA #IMPLIED>
+<!ATTLIST extension value CDATA #IMPLIED>