Author: amaniatis
Date: Tue May 12 01:13:04 2009
New Revision: 773752

URL: http://svn.apache.org/viewvc?rev=773752&view=rev
Log:
CAY-1167
Updates to the Cayenne Map schema. This now includes all the parts from the old 
DTD file which looked relevant. I believe this is now complete.

Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd?rev=773752&r1=773751&r2=773752&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/org/apache/cayenne/schema/3.0/modelMap.xsd
 Tue May 12 01:13:04 2009
@@ -18,274 +18,325 @@
   under the License.
 -->
 
-<!-- Cayenne entity map schema --> 
-<xs:schema targetNamespace="http://cayenne.apache.org/schema/3.0/modelMap"; 
xmlns:cay="http://cayenne.apache.org/schema/3.0/modelMap"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" 
version="2">
-  <xs:element name="data-map">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:property"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:embeddable"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:procedure"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:db-entity"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:obj-entity"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:db-relationship"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:obj-relationship"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:query"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:entity-listener"/>
-      </xs:sequence>
-      <xs:attribute name="project-version" use="required" type="xs:decimal"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="db-entity">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" ref="cay:db-attribute"/>
-      </xs:sequence>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="schema" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="db-attribute">
-    <xs:complexType>
-      <xs:attribute name="isMandatory" type="xs:boolean"/>
-      <xs:attribute name="isPrimaryKey" type="xs:boolean">
-        <xs:annotation>
-          <xs:documentation>If true, the value of attribute is unique and used 
as a primary key identifier.</xs:documentation>
-        </xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="isGenerated" use="optional" type="xs:boolean"/>
-      <xs:attribute name="length" type="xs:integer"/>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="scale" type="xs:integer"/>
-      <xs:attribute name="type" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="obj-entity">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" ref="cay:qualifier"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:embedded-attribute"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:obj-attribute"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:attribute-override"/>
-        <xs:sequence minOccurs="0">
-          <xs:element ref="cay:entity-listener"/>
-          <xs:element ref="cay:pre-persist"/>
-          <xs:element ref="cay:post-persist"/>
-          <xs:element ref="cay:pre-update"/>
-          <xs:element ref="cay:post-update"/>
-          <xs:element ref="cay:pre-remove"/>
-          <xs:element ref="cay:post-remove"/>
-          <xs:element ref="cay:post-load"/>
-        </xs:sequence>
-      </xs:sequence>
-      <xs:attribute name="className" use="optional" type="xs:string"/>
-      <xs:attribute name="abstract" use="optional" type="xs:string"/>
-      <xs:attribute name="readOnly" use="optional" type="xs:boolean"/>
-      <xs:attribute name="clientClassName" use="optional" type="xs:string"/>
-      <xs:attribute name="clientSuperClassName" use="optional" 
type="xs:string"/>
-      <xs:attribute name="dbEntityName" use="optional" type="xs:string"/>
-      <xs:attribute name="lock-type" type="xs:string"/>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="superClassName" use="optional" type="xs:string"/>
-      <xs:attribute name="superEntityName" use="optional" type="xs:string"/>
-      <xs:attribute name="exclude-superclass-listeners" use="optional" 
type="xs:boolean"/>
-      <xs:attribute name="exclude-default-listeners" use="optional" 
type="xs:boolean"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="qualifier" type="xs:string"/>
-  
-  <xs:element name="obj-attribute">
-    <xs:complexType>
-      <xs:attribute name="db-attribute-path" use="optional" type="xs:string"/>
-      <xs:attribute name="lock" use="optional" type="xs:boolean"/>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="type" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="attribute-override">
-    <xs:complexType>
-      <xs:attribute name="db-attribute-path" use="optional" type="xs:string"/>
-      <xs:attribute name="lock" use="optional" type="xs:boolean"/>
-      <xs:attribute name="name" use="optional" type="xs:string"/>
-      <xs:attribute name="type" use="optional" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="db-relationship">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="1" maxOccurs="unbounded" 
ref="cay:db-attribute-pair"/>
-      </xs:sequence>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="source" use="required" type="xs:string"/>
-      <xs:attribute name="target" use="required" type="xs:string"/>
-      <xs:attribute name="toDependentPK" type="xs:boolean"/>
-      <xs:attribute name="toMany" use="required" type="xs:boolean"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="db-attribute-pair">
-    <xs:complexType>
-      <xs:attribute name="source" use="required" type="xs:string"/>
-      <xs:attribute name="target" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="obj-relationship">
-    <xs:complexType>
-      <xs:attribute name="db-relationship-path" use="required" 
type="xs:string"/>
-      <xs:attribute name="deleteRule" type="xs:string"/>
-      <xs:attribute name="lock" type="xs:boolean"/>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="source" use="required" type="xs:string"/>
-      <xs:attribute name="target" use="required" type="xs:string"/>
-      <xs:attribute name="collection-type" use="optional" type="xs:string"/>
-      <xs:attribute name="map-key" use="optional" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="query">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:property"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:sql"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:ejbql"/>
-        <xs:element name="qualifier" minOccurs="0" maxOccurs="unbounded" 
type="xs:string"/>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:ordering"/>
-        <xs:element name="prefetch" minOccurs="0" maxOccurs="unbounded" 
type="xs:string"/>
-      </xs:sequence>
-      <xs:attribute name="factory" use="required"/>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="root" use="optional" type="xs:string"/>
-      <xs:attribute name="root-name" use="optional" type="xs:string"/>
-      <xs:attribute name="result-entity" use="optional" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="ordering">
-    <xs:complexType>
-      <xs:simpleContent>
-        <xs:extension base="xs:string">
-          <xs:attribute name="descending" type="xs:boolean"/>
-          <xs:attribute name="ignore-case" type="xs:boolean"/>
-        </xs:extension>
-      </xs:simpleContent>
-    </xs:complexType>    
-  </xs:element>
-  
-  <xs:element name="sql">
-    <xs:complexType>
-      <xs:simpleContent>
-        <xs:extension base="xs:string">
-          <xs:attribute name="adapter-class" type="xs:string"/>
-        </xs:extension>
-      </xs:simpleContent>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="ejbql" type="xs:string"/>
-  
-  <xs:element name="property">
-    <xs:complexType>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-      <xs:attribute name="value" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="embeddable">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="embeddable-attribute" minOccurs="0" 
maxOccurs="unbounded">
-          <xs:complexType>
-            <xs:attribute name="name" use="required" type="xs:string"/>
-            <xs:attribute name="type" use="required" type="xs:string"/>
-            <xs:attribute name="db-attribute-name" use="required" 
type="xs:string"/>
-          </xs:complexType>
-        </xs:element>
-      </xs:sequence>
-      <xs:attribute name="className" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="embedded-attribute">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:embeddable-attribute-override"/>
-      </xs:sequence>
-      <xs:attribute name="type" use="required" type="xs:string"/>
-      <xs:attribute name="name" use="required" type="xs:string"/>  
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="embeddable-attribute-override">
-    <xs:complexType>
-        <xs:attribute name="db-attribute-path" use="required" 
type="xs:string"/>
-        <xs:attribute name="name" use="required" type="xs:string"/>  
-    </xs:complexType>
-  </xs:element>
-  
-  <xs:element name="procedure">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" maxOccurs="unbounded" 
name="procedure-parameter">
-          <xs:complexType>
-            <xs:attribute name="name" use="required" type="xs:string"/>
-            <xs:attribute name="type" use="required" type="xs:string"/>
-            <xs:attribute name="length" use="optional" type="xs:integer"/>
-            <xs:attribute name="direction" use="required" type="xs:string"/>
-          </xs:complexType>
-        </xs:element>
-      </xs:sequence>
-      <xs:attribute name="name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="entity-listener">
-    <xs:complexType>
-      <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:pre-persist"/>
-          <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-persist"/>
-          <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:pre-update"/>
-          <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-update"/>
-          <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:pre-remove"/>
-          <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-remove"/>
-          <xs:element minOccurs="0" maxOccurs="unbounded" ref="cay:post-load"/>
-      </xs:sequence>
-      <xs:attribute name="class" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="pre-update">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="post-persist">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="post-update">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="pre-persist">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="post-remove">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="post-load">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="pre-remove">
-    <xs:complexType>
-      <xs:attribute name="method-name" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
+<!--
+       Cayenne entity map schema 
+       Defines format of Cayenne DataMap XML files (*.map.xml).  DataMap files 
contain
+       the metadata needed for Cayenne object-relational features. Multiple 
DataMaps
+       are usually combined in one shared namespace, so the elements of the 
DataMap
+       may reference objects from other DataMaps.
+--> 
+<xs:schema targetNamespace="http://cayenne.apache.org/schema/3.0/modelMap";
+       xmlns:cay="http://cayenne.apache.org/schema/3.0/modelMap";
+       xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified" version="3">
+       <xs:element name="data-map">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:property"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:embeddable"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:procedure"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:db-entity"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:obj-entity"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:db-relationship"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:obj-relationship"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:query"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:entity-listener"/>
+                       </xs:sequence>
+                       <xs:attribute name="project-version" use="required" 
type="xs:decimal"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="db-entity">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element maxOccurs="unbounded" 
ref="cay:db-attribute"/>
+                               <xs:element minOccurs="0" 
ref="cay:db-key-generator"/>
+                       </xs:sequence>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="schema" type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="db-attribute">
+               <xs:annotation>
+                       <xs:documentation>A database column.</xs:documentation>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:attribute name="isMandatory" type="xs:boolean"/>
+                       <xs:attribute name="isPrimaryKey" type="xs:boolean">
+                               <xs:annotation>
+                                       <xs:documentation>If true, the value of 
attribute is unique and used as a primary key identifier.</xs:documentation>
+                               </xs:annotation>
+                       </xs:attribute>
+                       <xs:attribute name="isGenerated" use="optional" 
type="xs:boolean"/>
+                       <xs:attribute name="length" type="xs:integer"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="scale" type="xs:integer"/>
+                       <xs:attribute name="type" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="obj-entity">
+               <xs:annotation>
+                       <xs:documentation>A persistent Java class managed by 
Cayenne.</xs:documentation>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" ref="cay:qualifier"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:embedded-attribute"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:obj-attribute"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:attribute-override"/>
+                               <xs:sequence minOccurs="0">
+                                       <xs:element ref="cay:entity-listener"/>
+                                       <xs:element ref="cay:pre-persist"/>
+                                       <xs:element ref="cay:post-persist"/>
+                                       <xs:element ref="cay:pre-update"/>
+                                       <xs:element ref="cay:post-update"/>
+                                       <xs:element ref="cay:pre-remove"/>
+                                       <xs:element ref="cay:post-remove"/>
+                                       <xs:element ref="cay:post-load"/>
+                               </xs:sequence>
+                       </xs:sequence>
+                       <xs:attribute name="className" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="abstract" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="readOnly" use="optional" 
type="xs:boolean"/>
+                       <xs:attribute name="clientClassName" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="clientSuperClassName" 
use="optional" type="xs:string"/>
+                       <xs:attribute name="dbEntityName" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="lock-type" type="xs:string"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="superClassName" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="superEntityName" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="exclude-superclass-listeners" 
use="optional" type="xs:boolean"/>
+                       <xs:attribute name="exclude-default-listeners" 
use="optional" type="xs:boolean"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="qualifier" type="xs:string"/>
+
+       <xs:element name="obj-attribute">
+               <xs:complexType>
+                       <xs:attribute name="db-attribute-path" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="lock" use="optional" 
type="xs:boolean"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="type" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="attribute-override">
+               <xs:complexType>
+                       <xs:attribute name="db-attribute-path" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="lock" use="optional" 
type="xs:boolean"/>
+                       <xs:attribute name="name" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="type" use="optional" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="db-relationship">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="1" maxOccurs="unbounded" 
ref="cay:db-attribute-pair"/>
+                       </xs:sequence>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="source" use="required" 
type="xs:string"/>
+                       <xs:attribute name="target" use="required" 
type="xs:string"/>
+                       <xs:attribute name="toDependentPK" type="xs:boolean"/>
+                       <xs:attribute name="toMany" use="required" 
type="xs:boolean"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="db-attribute-pair">
+               <xs:complexType>
+                       <xs:attribute name="source" use="required" 
type="xs:string"/>
+                       <xs:attribute name="target" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="obj-relationship">
+               <xs:complexType>
+                       <xs:attribute name="db-relationship-path" 
use="required" type="xs:string"/>
+                       <xs:attribute name="deleteRule" type="xs:string"/>
+                       <xs:attribute name="lock" type="xs:boolean"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="source" use="required" 
type="xs:string"/>
+                       <xs:attribute name="target" use="required" 
type="xs:string"/>
+                       <xs:attribute name="collection-type" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="map-key" use="optional" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="query">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:property"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:sql"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:ejbql"/>
+                               <xs:element name="qualifier" minOccurs="0" 
maxOccurs="unbounded" type="xs:string"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:ordering"/>
+                               <xs:element name="prefetch" minOccurs="0" 
maxOccurs="unbounded" type="xs:string"/>
+                       </xs:sequence>
+                       <xs:attribute name="factory" use="required"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="root" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="root-name" use="optional" 
type="xs:string"/>
+                       <xs:attribute name="result-entity" use="optional" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="ordering">
+               <xs:complexType>
+                       <xs:simpleContent>
+                               <xs:extension base="xs:string">
+                                       <xs:attribute name="descending" 
type="xs:boolean"/>
+                                       <xs:attribute name="ignore-case" 
type="xs:boolean"/>
+                               </xs:extension>
+                       </xs:simpleContent>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="sql">
+               <xs:annotation>
+                       <xs:documentation>Defines arbitrary SQL statement. Note 
that SQL statement can be customized for different SQL dialects per DbAdapter 
class. If no adapter-specific statement is found, the one with no adapter label 
is used by default.</xs:documentation>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:simpleContent>
+                               <xs:extension base="xs:string">
+                                       <xs:attribute name="adapter-class" 
type="xs:string"/>
+                               </xs:extension>
+                       </xs:simpleContent>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="ejbql" type="xs:string"/>
+
+       <xs:element name="property">
+               <xs:annotation>
+                       <xs:documentation>A generic property used by other 
elements.</xs:documentation>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+                       <xs:attribute name="value" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="embeddable">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element name="embeddable-attribute" 
minOccurs="0" maxOccurs="unbounded">
+                                       <xs:complexType>
+                                               <xs:attribute name="name" 
use="required" type="xs:string"/>
+                                               <xs:attribute name="type" 
use="required" type="xs:string"/>
+                                               <xs:attribute 
name="db-attribute-name" use="required" type="xs:string"/>
+                                       </xs:complexType>
+                               </xs:element>
+                       </xs:sequence>
+                       <xs:attribute name="className" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="embedded-attribute">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" maxOccurs="unbounded"
+                                       
ref="cay:embeddable-attribute-override"/>
+                       </xs:sequence>
+                       <xs:attribute name="type" use="required" 
type="xs:string"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="embeddable-attribute-override">
+               <xs:complexType>
+                       <xs:attribute name="db-attribute-path" use="required" 
type="xs:string"/>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="procedure">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
name="procedure-parameter">
+                                       <xs:complexType>
+                                               <xs:attribute name="name" 
use="required" type="xs:string"/>
+                                               <xs:attribute name="type" 
use="required" type="xs:string"/>
+                                               <xs:attribute name="length" 
use="optional" type="xs:integer"/>
+                                               <xs:attribute name="direction" 
use="required" type="xs:string"/>
+                                       </xs:complexType>
+                               </xs:element>
+                       </xs:sequence>
+                       <xs:attribute name="name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="entity-listener">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:pre-persist"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-persist"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:pre-update"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-update"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:pre-remove"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-remove"/>
+                               <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="cay:post-load"/>
+                       </xs:sequence>
+                       <xs:attribute name="class" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="pre-update">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="post-persist">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="post-update">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="pre-persist">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="post-remove">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="post-load">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="pre-remove">
+               <xs:complexType>
+                       <xs:attribute name="method-name" use="required" 
type="xs:string"/>
+               </xs:complexType>
+       </xs:element>
+
+       <xs:element name="db-key-generator">
+               <xs:annotation>
+                       <xs:documentation>Used to install the Automatic 
Sequence/Key Generation facility for db-entity. This feature is intended for 
use with simple (non-compound) integral primary keys.</xs:documentation>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element name="db-generator-type" 
type="xs:string">
+                                       <xs:annotation>
+                                               <xs:documentation>Specifies the 
Key Generation Method that will be employed
+      'ORACLE'               - use Oracle's SEQUENCE
+      'NAMED_SEQUENCE_TABLE' - use USER designated SEQUENCE TABLE. User 
specifies the name of a DBMS Table with the schema (sequence INT) which will be 
used to hold sequence values (not supported yet)</xs:documentation>
+                                       </xs:annotation>
+                               </xs:element>
+                               <xs:element minOccurs="0" 
name="db-generator-name" type="xs:string">
+                                       <xs:annotation>
+                                               <xs:documentation>For 
db-generator-type ORACLE this is the name of the ORACLE SEQUENCE to use. The 
SEQUENCE is assumed to already exist in the Database.
+If this is db-generator-type NAMED_SEQUENCE_TABLE Key Generation, this 
specifies the name of the SEQUENCE TABLE to use. The NAMED_SEQUENCE_TABLE is 
assumed to already exist in the database.</xs:documentation>
+                                       </xs:annotation>
+                               </xs:element>
+                               <xs:element minOccurs="0" 
name="db-key-cache-size" type="xs:integer">
+                                       <xs:annotation>
+                                               <xs:documentation>Size of key 
cache. For db-generator-type ORACLE , this value MUST match the Oracle SEQUENCE 
 INCREMENT value.  If there is a mismatch between this value and the Oracle 
SEQUENCE INCREMENT value, then there will likely be duplicate key problems.
+For db-generator-type NAMED_SEQUENCE_TABLE , this tells how many keys the 
Container will fetch in a single DBMS call.</xs:documentation>
+                                       </xs:annotation>
+                               </xs:element>
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
 </xs:schema>


Reply via email to