[SCM] Castor: open source data binding framework written in Java branch, master, updated. debian/1.3.1-1-4-gd9169e7

Miguel Landaeta miguel at miguel.cc
Sun Jan 22 04:15:21 UTC 2012


The following commit has been merged in the master branch:
commit d9169e7c0bff72738cd0f7dfbe85fe9e96d2f73f
Author: Miguel Landaeta <miguel at miguel.cc>
Date:   Sat Jan 21 23:46:37 2012 -0430

    Enable again build of JDO jar

diff --git a/debian/changelog b/debian/changelog
index d4b73a0..32266aa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,7 +3,8 @@ castor (1.3.2-1) UNRELEASED; urgency=low
   * New upstream release.
   * Refresh patches.
   * Bump Standards-Version to 3.9.2. No changes were required.
-  * Add dependencies on libcommons-lang-java and libcommons-cli-java.
+  * Add dependencies on libcommons-lang-java, libcommons-cli-java and javacc.
+  * Fix Vcs-Git URL.
 
  -- Miguel Landaeta <miguel at miguel.cc>  Sat, 21 Jan 2012 18:09:58 -0430
 
diff --git a/debian/control b/debian/control
index f2895ec..956a430 100644
--- a/debian/control
+++ b/debian/control
@@ -7,10 +7,10 @@ Build-Depends: debhelper (>= 7.0.50), default-jdk, javahelper, ant,
  libcommons-logging-java, liboro-java, libregexp-java, libeasymock-java, junit,
  junit4, libgeronimo-jta-1.1-spec-java, libcglib-java, liblog4j1.2-java,
  glassfish-javaee, velocity, maven-repo-helper, ant-optional,
- libcommons-lang-java, libcommons-cli-java,
+ libcommons-lang-java, libcommons-cli-java, javacc
 Standards-Version: 3.9.2
 Homepage: http://www.castor.org/
-Vcs-Git: git://git.debian.org/pkg-java/castor.git
+Vcs-Git: git://git.debian.org/git/pkg-java/castor.git
 Vcs-Browser: http://git.debian.org/?p=pkg-java/castor.git
 
 Package: libcastor-xml-java
diff --git a/debian/patches/add_cpa_generated_sources.diff b/debian/patches/add_cpa_generated_sources.diff
index dc81a6d..ade5932 100644
--- a/debian/patches/add_cpa_generated_sources.diff
+++ b/debian/patches/add_cpa_generated_sources.diff
@@ -6,15 +6,31 @@ Description: add autogenerated sources to cpa/jdo module
  packaged and when it gets accepted in the archive, this package will re rebuilt
  with that plugin and this patch will be removed.
 Author: Miguel Landaeta <miguel at miguel.cc>
-Forwarded: not-needed
-Last-Update: 2010-06-27
+Forwarded: no
+Last-Update: 2012-01-21
 
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/Database.java
-@@ -0,0 +1,356 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/.castor.cdr
+@@ -0,0 +1,13 @@
++#Sun Jan 22 02:12:12 UTC 2012
++org.castor.jdo.conf.ClassMapping=org.castor.jdo.conf.descriptors.ClassMappingDescriptor
++org.castor.jdo.conf.Jndi=org.castor.jdo.conf.descriptors.JndiDescriptor
++org.castor.jdo.conf.TransactionManager=org.castor.jdo.conf.descriptors.TransactionManagerDescriptor
++org.castor.jdo.conf.TransactionDemarcation=org.castor.jdo.conf.descriptors.TransactionDemarcationDescriptor
++org.castor.jdo.conf.JdoConf=org.castor.jdo.conf.descriptors.JdoConfDescriptor
++org.castor.jdo.conf.Param=org.castor.jdo.conf.descriptors.ParamDescriptor
++org.castor.jdo.conf.DataSource=org.castor.jdo.conf.descriptors.DataSourceDescriptor
++org.castor.jdo.conf.DatabaseChoice=org.castor.jdo.conf.descriptors.DatabaseChoiceDescriptor
++org.castor.jdo.conf.PackageMapping=org.castor.jdo.conf.descriptors.PackageMappingDescriptor
++org.castor.jdo.conf.Driver=org.castor.jdo.conf.descriptors.DriverDescriptor
++org.castor.jdo.conf.Database=org.castor.jdo.conf.descriptors.DatabaseDescriptor
++org.castor.jdo.conf.Mapping=org.castor.jdo.conf.descriptors.MappingDescriptor
+--- /dev/null
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/Mapping.java
+@@ -0,0 +1,138 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -22,12 +38,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class Database.
++ * Class Mapping.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Database implements java.io.Serializable {
++public class Mapping implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -35,34 +51,170 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _name.
++     * Field _href.
 +     */
-+    private java.lang.String _name;
++    private java.lang.String _href;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public Mapping() {
++        super();
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
 +
 +    /**
-+     * Field _engine.
++     * Returns the value of field 'href'.
++     * 
++     * @return the value of field 'Href'.
 +     */
-+    private java.lang.String _engine = "generic";
++    public java.lang.String getHref(
++    ) {
++        return this._href;
++    }
 +
 +    /**
-+     * Field _databaseChoice.
++     * Method isValid.
++     * 
++     * @return true if this object is valid according to the schema
 +     */
-+    private org.castor.jdo.conf.DatabaseChoice _databaseChoice;
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
++    }
 +
 +    /**
-+     * Field _mappingList.
++     * 
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    private java.util.List<org.castor.jdo.conf.Mapping> _mappingList;
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    }
++
++    /**
++     * 
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     */
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    }
++
++    /**
++     * Sets the value of field 'href'.
++     * 
++     * @param href the value of field 'href'.
++     */
++    public void setHref(
++            final java.lang.String href) {
++        this._href = href;
++    }
++
++    /**
++     * Method unmarshal.
++     * 
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.castor.jdo.conf.Mapping
++     */
++    public static org.castor.jdo.conf.Mapping unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.castor.jdo.conf.Mapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Mapping.class, reader);
++    }
++
++    /**
++     * 
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/JdoConf.java
+@@ -0,0 +1,332 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.castor.jdo.conf;
++
++/**
++ * Class JdoConf.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class JdoConf implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _name.
++     */
++    private java.lang.String _name = "jdo-conf";
++
++    /**
++     * Field _databaseList.
++     */
++    private java.util.List<org.castor.jdo.conf.Database> _databaseList;
++
++    /**
++     * Field _transactionDemarcation.
++     */
++    private org.castor.jdo.conf.TransactionDemarcation _transactionDemarcation;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Database() {
++    public JdoConf() {
 +        super();
-+        setEngine("generic");
-+        this._mappingList = new java.util.ArrayList<org.castor.jdo.conf.Mapping>();
++        setName("jdo-conf");
++        this._databaseList = new java.util.ArrayList<org.castor.jdo.conf.Database>();
 +    }
 +
 +
@@ -73,84 +225,64 @@ Last-Update: 2010-06-27
 +    /**
 +     * 
 +     * 
-+     * @param vMapping
++     * @param vDatabase
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void addMapping(
-+            final org.castor.jdo.conf.Mapping vMapping)
++    public void addDatabase(
++            final org.castor.jdo.conf.Database vDatabase)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._mappingList.add(vMapping);
++        this._databaseList.add(vDatabase);
 +    }
 +
 +    /**
 +     * 
 +     * 
 +     * @param index
-+     * @param vMapping
++     * @param vDatabase
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void addMapping(
++    public void addDatabase(
 +            final int index,
-+            final org.castor.jdo.conf.Mapping vMapping)
++            final org.castor.jdo.conf.Database vDatabase)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._mappingList.add(index, vMapping);
++        this._databaseList.add(index, vDatabase);
 +    }
 +
 +    /**
-+     * Method enumerateMapping.
++     * Method enumerateDatabase.
 +     * 
 +     * @return an Enumeration over all possible elements of this
 +     * collection
 +     */
-+    public java.util.Enumeration<? extends org.castor.jdo.conf.Mapping> enumerateMapping(
-+    ) {
-+        return java.util.Collections.enumeration(this._mappingList);
-+    }
-+
-+    /**
-+     * Returns the value of field 'databaseChoice'.
-+     * 
-+     * @return the value of field 'DatabaseChoice'.
-+     */
-+    public org.castor.jdo.conf.DatabaseChoice getDatabaseChoice(
-+    ) {
-+        return this._databaseChoice;
-+    }
-+
-+    /**
-+     * Returns the value of field 'engine'.
-+     * 
-+     * @return the value of field 'Engine'.
-+     */
-+    public java.lang.String getEngine(
++    public java.util.Enumeration<? extends org.castor.jdo.conf.Database> enumerateDatabase(
 +    ) {
-+        return this._engine;
++        return java.util.Collections.enumeration(this._databaseList);
 +    }
 +
 +    /**
-+     * Method getMapping.
++     * Method getDatabase.
 +     * 
 +     * @param index
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
-+     * @return the value of the org.castor.jdo.conf.Mapping at the
++     * @return the value of the org.castor.jdo.conf.Database at the
 +     * given index
 +     */
-+    public org.castor.jdo.conf.Mapping getMapping(
++    public org.castor.jdo.conf.Database getDatabase(
 +            final int index)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._mappingList.size()) {
-+            throw new IndexOutOfBoundsException("getMapping: Index value '" + index + "' not in range [0.." + (this._mappingList.size() - 1) + "]");
++        if (index < 0 || index >= this._databaseList.size()) {
++            throw new IndexOutOfBoundsException("getDatabase: Index value '" + index + "' not in range [0.." + (this._databaseList.size() - 1) + "]");
 +        }
 +
-+        return (org.castor.jdo.conf.Mapping) _mappingList.get(index);
++        return (org.castor.jdo.conf.Database) _databaseList.get(index);
 +    }
 +
 +    /**
-+     * Method getMapping.Returns the contents of the collection in
++     * Method getDatabase.Returns the contents of the collection in
 +     * an Array.  <p>Note:  Just in case the collection contents
 +     * are changing in another thread, we pass a 0-length Array of
 +     * the correct type into the API call.  This way we <i>know</i>
@@ -158,20 +290,20 @@ Last-Update: 2010-06-27
 +     * 
 +     * @return this collection as an Array
 +     */
-+    public org.castor.jdo.conf.Mapping[] getMapping(
++    public org.castor.jdo.conf.Database[] getDatabase(
 +    ) {
-+        org.castor.jdo.conf.Mapping[] array = new org.castor.jdo.conf.Mapping[0];
-+        return (org.castor.jdo.conf.Mapping[]) this._mappingList.toArray(array);
++        org.castor.jdo.conf.Database[] array = new org.castor.jdo.conf.Database[0];
++        return (org.castor.jdo.conf.Database[]) this._databaseList.toArray(array);
 +    }
 +
 +    /**
-+     * Method getMappingCount.
++     * Method getDatabaseCount.
 +     * 
 +     * @return the size of this collection
 +     */
-+    public int getMappingCount(
++    public int getDatabaseCount(
 +    ) {
-+        return this._mappingList.size();
++        return this._databaseList.size();
 +    }
 +
 +    /**
@@ -185,6 +317,16 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Returns the value of field 'transactionDemarcation'.
++     * 
++     * @return the value of field 'TransactionDemarcation'.
++     */
++    public org.castor.jdo.conf.TransactionDemarcation getTransactionDemarcation(
++    ) {
++        return this._transactionDemarcation;
++    }
++
++    /**
 +     * Method isValid.
 +     * 
 +     * @return true if this object is valid according to the schema
@@ -200,14 +342,14 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Method iterateMapping.
++     * Method iterateDatabase.
 +     * 
 +     * @return an Iterator over all possible elements in this
 +     * collection
 +     */
-+    public java.util.Iterator<? extends org.castor.jdo.conf.Mapping> iterateMapping(
++    public java.util.Iterator<? extends org.castor.jdo.conf.Database> iterateDatabase(
 +    ) {
-+        return this._mappingList.iterator();
++        return this._databaseList.iterator();
 +    }
 +
 +    /**
@@ -244,87 +386,67 @@ Last-Update: 2010-06-27
 +
 +    /**
 +     */
-+    public void removeAllMapping(
++    public void removeAllDatabase(
 +    ) {
-+        this._mappingList.clear();
++        this._databaseList.clear();
 +    }
 +
 +    /**
-+     * Method removeMapping.
++     * Method removeDatabase.
 +     * 
-+     * @param vMapping
++     * @param vDatabase
 +     * @return true if the object was removed from the collection.
 +     */
-+    public boolean removeMapping(
-+            final org.castor.jdo.conf.Mapping vMapping) {
-+        boolean removed = _mappingList.remove(vMapping);
++    public boolean removeDatabase(
++            final org.castor.jdo.conf.Database vDatabase) {
++        boolean removed = _databaseList.remove(vDatabase);
 +        return removed;
 +    }
 +
 +    /**
-+     * Method removeMappingAt.
++     * Method removeDatabaseAt.
 +     * 
 +     * @param index
 +     * @return the element removed from the collection
 +     */
-+    public org.castor.jdo.conf.Mapping removeMappingAt(
++    public org.castor.jdo.conf.Database removeDatabaseAt(
 +            final int index) {
-+        java.lang.Object obj = this._mappingList.remove(index);
-+        return (org.castor.jdo.conf.Mapping) obj;
-+    }
-+
-+    /**
-+     * Sets the value of field 'databaseChoice'.
-+     * 
-+     * @param databaseChoice the value of field 'databaseChoice'.
-+     */
-+    public void setDatabaseChoice(
-+            final org.castor.jdo.conf.DatabaseChoice databaseChoice) {
-+        this._databaseChoice = databaseChoice;
-+    }
-+
-+    /**
-+     * Sets the value of field 'engine'.
-+     * 
-+     * @param engine the value of field 'engine'.
-+     */
-+    public void setEngine(
-+            final java.lang.String engine) {
-+        this._engine = engine;
++        java.lang.Object obj = this._databaseList.remove(index);
++        return (org.castor.jdo.conf.Database) obj;
 +    }
 +
 +    /**
 +     * 
 +     * 
 +     * @param index
-+     * @param vMapping
++     * @param vDatabase
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void setMapping(
++    public void setDatabase(
 +            final int index,
-+            final org.castor.jdo.conf.Mapping vMapping)
++            final org.castor.jdo.conf.Database vDatabase)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._mappingList.size()) {
-+            throw new IndexOutOfBoundsException("setMapping: Index value '" + index + "' not in range [0.." + (this._mappingList.size() - 1) + "]");
++        if (index < 0 || index >= this._databaseList.size()) {
++            throw new IndexOutOfBoundsException("setDatabase: Index value '" + index + "' not in range [0.." + (this._databaseList.size() - 1) + "]");
 +        }
 +
-+        this._mappingList.set(index, vMapping);
++        this._databaseList.set(index, vDatabase);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param vMappingArray
++     * @param vDatabaseArray
 +     */
-+    public void setMapping(
-+            final org.castor.jdo.conf.Mapping[] vMappingArray) {
++    public void setDatabase(
++            final org.castor.jdo.conf.Database[] vDatabaseArray) {
 +        //-- copy array
-+        _mappingList.clear();
++        _databaseList.clear();
 +
-+        for (int i = 0; i < vMappingArray.length; i++) {
-+                this._mappingList.add(vMappingArray[i]);
++        for (int i = 0; i < vDatabaseArray.length; i++) {
++                this._databaseList.add(vDatabaseArray[i]);
 +        }
 +    }
 +
@@ -339,6 +461,17 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Sets the value of field 'transactionDemarcation'.
++     * 
++     * @param transactionDemarcation the value of field
++     * 'transactionDemarcation'.
++     */
++    public void setTransactionDemarcation(
++            final org.castor.jdo.conf.TransactionDemarcation transactionDemarcation) {
++        this._transactionDemarcation = transactionDemarcation;
++    }
++
++    /**
 +     * Method unmarshal.
 +     * 
 +     * @param reader
@@ -346,12 +479,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.Database
++     * @return the unmarshaled org.castor.jdo.conf.JdoConf
 +     */
-+    public static org.castor.jdo.conf.Database unmarshal(
++    public static org.castor.jdo.conf.JdoConf unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.Database) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Database.class, reader);
++        return (org.castor.jdo.conf.JdoConf) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.JdoConf.class, reader);
 +    }
 +
 +    /**
@@ -369,11 +502,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/Jndi.java
-@@ -0,0 +1,138 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/DatabaseChoice.java
+@@ -0,0 +1,188 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -381,12 +514,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class Jndi.
++ * Class DatabaseChoice.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Jndi implements java.io.Serializable {
++public class DatabaseChoice implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -394,16 +527,26 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _name.
++     * Field _driver.
 +     */
-+    private java.lang.String _name;
++    private org.castor.jdo.conf.Driver _driver;
++
++    /**
++     * Field _dataSource.
++     */
++    private org.castor.jdo.conf.DataSource _dataSource;
++
++    /**
++     * Field _jndi.
++     */
++    private org.castor.jdo.conf.Jndi _jndi;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Jndi() {
++    public DatabaseChoice() {
 +        super();
 +    }
 +
@@ -413,13 +556,33 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
-+     * Returns the value of field 'name'.
++     * Returns the value of field 'dataSource'.
 +     * 
-+     * @return the value of field 'Name'.
++     * @return the value of field 'DataSource'.
 +     */
-+    public java.lang.String getName(
++    public org.castor.jdo.conf.DataSource getDataSource(
 +    ) {
-+        return this._name;
++        return this._dataSource;
++    }
++
++    /**
++     * Returns the value of field 'driver'.
++     * 
++     * @return the value of field 'Driver'.
++     */
++    public org.castor.jdo.conf.Driver getDriver(
++    ) {
++        return this._driver;
++    }
++
++    /**
++     * Returns the value of field 'jndi'.
++     * 
++     * @return the value of field 'Jndi'.
++     */
++    public org.castor.jdo.conf.Jndi getJndi(
++    ) {
++        return this._jndi;
 +    }
 +
 +    /**
@@ -470,13 +633,33 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'.
++     * Sets the value of field 'dataSource'.
 +     * 
-+     * @param name the value of field 'name'.
++     * @param dataSource the value of field 'dataSource'.
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public void setDataSource(
++            final org.castor.jdo.conf.DataSource dataSource) {
++        this._dataSource = dataSource;
++    }
++
++    /**
++     * Sets the value of field 'driver'.
++     * 
++     * @param driver the value of field 'driver'.
++     */
++    public void setDriver(
++            final org.castor.jdo.conf.Driver driver) {
++        this._driver = driver;
++    }
++
++    /**
++     * Sets the value of field 'jndi'.
++     * 
++     * @param jndi the value of field 'jndi'.
++     */
++    public void setJndi(
++            final org.castor.jdo.conf.Jndi jndi) {
++        this._jndi = jndi;
 +    }
 +
 +    /**
@@ -487,12 +670,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.Jndi
++     * @return the unmarshaled org.castor.jdo.conf.DatabaseChoice
 +     */
-+    public static org.castor.jdo.conf.Jndi unmarshal(
++    public static org.castor.jdo.conf.DatabaseChoice unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.Jndi) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Jndi.class, reader);
++        return (org.castor.jdo.conf.DatabaseChoice) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.DatabaseChoice.class, reader);
 +    }
 +
 +    /**
@@ -510,25 +693,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/.castor.cdr
-@@ -0,0 +1,11 @@
-+#Sat Jun 12 20:35:50 VET 2010
-+org.castor.jdo.conf.TransactionManager=org.castor.jdo.conf.descriptors.TransactionManagerDescriptor
-+org.castor.jdo.conf.Jndi=org.castor.jdo.conf.descriptors.JndiDescriptor
-+org.castor.jdo.conf.TransactionDemarcation=org.castor.jdo.conf.descriptors.TransactionDemarcationDescriptor
-+org.castor.jdo.conf.JdoConf=org.castor.jdo.conf.descriptors.JdoConfDescriptor
-+org.castor.jdo.conf.Param=org.castor.jdo.conf.descriptors.ParamDescriptor
-+org.castor.jdo.conf.DataSource=org.castor.jdo.conf.descriptors.DataSourceDescriptor
-+org.castor.jdo.conf.DatabaseChoice=org.castor.jdo.conf.descriptors.DatabaseChoiceDescriptor
-+org.castor.jdo.conf.Driver=org.castor.jdo.conf.descriptors.DriverDescriptor
-+org.castor.jdo.conf.Database=org.castor.jdo.conf.descriptors.DatabaseDescriptor
-+org.castor.jdo.conf.Mapping=org.castor.jdo.conf.descriptors.MappingDescriptor
---- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/Param.java
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/Param.java
 @@ -0,0 +1,163 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -690,11 +859,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/Mapping.java
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/ClassMapping.java
 @@ -0,0 +1,138 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -702,12 +871,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class Mapping.
++ * Class ClassMapping.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Mapping implements java.io.Serializable {
++public class ClassMapping implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -715,16 +884,16 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _href.
++     * Field _name.
 +     */
-+    private java.lang.String _href;
++    private java.lang.String _name;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Mapping() {
++    public ClassMapping() {
 +        super();
 +    }
 +
@@ -734,13 +903,13 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
-+     * Returns the value of field 'href'.
++     * Returns the value of field 'name'.
 +     * 
-+     * @return the value of field 'Href'.
++     * @return the value of field 'Name'.
 +     */
-+    public java.lang.String getHref(
++    public java.lang.String getName(
 +    ) {
-+        return this._href;
++        return this._name;
 +    }
 +
 +    /**
@@ -791,13 +960,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'href'.
++     * Sets the value of field 'name'.
 +     * 
-+     * @param href the value of field 'href'.
++     * @param name the value of field 'name'.
 +     */
-+    public void setHref(
-+            final java.lang.String href) {
-+        this._href = href;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
@@ -808,12 +977,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.Mapping
++     * @return the unmarshaled org.castor.jdo.conf.ClassMapping
 +     */
-+    public static org.castor.jdo.conf.Mapping unmarshal(
++    public static org.castor.jdo.conf.ClassMapping unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.Mapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Mapping.class, reader);
++        return (org.castor.jdo.conf.ClassMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.ClassMapping.class, reader);
 +    }
 +
 +    /**
@@ -831,11 +1000,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/JdoConf.java
-@@ -0,0 +1,332 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/TransactionDemarcation.java
+@@ -0,0 +1,165 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -843,12 +1012,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class JdoConf.
++ * Class TransactionDemarcation.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class JdoConf implements java.io.Serializable {
++public class TransactionDemarcation implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -856,29 +1025,22 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _name.
-+     */
-+    private java.lang.String _name = "jdo-conf";
-+
-+    /**
-+     * Field _databaseList.
++     * Field _mode.
 +     */
-+    private java.util.List<org.castor.jdo.conf.Database> _databaseList;
++    private java.lang.String _mode;
 +
 +    /**
-+     * Field _transactionDemarcation.
++     * Field _transactionManager.
 +     */
-+    private org.castor.jdo.conf.TransactionDemarcation _transactionDemarcation;
++    private org.castor.jdo.conf.TransactionManager _transactionManager;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public JdoConf() {
++    public TransactionDemarcation() {
 +        super();
-+        setName("jdo-conf");
-+        this._databaseList = new java.util.ArrayList<org.castor.jdo.conf.Database>();
 +    }
 +
 +
@@ -887,107 +1049,23 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
++     * Returns the value of field 'mode'.
 +     * 
-+     * 
-+     * @param vDatabase
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the value of field 'Mode'.
 +     */
-+    public void addDatabase(
-+            final org.castor.jdo.conf.Database vDatabase)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._databaseList.add(vDatabase);
++    public java.lang.String getMode(
++    ) {
++        return this._mode;
 +    }
 +
 +    /**
++     * Returns the value of field 'transactionManager'.
 +     * 
-+     * 
-+     * @param index
-+     * @param vDatabase
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the value of field 'TransactionManager'.
 +     */
-+    public void addDatabase(
-+            final int index,
-+            final org.castor.jdo.conf.Database vDatabase)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._databaseList.add(index, vDatabase);
-+    }
-+
-+    /**
-+     * Method enumerateDatabase.
-+     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
-+     */
-+    public java.util.Enumeration<? extends org.castor.jdo.conf.Database> enumerateDatabase(
-+    ) {
-+        return java.util.Collections.enumeration(this._databaseList);
-+    }
-+
-+    /**
-+     * Method getDatabase.
-+     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the org.castor.jdo.conf.Database at the
-+     * given index
-+     */
-+    public org.castor.jdo.conf.Database getDatabase(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._databaseList.size()) {
-+            throw new IndexOutOfBoundsException("getDatabase: Index value '" + index + "' not in range [0.." + (this._databaseList.size() - 1) + "]");
-+        }
-+
-+        return (org.castor.jdo.conf.Database) _databaseList.get(index);
-+    }
-+
-+    /**
-+     * Method getDatabase.Returns the contents of the collection in
-+     * an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
-+     * 
-+     * @return this collection as an Array
-+     */
-+    public org.castor.jdo.conf.Database[] getDatabase(
-+    ) {
-+        org.castor.jdo.conf.Database[] array = new org.castor.jdo.conf.Database[0];
-+        return (org.castor.jdo.conf.Database[]) this._databaseList.toArray(array);
-+    }
-+
-+    /**
-+     * Method getDatabaseCount.
-+     * 
-+     * @return the size of this collection
-+     */
-+    public int getDatabaseCount(
-+    ) {
-+        return this._databaseList.size();
-+    }
-+
-+    /**
-+     * Returns the value of field 'name'.
-+     * 
-+     * @return the value of field 'Name'.
-+     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
-+    }
-+
-+    /**
-+     * Returns the value of field 'transactionDemarcation'.
-+     * 
-+     * @return the value of field 'TransactionDemarcation'.
-+     */
-+    public org.castor.jdo.conf.TransactionDemarcation getTransactionDemarcation(
++    public org.castor.jdo.conf.TransactionManager getTransactionManager(
 +    ) {
-+        return this._transactionDemarcation;
++        return this._transactionManager;
 +    }
 +
 +    /**
@@ -1006,17 +1084,6 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Method iterateDatabase.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
-+     */
-+    public java.util.Iterator<? extends org.castor.jdo.conf.Database> iterateDatabase(
-+    ) {
-+        return this._databaseList.iterator();
-+    }
-+
-+    /**
 +     * 
 +     * 
 +     * @param out
@@ -1049,90 +1116,24 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     */
-+    public void removeAllDatabase(
-+    ) {
-+        this._databaseList.clear();
-+    }
-+
-+    /**
-+     * Method removeDatabase.
-+     * 
-+     * @param vDatabase
-+     * @return true if the object was removed from the collection.
-+     */
-+    public boolean removeDatabase(
-+            final org.castor.jdo.conf.Database vDatabase) {
-+        boolean removed = _databaseList.remove(vDatabase);
-+        return removed;
-+    }
-+
-+    /**
-+     * Method removeDatabaseAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
-+     */
-+    public org.castor.jdo.conf.Database removeDatabaseAt(
-+            final int index) {
-+        java.lang.Object obj = this._databaseList.remove(index);
-+        return (org.castor.jdo.conf.Database) obj;
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vDatabase
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void setDatabase(
-+            final int index,
-+            final org.castor.jdo.conf.Database vDatabase)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._databaseList.size()) {
-+            throw new IndexOutOfBoundsException("setDatabase: Index value '" + index + "' not in range [0.." + (this._databaseList.size() - 1) + "]");
-+        }
-+
-+        this._databaseList.set(index, vDatabase);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param vDatabaseArray
-+     */
-+    public void setDatabase(
-+            final org.castor.jdo.conf.Database[] vDatabaseArray) {
-+        //-- copy array
-+        _databaseList.clear();
-+
-+        for (int i = 0; i < vDatabaseArray.length; i++) {
-+                this._databaseList.add(vDatabaseArray[i]);
-+        }
-+    }
-+
-+    /**
-+     * Sets the value of field 'name'.
++     * Sets the value of field 'mode'.
 +     * 
-+     * @param name the value of field 'name'.
++     * @param mode the value of field 'mode'.
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public void setMode(
++            final java.lang.String mode) {
++        this._mode = mode;
 +    }
 +
 +    /**
-+     * Sets the value of field 'transactionDemarcation'.
++     * Sets the value of field 'transactionManager'.
 +     * 
-+     * @param transactionDemarcation the value of field
-+     * 'transactionDemarcation'.
++     * @param transactionManager the value of field
++     * 'transactionManager'.
 +     */
-+    public void setTransactionDemarcation(
-+            final org.castor.jdo.conf.TransactionDemarcation transactionDemarcation) {
-+        this._transactionDemarcation = transactionDemarcation;
++    public void setTransactionManager(
++            final org.castor.jdo.conf.TransactionManager transactionManager) {
++        this._transactionManager = transactionManager;
 +    }
 +
 +    /**
@@ -1143,12 +1144,13 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.JdoConf
++     * @return the unmarshaled
++     * org.castor.jdo.conf.TransactionDemarcation
 +     */
-+    public static org.castor.jdo.conf.JdoConf unmarshal(
++    public static org.castor.jdo.conf.TransactionDemarcation unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.JdoConf) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.JdoConf.class, reader);
++        return (org.castor.jdo.conf.TransactionDemarcation) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.TransactionDemarcation.class, reader);
 +    }
 +
 +    /**
@@ -1166,11 +1168,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/TransactionManager.java
-@@ -0,0 +1,306 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/PackageMapping.java
+@@ -0,0 +1,138 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -1178,12 +1180,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class TransactionManager.
++ * Class PackageMapping.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class TransactionManager implements java.io.Serializable {
++public class PackageMapping implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -1193,22 +1195,15 @@ Last-Update: 2010-06-27
 +    /**
 +     * Field _name.
 +     */
-+    private java.lang.String _name = "local";
-+
-+    /**
-+     * Field _paramList.
-+     */
-+    private java.util.List<org.castor.jdo.conf.Param> _paramList;
++    private java.lang.String _name;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public TransactionManager() {
++    public PackageMapping() {
 +        super();
-+        setName("local");
-+        this._paramList = new java.util.ArrayList<org.castor.jdo.conf.Param>();
 +    }
 +
 +
@@ -1217,138 +1212,43 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
++     * Returns the value of field 'name'.
 +     * 
-+     * 
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void addParam(
-+            final org.castor.jdo.conf.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._paramList.add(vParam);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the value of field 'Name'.
 +     */
-+    public void addParam(
-+            final int index,
-+            final org.castor.jdo.conf.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._paramList.add(index, vParam);
++    public java.lang.String getName(
++    ) {
++        return this._name;
 +    }
 +
 +    /**
-+     * Method enumerateParam.
++     * Method isValid.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @return true if this object is valid according to the schema
 +     */
-+    public java.util.Enumeration<? extends org.castor.jdo.conf.Param> enumerateParam(
++    public boolean isValid(
 +    ) {
-+        return java.util.Collections.enumeration(this._paramList);
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'.
 +     * 
-+     * @return the value of field 'Name'.
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
-+    }
-+
-+    /**
-+     * Method getParam.
-+     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the org.castor.jdo.conf.Param at the
-+     * given index
-+     */
-+    public org.castor.jdo.conf.Param getParam(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._paramList.size()) {
-+            throw new IndexOutOfBoundsException("getParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
-+        }
-+
-+        return (org.castor.jdo.conf.Param) _paramList.get(index);
-+    }
-+
-+    /**
-+     * Method getParam.Returns the contents of the collection in an
-+     * Array.  <p>Note:  Just in case the collection contents are
-+     * changing in another thread, we pass a 0-length Array of the
-+     * correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
-+     * 
-+     * @return this collection as an Array
-+     */
-+    public org.castor.jdo.conf.Param[] getParam(
-+    ) {
-+        org.castor.jdo.conf.Param[] array = new org.castor.jdo.conf.Param[0];
-+        return (org.castor.jdo.conf.Param[]) this._paramList.toArray(array);
-+    }
-+
-+    /**
-+     * Method getParamCount.
-+     * 
-+     * @return the size of this collection
-+     */
-+    public int getParamCount(
-+    ) {
-+        return this._paramList.size();
-+    }
-+
-+    /**
-+     * Method isValid.
-+     * 
-+     * @return true if this object is valid according to the schema
-+     */
-+    public boolean isValid(
-+    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
-+    }
-+
-+    /**
-+     * Method iterateParam.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
-+     */
-+    public java.util.Iterator<? extends org.castor.jdo.conf.Param> iterateParam(
-+    ) {
-+        return this._paramList.iterator();
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
@@ -1369,37 +1269,6 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     */
-+    public void removeAllParam(
-+    ) {
-+        this._paramList.clear();
-+    }
-+
-+    /**
-+     * Method removeParam.
-+     * 
-+     * @param vParam
-+     * @return true if the object was removed from the collection.
-+     */
-+    public boolean removeParam(
-+            final org.castor.jdo.conf.Param vParam) {
-+        boolean removed = _paramList.remove(vParam);
-+        return removed;
-+    }
-+
-+    /**
-+     * Method removeParamAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
-+     */
-+    public org.castor.jdo.conf.Param removeParamAt(
-+            final int index) {
-+        java.lang.Object obj = this._paramList.remove(index);
-+        return (org.castor.jdo.conf.Param) obj;
-+    }
-+
-+    /**
 +     * Sets the value of field 'name'.
 +     * 
 +     * @param name the value of field 'name'.
@@ -1410,41 +1279,6 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void setParam(
-+            final int index,
-+            final org.castor.jdo.conf.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._paramList.size()) {
-+            throw new IndexOutOfBoundsException("setParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
-+        }
-+
-+        this._paramList.set(index, vParam);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param vParamArray
-+     */
-+    public void setParam(
-+            final org.castor.jdo.conf.Param[] vParamArray) {
-+        //-- copy array
-+        _paramList.clear();
-+
-+        for (int i = 0; i < vParamArray.length; i++) {
-+                this._paramList.add(vParamArray[i]);
-+        }
-+    }
-+
-+    /**
 +     * Method unmarshal.
 +     * 
 +     * @param reader
@@ -1452,12 +1286,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.TransactionManage
++     * @return the unmarshaled org.castor.jdo.conf.PackageMapping
 +     */
-+    public static org.castor.jdo.conf.TransactionManager unmarshal(
++    public static org.castor.jdo.conf.PackageMapping unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.TransactionManager) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.TransactionManager.class, reader);
++        return (org.castor.jdo.conf.PackageMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.PackageMapping.class, reader);
 +    }
 +
 +    /**
@@ -1475,11 +1309,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/DataSource.java
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/DataSource.java
 @@ -0,0 +1,305 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -1783,11 +1617,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/TransactionDemarcation.java
-@@ -0,0 +1,165 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/Jndi.java
+@@ -0,0 +1,138 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -1795,12 +1629,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class TransactionDemarcation.
++ * Class Jndi.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class TransactionDemarcation implements java.io.Serializable {
++public class Jndi implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -1808,21 +1642,16 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _mode.
-+     */
-+    private java.lang.String _mode;
-+
-+    /**
-+     * Field _transactionManager.
++     * Field _name.
 +     */
-+    private org.castor.jdo.conf.TransactionManager _transactionManager;
++    private java.lang.String _name;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public TransactionDemarcation() {
++    public Jndi() {
 +        super();
 +    }
 +
@@ -1832,23 +1661,13 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
-+     * Returns the value of field 'mode'.
-+     * 
-+     * @return the value of field 'Mode'.
-+     */
-+    public java.lang.String getMode(
-+    ) {
-+        return this._mode;
-+    }
-+
-+    /**
-+     * Returns the value of field 'transactionManager'.
++     * Returns the value of field 'name'.
 +     * 
-+     * @return the value of field 'TransactionManager'.
++     * @return the value of field 'Name'.
 +     */
-+    public org.castor.jdo.conf.TransactionManager getTransactionManager(
++    public java.lang.String getName(
 +    ) {
-+        return this._transactionManager;
++        return this._name;
 +    }
 +
 +    /**
@@ -1899,24 +1718,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'mode'.
-+     * 
-+     * @param mode the value of field 'mode'.
-+     */
-+    public void setMode(
-+            final java.lang.String mode) {
-+        this._mode = mode;
-+    }
-+
-+    /**
-+     * Sets the value of field 'transactionManager'.
++     * Sets the value of field 'name'.
 +     * 
-+     * @param transactionManager the value of field
-+     * 'transactionManager'.
++     * @param name the value of field 'name'.
 +     */
-+    public void setTransactionManager(
-+            final org.castor.jdo.conf.TransactionManager transactionManager) {
-+        this._transactionManager = transactionManager;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
@@ -1927,13 +1735,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.castor.jdo.conf.TransactionDemarcation
++     * @return the unmarshaled org.castor.jdo.conf.Jndi
 +     */
-+    public static org.castor.jdo.conf.TransactionDemarcation unmarshal(
++    public static org.castor.jdo.conf.Jndi unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.TransactionDemarcation) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.TransactionDemarcation.class, reader);
++        return (org.castor.jdo.conf.Jndi) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Jndi.class, reader);
 +    }
 +
 +    /**
@@ -1951,11 +1758,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/Driver.java
-@@ -0,0 +1,330 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/TransactionManager.java
+@@ -0,0 +1,306 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -1963,12 +1770,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class Driver.
++ * Class TransactionManager.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Driver implements java.io.Serializable {
++public class TransactionManager implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -1976,14 +1783,9 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _url.
-+     */
-+    private java.lang.String _url;
-+
-+    /**
-+     * Field _className.
++     * Field _name.
 +     */
-+    private java.lang.String _className;
++    private java.lang.String _name = "local";
 +
 +    /**
 +     * Field _paramList.
@@ -1995,8 +1797,9 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Driver() {
++    public TransactionManager() {
 +        super();
++        setName("local");
 +        this._paramList = new java.util.ArrayList<org.castor.jdo.conf.Param>();
 +    }
 +
@@ -2045,13 +1848,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Returns the value of field 'className'.
++     * Returns the value of field 'name'.
 +     * 
-+     * @return the value of field 'ClassName'.
++     * @return the value of field 'Name'.
 +     */
-+    public java.lang.String getClassName(
++    public java.lang.String getName(
 +    ) {
-+        return this._className;
++        return this._name;
 +    }
 +
 +    /**
@@ -2100,16 +1903,6 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Returns the value of field 'url'.
-+     * 
-+     * @return the value of field 'Url'.
-+     */
-+    public java.lang.String getUrl(
-+    ) {
-+        return this._url;
-+    }
-+
-+    /**
 +     * Method isValid.
 +     * 
 +     * @return true if this object is valid according to the schema
@@ -2199,13 +1992,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'className'.
++     * Sets the value of field 'name'.
 +     * 
-+     * @param className the value of field 'className'.
++     * @param name the value of field 'name'.
 +     */
-+    public void setClassName(
-+            final java.lang.String className) {
-+        this._className = className;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
@@ -2244,16 +2037,6 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'url'.
-+     * 
-+     * @param url the value of field 'url'.
-+     */
-+    public void setUrl(
-+            final java.lang.String url) {
-+        this._url = url;
-+    }
-+
-+    /**
 +     * Method unmarshal.
 +     * 
 +     * @param reader
@@ -2261,12 +2044,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.Driver
++     * @return the unmarshaled org.castor.jdo.conf.TransactionManage
 +     */
-+    public static org.castor.jdo.conf.Driver unmarshal(
++    public static org.castor.jdo.conf.TransactionManager unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.Driver) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Driver.class, reader);
++        return (org.castor.jdo.conf.TransactionManager) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.TransactionManager.class, reader);
 +    }
 +
 +    /**
@@ -2284,11 +2067,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/DatabaseChoice.java
-@@ -0,0 +1,188 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/Database.java
+@@ -0,0 +1,692 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -2296,12 +2079,12 @@ Last-Update: 2010-06-27
 +package org.castor.jdo.conf;
 +
 +/**
-+ * Class DatabaseChoice.
++ * Class Database.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class DatabaseChoice implements java.io.Serializable {
++public class Database implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -2309,27 +2092,1340 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _driver.
++     * Field _name.
 +     */
-+    private org.castor.jdo.conf.Driver _driver;
++    private java.lang.String _name;
 +
 +    /**
-+     * Field _dataSource.
++     * Field _engine.
 +     */
-+    private org.castor.jdo.conf.DataSource _dataSource;
++    private java.lang.String _engine = "generic";
 +
 +    /**
-+     * Field _jndi.
++     * Field _databaseChoice.
 +     */
-+    private org.castor.jdo.conf.Jndi _jndi;
++    private org.castor.jdo.conf.DatabaseChoice _databaseChoice;
++
++    /**
++     * Field _mappingList.
++     */
++    private java.util.List<org.castor.jdo.conf.Mapping> _mappingList;
++
++    /**
++     * Field _packageMappingList.
++     */
++    private java.util.List<org.castor.jdo.conf.PackageMapping> _packageMappingList;
++
++    /**
++     * Field _classMappingList.
++     */
++    private java.util.List<org.castor.jdo.conf.ClassMapping> _classMappingList;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public DatabaseChoice() {
-+        super();
++    public Database() {
++        super();
++        setEngine("generic");
++        this._mappingList = new java.util.ArrayList<org.castor.jdo.conf.Mapping>();
++        this._packageMappingList = new java.util.ArrayList<org.castor.jdo.conf.PackageMapping>();
++        this._classMappingList = new java.util.ArrayList<org.castor.jdo.conf.ClassMapping>();
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * 
++     * 
++     * @param vClassMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addClassMapping(
++            final org.castor.jdo.conf.ClassMapping vClassMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._classMappingList.add(vClassMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vClassMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addClassMapping(
++            final int index,
++            final org.castor.jdo.conf.ClassMapping vClassMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._classMappingList.add(index, vClassMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param vMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addMapping(
++            final org.castor.jdo.conf.Mapping vMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._mappingList.add(vMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addMapping(
++            final int index,
++            final org.castor.jdo.conf.Mapping vMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._mappingList.add(index, vMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param vPackageMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addPackageMapping(
++            final org.castor.jdo.conf.PackageMapping vPackageMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._packageMappingList.add(vPackageMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vPackageMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addPackageMapping(
++            final int index,
++            final org.castor.jdo.conf.PackageMapping vPackageMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._packageMappingList.add(index, vPackageMapping);
++    }
++
++    /**
++     * Method enumerateClassMapping.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
++     */
++    public java.util.Enumeration<? extends org.castor.jdo.conf.ClassMapping> enumerateClassMapping(
++    ) {
++        return java.util.Collections.enumeration(this._classMappingList);
++    }
++
++    /**
++     * Method enumerateMapping.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
++     */
++    public java.util.Enumeration<? extends org.castor.jdo.conf.Mapping> enumerateMapping(
++    ) {
++        return java.util.Collections.enumeration(this._mappingList);
++    }
++
++    /**
++     * Method enumeratePackageMapping.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
++     */
++    public java.util.Enumeration<? extends org.castor.jdo.conf.PackageMapping> enumeratePackageMapping(
++    ) {
++        return java.util.Collections.enumeration(this._packageMappingList);
++    }
++
++    /**
++     * Method getClassMapping.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the org.castor.jdo.conf.ClassMapping at
++     * the given index
++     */
++    public org.castor.jdo.conf.ClassMapping getClassMapping(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._classMappingList.size()) {
++            throw new IndexOutOfBoundsException("getClassMapping: Index value '" + index + "' not in range [0.." + (this._classMappingList.size() - 1) + "]");
++        }
++
++        return (org.castor.jdo.conf.ClassMapping) _classMappingList.get(index);
++    }
++
++    /**
++     * Method getClassMapping.Returns the contents of the
++     * collection in an Array.  <p>Note:  Just in case the
++     * collection contents are changing in another thread, we pass
++     * a 0-length Array of the correct type into the API call. 
++     * This way we <i>know</i> that the Array returned is of
++     * exactly the correct length.
++     * 
++     * @return this collection as an Array
++     */
++    public org.castor.jdo.conf.ClassMapping[] getClassMapping(
++    ) {
++        org.castor.jdo.conf.ClassMapping[] array = new org.castor.jdo.conf.ClassMapping[0];
++        return (org.castor.jdo.conf.ClassMapping[]) this._classMappingList.toArray(array);
++    }
++
++    /**
++     * Method getClassMappingCount.
++     * 
++     * @return the size of this collection
++     */
++    public int getClassMappingCount(
++    ) {
++        return this._classMappingList.size();
++    }
++
++    /**
++     * Returns the value of field 'databaseChoice'.
++     * 
++     * @return the value of field 'DatabaseChoice'.
++     */
++    public org.castor.jdo.conf.DatabaseChoice getDatabaseChoice(
++    ) {
++        return this._databaseChoice;
++    }
++
++    /**
++     * Returns the value of field 'engine'.
++     * 
++     * @return the value of field 'Engine'.
++     */
++    public java.lang.String getEngine(
++    ) {
++        return this._engine;
++    }
++
++    /**
++     * Method getMapping.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the org.castor.jdo.conf.Mapping at the
++     * given index
++     */
++    public org.castor.jdo.conf.Mapping getMapping(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._mappingList.size()) {
++            throw new IndexOutOfBoundsException("getMapping: Index value '" + index + "' not in range [0.." + (this._mappingList.size() - 1) + "]");
++        }
++
++        return (org.castor.jdo.conf.Mapping) _mappingList.get(index);
++    }
++
++    /**
++     * Method getMapping.Returns the contents of the collection in
++     * an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
++     * 
++     * @return this collection as an Array
++     */
++    public org.castor.jdo.conf.Mapping[] getMapping(
++    ) {
++        org.castor.jdo.conf.Mapping[] array = new org.castor.jdo.conf.Mapping[0];
++        return (org.castor.jdo.conf.Mapping[]) this._mappingList.toArray(array);
++    }
++
++    /**
++     * Method getMappingCount.
++     * 
++     * @return the size of this collection
++     */
++    public int getMappingCount(
++    ) {
++        return this._mappingList.size();
++    }
++
++    /**
++     * Returns the value of field 'name'.
++     * 
++     * @return the value of field 'Name'.
++     */
++    public java.lang.String getName(
++    ) {
++        return this._name;
++    }
++
++    /**
++     * Method getPackageMapping.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the org.castor.jdo.conf.PackageMapping
++     * at the given index
++     */
++    public org.castor.jdo.conf.PackageMapping getPackageMapping(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._packageMappingList.size()) {
++            throw new IndexOutOfBoundsException("getPackageMapping: Index value '" + index + "' not in range [0.." + (this._packageMappingList.size() - 1) + "]");
++        }
++
++        return (org.castor.jdo.conf.PackageMapping) _packageMappingList.get(index);
++    }
++
++    /**
++     * Method getPackageMapping.Returns the contents of the
++     * collection in an Array.  <p>Note:  Just in case the
++     * collection contents are changing in another thread, we pass
++     * a 0-length Array of the correct type into the API call. 
++     * This way we <i>know</i> that the Array returned is of
++     * exactly the correct length.
++     * 
++     * @return this collection as an Array
++     */
++    public org.castor.jdo.conf.PackageMapping[] getPackageMapping(
++    ) {
++        org.castor.jdo.conf.PackageMapping[] array = new org.castor.jdo.conf.PackageMapping[0];
++        return (org.castor.jdo.conf.PackageMapping[]) this._packageMappingList.toArray(array);
++    }
++
++    /**
++     * Method getPackageMappingCount.
++     * 
++     * @return the size of this collection
++     */
++    public int getPackageMappingCount(
++    ) {
++        return this._packageMappingList.size();
++    }
++
++    /**
++     * Method isValid.
++     * 
++     * @return true if this object is valid according to the schema
++     */
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
++    }
++
++    /**
++     * Method iterateClassMapping.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.castor.jdo.conf.ClassMapping> iterateClassMapping(
++    ) {
++        return this._classMappingList.iterator();
++    }
++
++    /**
++     * Method iterateMapping.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.castor.jdo.conf.Mapping> iterateMapping(
++    ) {
++        return this._mappingList.iterator();
++    }
++
++    /**
++     * Method iteratePackageMapping.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.castor.jdo.conf.PackageMapping> iteratePackageMapping(
++    ) {
++        return this._packageMappingList.iterator();
++    }
++
++    /**
++     * 
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    }
++
++    /**
++     * 
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     */
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    }
++
++    /**
++     */
++    public void removeAllClassMapping(
++    ) {
++        this._classMappingList.clear();
++    }
++
++    /**
++     */
++    public void removeAllMapping(
++    ) {
++        this._mappingList.clear();
++    }
++
++    /**
++     */
++    public void removeAllPackageMapping(
++    ) {
++        this._packageMappingList.clear();
++    }
++
++    /**
++     * Method removeClassMapping.
++     * 
++     * @param vClassMapping
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removeClassMapping(
++            final org.castor.jdo.conf.ClassMapping vClassMapping) {
++        boolean removed = _classMappingList.remove(vClassMapping);
++        return removed;
++    }
++
++    /**
++     * Method removeClassMappingAt.
++     * 
++     * @param index
++     * @return the element removed from the collection
++     */
++    public org.castor.jdo.conf.ClassMapping removeClassMappingAt(
++            final int index) {
++        java.lang.Object obj = this._classMappingList.remove(index);
++        return (org.castor.jdo.conf.ClassMapping) obj;
++    }
++
++    /**
++     * Method removeMapping.
++     * 
++     * @param vMapping
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removeMapping(
++            final org.castor.jdo.conf.Mapping vMapping) {
++        boolean removed = _mappingList.remove(vMapping);
++        return removed;
++    }
++
++    /**
++     * Method removeMappingAt.
++     * 
++     * @param index
++     * @return the element removed from the collection
++     */
++    public org.castor.jdo.conf.Mapping removeMappingAt(
++            final int index) {
++        java.lang.Object obj = this._mappingList.remove(index);
++        return (org.castor.jdo.conf.Mapping) obj;
++    }
++
++    /**
++     * Method removePackageMapping.
++     * 
++     * @param vPackageMapping
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removePackageMapping(
++            final org.castor.jdo.conf.PackageMapping vPackageMapping) {
++        boolean removed = _packageMappingList.remove(vPackageMapping);
++        return removed;
++    }
++
++    /**
++     * Method removePackageMappingAt.
++     * 
++     * @param index
++     * @return the element removed from the collection
++     */
++    public org.castor.jdo.conf.PackageMapping removePackageMappingAt(
++            final int index) {
++        java.lang.Object obj = this._packageMappingList.remove(index);
++        return (org.castor.jdo.conf.PackageMapping) obj;
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vClassMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setClassMapping(
++            final int index,
++            final org.castor.jdo.conf.ClassMapping vClassMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._classMappingList.size()) {
++            throw new IndexOutOfBoundsException("setClassMapping: Index value '" + index + "' not in range [0.." + (this._classMappingList.size() - 1) + "]");
++        }
++
++        this._classMappingList.set(index, vClassMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param vClassMappingArray
++     */
++    public void setClassMapping(
++            final org.castor.jdo.conf.ClassMapping[] vClassMappingArray) {
++        //-- copy array
++        _classMappingList.clear();
++
++        for (int i = 0; i < vClassMappingArray.length; i++) {
++                this._classMappingList.add(vClassMappingArray[i]);
++        }
++    }
++
++    /**
++     * Sets the value of field 'databaseChoice'.
++     * 
++     * @param databaseChoice the value of field 'databaseChoice'.
++     */
++    public void setDatabaseChoice(
++            final org.castor.jdo.conf.DatabaseChoice databaseChoice) {
++        this._databaseChoice = databaseChoice;
++    }
++
++    /**
++     * Sets the value of field 'engine'.
++     * 
++     * @param engine the value of field 'engine'.
++     */
++    public void setEngine(
++            final java.lang.String engine) {
++        this._engine = engine;
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setMapping(
++            final int index,
++            final org.castor.jdo.conf.Mapping vMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._mappingList.size()) {
++            throw new IndexOutOfBoundsException("setMapping: Index value '" + index + "' not in range [0.." + (this._mappingList.size() - 1) + "]");
++        }
++
++        this._mappingList.set(index, vMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param vMappingArray
++     */
++    public void setMapping(
++            final org.castor.jdo.conf.Mapping[] vMappingArray) {
++        //-- copy array
++        _mappingList.clear();
++
++        for (int i = 0; i < vMappingArray.length; i++) {
++                this._mappingList.add(vMappingArray[i]);
++        }
++    }
++
++    /**
++     * Sets the value of field 'name'.
++     * 
++     * @param name the value of field 'name'.
++     */
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vPackageMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setPackageMapping(
++            final int index,
++            final org.castor.jdo.conf.PackageMapping vPackageMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._packageMappingList.size()) {
++            throw new IndexOutOfBoundsException("setPackageMapping: Index value '" + index + "' not in range [0.." + (this._packageMappingList.size() - 1) + "]");
++        }
++
++        this._packageMappingList.set(index, vPackageMapping);
++    }
++
++    /**
++     * 
++     * 
++     * @param vPackageMappingArray
++     */
++    public void setPackageMapping(
++            final org.castor.jdo.conf.PackageMapping[] vPackageMappingArray) {
++        //-- copy array
++        _packageMappingList.clear();
++
++        for (int i = 0; i < vPackageMappingArray.length; i++) {
++                this._packageMappingList.add(vPackageMappingArray[i]);
++        }
++    }
++
++    /**
++     * Method unmarshal.
++     * 
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.castor.jdo.conf.Database
++     */
++    public static org.castor.jdo.conf.Database unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.castor.jdo.conf.Database) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Database.class, reader);
++    }
++
++    /**
++     * 
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/Driver.java
+@@ -0,0 +1,330 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.castor.jdo.conf;
++
++/**
++ * Class Driver.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class Driver implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _url.
++     */
++    private java.lang.String _url;
++
++    /**
++     * Field _className.
++     */
++    private java.lang.String _className;
++
++    /**
++     * Field _paramList.
++     */
++    private java.util.List<org.castor.jdo.conf.Param> _paramList;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public Driver() {
++        super();
++        this._paramList = new java.util.ArrayList<org.castor.jdo.conf.Param>();
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * 
++     * 
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addParam(
++            final org.castor.jdo.conf.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        this._paramList.add(vParam);
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addParam(
++            final int index,
++            final org.castor.jdo.conf.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        this._paramList.add(index, vParam);
++    }
++
++    /**
++     * Method enumerateParam.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
++     */
++    public java.util.Enumeration<? extends org.castor.jdo.conf.Param> enumerateParam(
++    ) {
++        return java.util.Collections.enumeration(this._paramList);
++    }
++
++    /**
++     * Returns the value of field 'className'.
++     * 
++     * @return the value of field 'ClassName'.
++     */
++    public java.lang.String getClassName(
++    ) {
++        return this._className;
++    }
++
++    /**
++     * Method getParam.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the org.castor.jdo.conf.Param at the
++     * given index
++     */
++    public org.castor.jdo.conf.Param getParam(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._paramList.size()) {
++            throw new IndexOutOfBoundsException("getParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
++        }
++
++        return (org.castor.jdo.conf.Param) _paramList.get(index);
++    }
++
++    /**
++     * Method getParam.Returns the contents of the collection in an
++     * Array.  <p>Note:  Just in case the collection contents are
++     * changing in another thread, we pass a 0-length Array of the
++     * correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
++     * 
++     * @return this collection as an Array
++     */
++    public org.castor.jdo.conf.Param[] getParam(
++    ) {
++        org.castor.jdo.conf.Param[] array = new org.castor.jdo.conf.Param[0];
++        return (org.castor.jdo.conf.Param[]) this._paramList.toArray(array);
++    }
++
++    /**
++     * Method getParamCount.
++     * 
++     * @return the size of this collection
++     */
++    public int getParamCount(
++    ) {
++        return this._paramList.size();
++    }
++
++    /**
++     * Returns the value of field 'url'.
++     * 
++     * @return the value of field 'Url'.
++     */
++    public java.lang.String getUrl(
++    ) {
++        return this._url;
++    }
++
++    /**
++     * Method isValid.
++     * 
++     * @return true if this object is valid according to the schema
++     */
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
++    }
++
++    /**
++     * Method iterateParam.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.castor.jdo.conf.Param> iterateParam(
++    ) {
++        return this._paramList.iterator();
++    }
++
++    /**
++     * 
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    }
++
++    /**
++     * 
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     */
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    }
++
++    /**
++     */
++    public void removeAllParam(
++    ) {
++        this._paramList.clear();
++    }
++
++    /**
++     * Method removeParam.
++     * 
++     * @param vParam
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removeParam(
++            final org.castor.jdo.conf.Param vParam) {
++        boolean removed = _paramList.remove(vParam);
++        return removed;
++    }
++
++    /**
++     * Method removeParamAt.
++     * 
++     * @param index
++     * @return the element removed from the collection
++     */
++    public org.castor.jdo.conf.Param removeParamAt(
++            final int index) {
++        java.lang.Object obj = this._paramList.remove(index);
++        return (org.castor.jdo.conf.Param) obj;
++    }
++
++    /**
++     * Sets the value of field 'className'.
++     * 
++     * @param className the value of field 'className'.
++     */
++    public void setClassName(
++            final java.lang.String className) {
++        this._className = className;
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setParam(
++            final int index,
++            final org.castor.jdo.conf.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._paramList.size()) {
++            throw new IndexOutOfBoundsException("setParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
++        }
++
++        this._paramList.set(index, vParam);
++    }
++
++    /**
++     * 
++     * 
++     * @param vParamArray
++     */
++    public void setParam(
++            final org.castor.jdo.conf.Param[] vParamArray) {
++        //-- copy array
++        _paramList.clear();
++
++        for (int i = 0; i < vParamArray.length; i++) {
++                this._paramList.add(vParamArray[i]);
++        }
++    }
++
++    /**
++     * Sets the value of field 'url'.
++     * 
++     * @param url the value of field 'url'.
++     */
++    public void setUrl(
++            final java.lang.String url) {
++        this._url = url;
++    }
++
++    /**
++     * Method unmarshal.
++     * 
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.castor.jdo.conf.Driver
++     */
++    public static org.castor.jdo.conf.Driver unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.castor.jdo.conf.Driver) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.Driver.class, reader);
++    }
++
++    /**
++     * 
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/MappingDescriptor.java
+@@ -0,0 +1,213 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.castor.jdo.conf.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.castor.jdo.conf.Mapping;
++
++/**
++ * Class MappingDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class MappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
++
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
++
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
++
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
++
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public MappingDescriptor() {
++        super();
++        _nsURI = "http://castor.org/JDO";
++        _xmlName = "mapping";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _href
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_href", "href", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Mapping target = (Mapping) object;
++                return target.getHref();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Mapping target = (Mapping) object;
++                    target.setHref( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _href
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
++
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
++     */
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
++
++    /**
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
++     */
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
++    }
++
++    /**
++     * Method getJavaClass.
++     * 
++     * @return the Java class represented by this descriptor.
++     */
++    @Override()
++    public java.lang.Class getJavaClass(
++    ) {
++        return org.castor.jdo.conf.Mapping.class;
++    }
++
++    /**
++     * Method getNameSpacePrefix.
++     * 
++     * @return the namespace prefix to use when marshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpacePrefix(
++    ) {
++        return _nsPrefix;
++    }
++
++    /**
++     * Method getNameSpaceURI.
++     * 
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
++    }
++
++    /**
++     * Method getValidator.
++     * 
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
++     */
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
++    }
++
++    /**
++     * Method getXMLName.
++     * 
++     * @return the XML Name for the Class being described.
++     */
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
++    }
++
++    /**
++     * Method isElementDefinition.
++     * 
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
++     */
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/PackageMappingDescriptor.java
+@@ -0,0 +1,213 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.castor.jdo.conf.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.castor.jdo.conf.PackageMapping;
++
++/**
++ * Class PackageMappingDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class PackageMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
++
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
++
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
++
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
++
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public PackageMappingDescriptor() {
++        super();
++        _nsURI = "http://castor.org/JDO";
++        _xmlName = "package";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                PackageMapping target = (PackageMapping) object;
++                return target.getName();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    PackageMapping target = (PackageMapping) object;
++                    target.setName( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
++
 +    }
 +
 +
@@ -2338,148 +3434,104 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
-+     * Returns the value of field 'dataSource'.
++     * Method getAccessMode.
 +     * 
-+     * @return the value of field 'DataSource'.
++     * @return the access mode specified for this class.
 +     */
-+    public org.castor.jdo.conf.DataSource getDataSource(
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
 +    ) {
-+        return this._dataSource;
++        return null;
 +    }
 +
 +    /**
-+     * Returns the value of field 'driver'.
++     * Method getIdentity.
 +     * 
-+     * @return the value of field 'Driver'.
++     * @return the identity field, null if this class has no
++     * identity.
 +     */
-+    public org.castor.jdo.conf.Driver getDriver(
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
 +    ) {
-+        return this._driver;
++        return _identity;
 +    }
 +
 +    /**
-+     * Returns the value of field 'jndi'.
++     * Method getJavaClass.
 +     * 
-+     * @return the value of field 'Jndi'.
++     * @return the Java class represented by this descriptor.
 +     */
-+    public org.castor.jdo.conf.Jndi getJndi(
++    @Override()
++    public java.lang.Class getJavaClass(
 +    ) {
-+        return this._jndi;
++        return org.castor.jdo.conf.PackageMapping.class;
 +    }
 +
 +    /**
-+     * Method isValid.
++     * Method getNameSpacePrefix.
 +     * 
-+     * @return true if this object is valid according to the schema
++     * @return the namespace prefix to use when marshaling as XML.
 +     */
-+    public boolean isValid(
++    @Override()
++    public java.lang.String getNameSpacePrefix(
 +    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
-+    }
-+
-+    /**
-+     * Sets the value of field 'dataSource'.
-+     * 
-+     * @param dataSource the value of field 'dataSource'.
-+     */
-+    public void setDataSource(
-+            final org.castor.jdo.conf.DataSource dataSource) {
-+        this._dataSource = dataSource;
++        return _nsPrefix;
 +    }
 +
 +    /**
-+     * Sets the value of field 'driver'.
++     * Method getNameSpaceURI.
 +     * 
-+     * @param driver the value of field 'driver'.
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
 +     */
-+    public void setDriver(
-+            final org.castor.jdo.conf.Driver driver) {
-+        this._driver = driver;
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
 +    }
 +
 +    /**
-+     * Sets the value of field 'jndi'.
++     * Method getValidator.
 +     * 
-+     * @param jndi the value of field 'jndi'.
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
 +     */
-+    public void setJndi(
-+            final org.castor.jdo.conf.Jndi jndi) {
-+        this._jndi = jndi;
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
 +    }
 +
 +    /**
-+     * Method unmarshal.
++     * Method getXMLName.
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.castor.jdo.conf.DatabaseChoice
++     * @return the XML Name for the Class being described.
 +     */
-+    public static org.castor.jdo.conf.DatabaseChoice unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.castor.jdo.conf.DatabaseChoice) org.exolab.castor.xml.Unmarshaller.unmarshal(org.castor.jdo.conf.DatabaseChoice.class, reader);
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
 +    }
 +
 +    /**
++     * Method isElementDefinition.
 +     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
 +    }
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/JndiDescriptor.java
-@@ -0,0 +1,213 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/TransactionDemarcationDescriptor.java
+@@ -0,0 +1,255 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -2490,14 +3542,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.Jndi;
++import org.castor.jdo.conf.TransactionDemarcation;
 +
 +/**
-+ * Class JndiDescriptor.
++ * Class TransactionDemarcationDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class JndiDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class TransactionDemarcationDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -2534,34 +3586,37 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public JndiDescriptor() {
++    public TransactionDemarcationDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "jndi";
++        _xmlName = "transaction-demarcation";
 +        _elementDefinition = true;
++
++        //-- set grouping compositor
++        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _mode
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_mode", "mode", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Jndi target = (Jndi) object;
-+                return target.getName();
++                TransactionDemarcation target = (TransactionDemarcation) object;
++                return target.getMode();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Jndi target = (Jndi) object;
-+                    target.setName( (java.lang.String) value);
++                    TransactionDemarcation target = (TransactionDemarcation) object;
++                    target.setMode( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -2578,7 +3633,7 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _mode
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
@@ -2590,6 +3645,45 @@ Last-Update: 2010-06-27
 +        desc.setValidator(fieldValidator);
 +        //-- initialize element descriptors
 +
++        //-- _transactionManager
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.TransactionManager.class, "_transactionManager", "transaction-manager", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                TransactionDemarcation target = (TransactionDemarcation) object;
++                return target.getTransactionManager();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    TransactionDemarcation target = (TransactionDemarcation) object;
++                    target.setTransactionManager( (org.castor.jdo.conf.TransactionManager) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("org.castor.jdo.conf.TransactionManager");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _transactionManager
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -2628,7 +3722,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.Jndi.class;
++        return org.castor.jdo.conf.TransactionDemarcation.class;
 +    }
 +
 +    /**
@@ -2691,11 +3785,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/TransactionDemarcationDescriptor.java
-@@ -0,0 +1,255 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DatabaseChoiceDescriptor.java
+@@ -0,0 +1,294 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -2706,14 +3800,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.TransactionDemarcation;
++import org.castor.jdo.conf.DatabaseChoice;
 +
 +/**
-+ * Class TransactionDemarcationDescriptor.
++ * Class DatabaseChoiceDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class TransactionDemarcationDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class DatabaseChoiceDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -2750,37 +3844,78 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public TransactionDemarcationDescriptor() {
++    public DatabaseChoiceDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "transaction-demarcation";
-+        _elementDefinition = true;
++        _elementDefinition = false;
 +
 +        //-- set grouping compositor
-+        setCompositorAsSequence();
++        setCompositorAsChoice();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _mode
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_mode", "mode", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
++        //-- initialize element descriptors
++
++        //-- _driver
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Driver.class, "_driver", "driver", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                DatabaseChoice target = (DatabaseChoice) object;
++                return target.getDriver();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    DatabaseChoice target = (DatabaseChoice) object;
++                    target.setDriver( (org.castor.jdo.conf.Driver) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("org.castor.jdo.conf.Driver");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _driver
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _dataSource
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.DataSource.class, "_dataSource", "data-source", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                TransactionDemarcation target = (TransactionDemarcation) object;
-+                return target.getMode();
++                DatabaseChoice target = (DatabaseChoice) object;
++                return target.getDataSource();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    TransactionDemarcation target = (TransactionDemarcation) object;
-+                    target.setMode( (java.lang.String) value);
++                    DatabaseChoice target = (DatabaseChoice) object;
++                    target.setDataSource( (org.castor.jdo.conf.DataSource) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -2791,41 +3926,37 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("org.castor.jdo.conf.DataSource");
 +        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
 +        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _mode
++        //-- validation code for: _dataSource
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
-+        //-- _transactionManager
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.TransactionManager.class, "_transactionManager", "transaction-manager", org.exolab.castor.xml.NodeType.Element);
++        //-- _jndi
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Jndi.class, "_jndi", "jndi", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                TransactionDemarcation target = (TransactionDemarcation) object;
-+                return target.getTransactionManager();
++                DatabaseChoice target = (DatabaseChoice) object;
++                return target.getJndi();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    TransactionDemarcation target = (TransactionDemarcation) object;
-+                    target.setTransactionManager( (org.castor.jdo.conf.TransactionManager) value);
++                    DatabaseChoice target = (DatabaseChoice) object;
++                    target.setJndi( (org.castor.jdo.conf.Jndi) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -2833,18 +3964,20 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.TransactionManager();
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("org.castor.jdo.conf.TransactionManager");
++        desc.setSchemaType("org.castor.jdo.conf.Jndi");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _transactionManager
++        //-- validation code for: _jndi
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
@@ -2886,7 +4019,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.TransactionDemarcation.class;
++        return org.castor.jdo.conf.DatabaseChoice.class;
 +    }
 +
 +    /**
@@ -2949,11 +4082,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/JdoConfDescriptor.java
-@@ -0,0 +1,303 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DataSourceDescriptor.java
+@@ -0,0 +1,265 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -2964,14 +4097,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.JdoConf;
++import org.castor.jdo.conf.DataSource;
 +
 +/**
-+ * Class JdoConfDescriptor.
++ * Class DataSourceDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class JdoConfDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class DataSourceDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -3008,10 +4141,10 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public JdoConfDescriptor() {
++    public DataSourceDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "jdo-conf";
++        _xmlName = "data-source";
 +        _elementDefinition = true;
 +
 +        //-- set grouping compositor
@@ -3021,24 +4154,24 @@ Last-Update: 2010-06-27
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _className
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_className", "class-name", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                JdoConf target = (JdoConf) object;
-+                return target.getName();
++                DataSource target = (DataSource) object;
++                return target.getClassName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    JdoConf target = (JdoConf) object;
-+                    target.setName( (java.lang.String) value);
++                    DataSource target = (DataSource) object;
++                    target.setClassName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -3051,11 +4184,13 @@ Last-Update: 2010-06-27
 +        };
 +        desc.setSchemaType("string");
 +        desc.setHandler(handler);
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _className
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
 +            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
@@ -3065,31 +4200,31 @@ Last-Update: 2010-06-27
 +        desc.setValidator(fieldValidator);
 +        //-- initialize element descriptors
 +
-+        //-- _databaseList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Database.class, "_databaseList", "database", org.exolab.castor.xml.NodeType.Element);
++        //-- _paramList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                JdoConf target = (JdoConf) object;
-+                return target.getDatabase();
++                DataSource target = (DataSource) object;
++                return target.getParam();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    JdoConf target = (JdoConf) object;
-+                    target.addDatabase( (org.castor.jdo.conf.Database) value);
++                    DataSource target = (DataSource) object;
++                    target.addParam( (org.castor.jdo.conf.Param) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
-+                    JdoConf target = (JdoConf) object;
-+                    target.removeAllDatabase();
++                    DataSource target = (DataSource) object;
++                    target.removeAllParam();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -3097,60 +4232,20 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Database();
++                return null;
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.castor.jdo.conf.Database");
++        desc.setComponentType("org.castor.jdo.conf.Param");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setRequired(true);
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _databaseList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _transactionDemarcation
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.TransactionDemarcation.class, "_transactionDemarcation", "transaction-demarcation", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                JdoConf target = (JdoConf) object;
-+                return target.getTransactionDemarcation();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    JdoConf target = (JdoConf) object;
-+                    target.setTransactionDemarcation( (org.castor.jdo.conf.TransactionDemarcation) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.TransactionDemarcation();
-+            }
-+        };
-+        desc.setSchemaType("org.castor.jdo.conf.TransactionDemarcation");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
-+
-+        //-- validation code for: _transactionDemarcation
++        //-- validation code for: _paramList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
@@ -3192,7 +4287,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.JdoConf.class;
++        return org.castor.jdo.conf.DataSource.class;
 +    }
 +
 +    /**
@@ -3255,11 +4350,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DriverDescriptor.java
-@@ -0,0 +1,309 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/ParamDescriptor.java
+@@ -0,0 +1,257 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -3270,14 +4365,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.Driver;
++import org.castor.jdo.conf.Param;
 +
 +/**
-+ * Class DriverDescriptor.
++ * Class ParamDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class DriverDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class ParamDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -3314,37 +4409,34 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public DriverDescriptor() {
++    public ParamDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "driver";
++        _xmlName = "param";
 +        _elementDefinition = true;
-+
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _url
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_url", "url", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Driver target = (Driver) object;
-+                return target.getUrl();
++                Param target = (Param) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Driver target = (Driver) object;
-+                    target.setUrl( (java.lang.String) value);
++                    Param target = (Param) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -3361,7 +4453,7 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _url
++        //-- validation code for: _name
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
@@ -3371,24 +4463,24 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _className
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_className", "class-name", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _value
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Driver target = (Driver) object;
-+                return target.getClassName();
++                Param target = (Param) object;
++                return target.getValue();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Driver target = (Driver) object;
-+                    target.setClassName( (java.lang.String) value);
++                    Param target = (Param) object;
++                    target.setValue( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -3405,7 +4497,7 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _className
++        //-- validation code for: _value
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
@@ -3417,55 +4509,6 @@ Last-Update: 2010-06-27
 +        desc.setValidator(fieldValidator);
 +        //-- initialize element descriptors
 +
-+        //-- _paramList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                Driver target = (Driver) object;
-+                return target.getParam();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    Driver target = (Driver) object;
-+                    target.addParam( (org.castor.jdo.conf.Param) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    Driver target = (Driver) object;
-+                    target.removeAllParam();
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Param();
-+            }
-+        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.castor.jdo.conf.Param");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setMultivalued(true);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
-+
-+        //-- validation code for: _paramList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -3504,7 +4547,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.Driver.class;
++        return org.castor.jdo.conf.Param.class;
 +    }
 +
 +    /**
@@ -3567,11 +4610,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DataSourceDescriptor.java
-@@ -0,0 +1,265 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/ClassMappingDescriptor.java
+@@ -0,0 +1,213 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -3582,14 +4625,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.DataSource;
++import org.castor.jdo.conf.ClassMapping;
 +
 +/**
-+ * Class DataSourceDescriptor.
++ * Class ClassMappingDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class DataSourceDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class ClassMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -3626,37 +4669,34 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public DataSourceDescriptor() {
++    public ClassMappingDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "data-source";
++        _xmlName = "class";
 +        _elementDefinition = true;
-+
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _className
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_className", "class-name", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                DataSource target = (DataSource) object;
-+                return target.getClassName();
++                ClassMapping target = (ClassMapping) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    DataSource target = (DataSource) object;
-+                    target.setClassName( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -3673,7 +4713,7 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _className
++        //-- validation code for: _name
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
@@ -3685,55 +4725,6 @@ Last-Update: 2010-06-27
 +        desc.setValidator(fieldValidator);
 +        //-- initialize element descriptors
 +
-+        //-- _paramList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                DataSource target = (DataSource) object;
-+                return target.getParam();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    DataSource target = (DataSource) object;
-+                    target.addParam( (org.castor.jdo.conf.Param) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    DataSource target = (DataSource) object;
-+                    target.removeAllParam();
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Param();
-+            }
-+        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.castor.jdo.conf.Param");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setMultivalued(true);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
-+
-+        //-- validation code for: _paramList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -3772,7 +4763,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.DataSource.class;
++        return org.castor.jdo.conf.ClassMapping.class;
 +    }
 +
 +    /**
@@ -3835,11 +4826,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DatabaseDescriptor.java
-@@ -0,0 +1,350 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DatabaseDescriptor.java
+@@ -0,0 +1,447 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -4069,21 +5060,118 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Mapping();
++                return null;
 +            }
 +        };
 +        desc.setSchemaType("list");
 +        desc.setComponentType("org.castor.jdo.conf.Mapping");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setRequired(true);
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
 +        //-- validation code for: _mappingList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _packageMappingList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.PackageMapping.class, "_packageMappingList", "package", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Database target = (Database) object;
++                return target.getPackageMapping();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Database target = (Database) object;
++                    target.addPackageMapping( (org.castor.jdo.conf.PackageMapping) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    Database target = (Database) object;
++                    target.removeAllPackageMapping();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.castor.jdo.conf.PackageMapping");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _packageMappingList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _classMappingList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.ClassMapping.class, "_classMappingList", "class", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Database target = (Database) object;
++                return target.getClassMapping();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Database target = (Database) object;
++                    target.addClassMapping( (org.castor.jdo.conf.ClassMapping) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    Database target = (Database) object;
++                    target.removeAllClassMapping();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.castor.jdo.conf.ClassMapping");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _classMappingList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
@@ -4188,11 +5276,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/TransactionManagerDescriptor.java
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/TransactionManagerDescriptor.java
 @@ -0,0 +1,263 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -4336,7 +5424,7 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Param();
++                return null;
 +            }
 +        };
 +        desc.setSchemaType("list");
@@ -4454,11 +5542,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/ParamDescriptor.java
-@@ -0,0 +1,257 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DriverDescriptor.java
+@@ -0,0 +1,309 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -4469,14 +5557,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.Param;
++import org.castor.jdo.conf.Driver;
 +
 +/**
-+ * Class ParamDescriptor.
++ * Class DriverDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class ParamDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class DriverDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -4513,34 +5601,37 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public ParamDescriptor() {
++    public DriverDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "param";
++        _xmlName = "driver";
 +        _elementDefinition = true;
++
++        //-- set grouping compositor
++        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _url
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_url", "url", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Param target = (Param) object;
-+                return target.getName();
++                Driver target = (Driver) object;
++                return target.getUrl();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Param target = (Param) object;
-+                    target.setName( (java.lang.String) value);
++                    Driver target = (Driver) object;
++                    target.setUrl( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -4557,7 +5648,7 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _url
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
@@ -4567,24 +5658,24 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _value
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _className
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_className", "class-name", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Param target = (Param) object;
-+                return target.getValue();
++                Driver target = (Driver) object;
++                return target.getClassName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Param target = (Param) object;
-+                    target.setValue( (java.lang.String) value);
++                    Driver target = (Driver) object;
++                    target.setClassName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -4601,18 +5692,67 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _value
++        //-- validation code for: _className
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
++
++        //-- _paramList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Driver target = (Driver) object;
++                return target.getParam();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Driver target = (Driver) object;
++                    target.addParam( (org.castor.jdo.conf.Param) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    Driver target = (Driver) object;
++                    target.removeAllParam();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.castor.jdo.conf.Param");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _paramList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
++        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
 +    }
 +
 +
@@ -4651,7 +5791,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.Param.class;
++        return org.castor.jdo.conf.Driver.class;
 +    }
 +
 +    /**
@@ -4714,11 +5854,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/DatabaseChoiceDescriptor.java
-@@ -0,0 +1,294 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/JndiDescriptor.java
+@@ -0,0 +1,213 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -4729,14 +5869,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.DatabaseChoice;
++import org.castor.jdo.conf.Jndi;
 +
 +/**
-+ * Class DatabaseChoiceDescriptor.
++ * Class JndiDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class DatabaseChoiceDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class JndiDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -4773,78 +5913,34 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public DatabaseChoiceDescriptor() {
++    public JndiDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _elementDefinition = false;
-+
-+        //-- set grouping compositor
-+        setCompositorAsChoice();
++        _xmlName = "jndi";
++        _elementDefinition = true;
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- initialize element descriptors
-+
-+        //-- _driver
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Driver.class, "_driver", "driver", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                DatabaseChoice target = (DatabaseChoice) object;
-+                return target.getDriver();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    DatabaseChoice target = (DatabaseChoice) object;
-+                    target.setDriver( (org.castor.jdo.conf.Driver) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Driver();
-+            }
-+        };
-+        desc.setSchemaType("org.castor.jdo.conf.Driver");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
-+
-+        //-- validation code for: _driver
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _dataSource
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.DataSource.class, "_dataSource", "data-source", org.exolab.castor.xml.NodeType.Element);
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                DatabaseChoice target = (DatabaseChoice) object;
-+                return target.getDataSource();
++                Jndi target = (Jndi) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    DatabaseChoice target = (DatabaseChoice) object;
-+                    target.setDataSource( (org.castor.jdo.conf.DataSource) value);
++                    Jndi target = (Jndi) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -4852,64 +5948,27 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.DataSource();
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("org.castor.jdo.conf.DataSource");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.org/JDO");
 +        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _dataSource
++        //-- validation code for: _name
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _jndi
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Jndi.class, "_jndi", "jndi", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                DatabaseChoice target = (DatabaseChoice) object;
-+                return target.getJndi();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    DatabaseChoice target = (DatabaseChoice) object;
-+                    target.setJndi( (org.castor.jdo.conf.Jndi) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.castor.jdo.conf.Jndi();
-+            }
-+        };
-+        desc.setSchemaType("org.castor.jdo.conf.Jndi");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.org/JDO");
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++        //-- initialize element descriptors
 +
-+        //-- validation code for: _jndi
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -4948,7 +6007,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.DatabaseChoice.class;
++        return org.castor.jdo.conf.Jndi.class;
 +    }
 +
 +    /**
@@ -5011,11 +6070,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/MappingDescriptor.java
-@@ -0,0 +1,213 @@
++++ castor-1.3.2/cpa/target/generated-sources/castor/org/castor/jdo/conf/descriptors/JdoConfDescriptor.java
+@@ -0,0 +1,303 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -5026,14 +6085,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.castor.jdo.conf.Mapping;
++import org.castor.jdo.conf.JdoConf;
 +
 +/**
-+ * Class MappingDescriptor.
++ * Class JdoConfDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class MappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class JdoConfDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -5070,34 +6129,37 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public MappingDescriptor() {
++    public JdoConfDescriptor() {
 +        super();
 +        _nsURI = "http://castor.org/JDO";
-+        _xmlName = "mapping";
++        _xmlName = "jdo-conf";
 +        _elementDefinition = true;
++
++        //-- set grouping compositor
++        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _href
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_href", "href", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Mapping target = (Mapping) object;
-+                return target.getHref();
++                JdoConf target = (JdoConf) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Mapping target = (Mapping) object;
-+                    target.setHref( (java.lang.String) value);
++                    JdoConf target = (JdoConf) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -5110,13 +6172,11 @@ Last-Update: 2010-06-27
 +        };
 +        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _href
++        //-- validation code for: _name
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
 +            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
@@ -5126,6 +6186,95 @@ Last-Update: 2010-06-27
 +        desc.setValidator(fieldValidator);
 +        //-- initialize element descriptors
 +
++        //-- _databaseList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.Database.class, "_databaseList", "database", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                JdoConf target = (JdoConf) object;
++                return target.getDatabase();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    JdoConf target = (JdoConf) object;
++                    target.addDatabase( (org.castor.jdo.conf.Database) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    JdoConf target = (JdoConf) object;
++                    target.removeAllDatabase();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.castor.jdo.conf.Database");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setRequired(true);
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _databaseList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _transactionDemarcation
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.castor.jdo.conf.TransactionDemarcation.class, "_transactionDemarcation", "transaction-demarcation", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                JdoConf target = (JdoConf) object;
++                return target.getTransactionDemarcation();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    JdoConf target = (JdoConf) object;
++                    target.setTransactionDemarcation( (org.castor.jdo.conf.TransactionDemarcation) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("org.castor.jdo.conf.TransactionDemarcation");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.org/JDO");
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _transactionDemarcation
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -5164,7 +6313,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.castor.jdo.conf.Mapping.class;
++        return org.castor.jdo.conf.JdoConf.class;
 +    }
 +
 +    /**
diff --git a/debian/patches/add_xml_generated_sources.diff b/debian/patches/add_xml_generated_sources.diff
index dc12f68..847d234 100644
--- a/debian/patches/add_xml_generated_sources.diff
+++ b/debian/patches/add_xml_generated_sources.diff
@@ -6,15 +6,15 @@ Description: add autogenerated sources to xml module
  packaged and when it gets accepted in the archive, this package will re rebuilt
  with that plugin and this patch will be removed.
 Author: Miguel Landaeta <miguel at miguel.cc>
-Forwarded: not-needed
-Last-Update: 2010-06-27
+Forwarded: no
+Last-Update: 2012-01-21
 
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/Ldap.java
-@@ -0,0 +1,138 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/FieldHandlerDef.java
+@@ -0,0 +1,331 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -22,12 +22,12 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class Ldap.
++ * Class FieldHandlerDef.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Ldap implements java.io.Serializable {
++public class FieldHandlerDef implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -39,13 +39,24 @@ Last-Update: 2010-06-27
 +     */
 +    private java.lang.String _name;
 +
++    /**
++     * Field _clazz.
++     */
++    private java.lang.String _clazz;
++
++    /**
++     * Field _paramList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.Param> _paramList;
++
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Ldap() {
++    public FieldHandlerDef() {
 +        super();
++        this._paramList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Param>();
 +    }
 +
 +
@@ -54,6 +65,55 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
++     * 
++     * 
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addParam(
++            final org.exolab.castor.mapping.xml.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        this._paramList.add(vParam);
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addParam(
++            final int index,
++            final org.exolab.castor.mapping.xml.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        this._paramList.add(index, vParam);
++    }
++
++    /**
++     * Method enumerateParam.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
++     */
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Param> enumerateParam(
++    ) {
++        return java.util.Collections.enumeration(this._paramList);
++    }
++
++    /**
++     * Returns the value of field 'clazz'.
++     * 
++     * @return the value of field 'Clazz'.
++     */
++    public java.lang.String getClazz(
++    ) {
++        return this._clazz;
++    }
++
++    /**
 +     * Returns the value of field 'name'.
 +     * 
 +     * @return the value of field 'Name'.
@@ -64,6 +124,51 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Method getParam.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the org.exolab.castor.mapping.xml.Param
++     * at the given index
++     */
++    public org.exolab.castor.mapping.xml.Param getParam(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._paramList.size()) {
++            throw new IndexOutOfBoundsException("getParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
++        }
++
++        return (org.exolab.castor.mapping.xml.Param) _paramList.get(index);
++    }
++
++    /**
++     * Method getParam.Returns the contents of the collection in an
++     * Array.  <p>Note:  Just in case the collection contents are
++     * changing in another thread, we pass a 0-length Array of the
++     * correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
++     * 
++     * @return this collection as an Array
++     */
++    public org.exolab.castor.mapping.xml.Param[] getParam(
++    ) {
++        org.exolab.castor.mapping.xml.Param[] array = new org.exolab.castor.mapping.xml.Param[0];
++        return (org.exolab.castor.mapping.xml.Param[]) this._paramList.toArray(array);
++    }
++
++    /**
++     * Method getParamCount.
++     * 
++     * @return the size of this collection
++     */
++    public int getParamCount(
++    ) {
++        return this._paramList.size();
++    }
++
++    /**
 +     * Method isValid.
 +     * 
 +     * @return true if this object is valid according to the schema
@@ -79,6 +184,17 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Method iterateParam.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Param> iterateParam(
++    ) {
++        return this._paramList.iterator();
++    }
++
++    /**
 +     * 
 +     * 
 +     * @param out
@@ -111,6 +227,47 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     */
++    public void removeAllParam(
++    ) {
++        this._paramList.clear();
++    }
++
++    /**
++     * Method removeParam.
++     * 
++     * @param vParam
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removeParam(
++            final org.exolab.castor.mapping.xml.Param vParam) {
++        boolean removed = _paramList.remove(vParam);
++        return removed;
++    }
++
++    /**
++     * Method removeParamAt.
++     * 
++     * @param index
++     * @return the element removed from the collection
++     */
++    public org.exolab.castor.mapping.xml.Param removeParamAt(
++            final int index) {
++        java.lang.Object obj = this._paramList.remove(index);
++        return (org.exolab.castor.mapping.xml.Param) obj;
++    }
++
++    /**
++     * Sets the value of field 'clazz'.
++     * 
++     * @param clazz the value of field 'clazz'.
++     */
++    public void setClazz(
++            final java.lang.String clazz) {
++        this._clazz = clazz;
++    }
++
++    /**
 +     * Sets the value of field 'name'.
 +     * 
 +     * @param name the value of field 'name'.
@@ -121,6 +278,41 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * 
++     * 
++     * @param index
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setParam(
++            final int index,
++            final org.exolab.castor.mapping.xml.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._paramList.size()) {
++            throw new IndexOutOfBoundsException("setParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
++        }
++
++        this._paramList.set(index, vParam);
++    }
++
++    /**
++     * 
++     * 
++     * @param vParamArray
++     */
++    public void setParam(
++            final org.exolab.castor.mapping.xml.Param[] vParamArray) {
++        //-- copy array
++        _paramList.clear();
++
++        for (int i = 0; i < vParamArray.length; i++) {
++                this._paramList.add(vParamArray[i]);
++        }
++    }
++
++    /**
 +     * Method unmarshal.
 +     * 
 +     * @param reader
@@ -128,12 +320,13 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.exolab.castor.mapping.xml.Ldap
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.FieldHandlerDef
 +     */
-+    public static org.exolab.castor.mapping.xml.Ldap unmarshal(
++    public static org.exolab.castor.mapping.xml.FieldHandlerDef unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.Ldap) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Ldap.class, reader);
++        return (org.exolab.castor.mapping.xml.FieldHandlerDef) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.FieldHandlerDef.class, reader);
 +    }
 +
 +    /**
@@ -151,11 +344,34 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/FieldMapping.java
-@@ -0,0 +1,927 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/.castor.cdr
+@@ -0,0 +1,20 @@
++#Sun Jan 22 02:11:58 UTC 2012
++org.exolab.castor.mapping.xml.BindXml=org.exolab.castor.mapping.xml.descriptors.BindXmlDescriptor
++org.exolab.castor.mapping.xml.FieldHandlerDef=org.exolab.castor.mapping.xml.descriptors.FieldHandlerDefDescriptor
++org.exolab.castor.mapping.xml.Container=org.exolab.castor.mapping.xml.descriptors.ContainerDescriptor
++org.exolab.castor.mapping.xml.Include=org.exolab.castor.mapping.xml.descriptors.IncludeDescriptor
++org.exolab.castor.mapping.xml.Param=org.exolab.castor.mapping.xml.descriptors.ParamDescriptor
++org.exolab.castor.mapping.xml.Ldap=org.exolab.castor.mapping.xml.descriptors.LdapDescriptor
++org.exolab.castor.mapping.xml.ClassChoice=org.exolab.castor.mapping.xml.descriptors.ClassChoiceDescriptor
++org.exolab.castor.mapping.xml.NamedQuery=org.exolab.castor.mapping.xml.descriptors.NamedQueryDescriptor
++org.exolab.castor.mapping.xml.ClassMapping=org.exolab.castor.mapping.xml.descriptors.ClassMappingDescriptor
++org.exolab.castor.mapping.xml.CacheTypeMapping=org.exolab.castor.mapping.xml.descriptors.CacheTypeMappingDescriptor
++org.exolab.castor.mapping.xml.FieldMapping=org.exolab.castor.mapping.xml.descriptors.FieldMappingDescriptor
++org.exolab.castor.mapping.xml.MappingRoot=org.exolab.castor.mapping.xml.descriptors.MappingRootDescriptor
++org.exolab.castor.mapping.xml.Sql=org.exolab.castor.mapping.xml.descriptors.SqlDescriptor
++org.exolab.castor.mapping.xml.KeyGeneratorDef=org.exolab.castor.mapping.xml.descriptors.KeyGeneratorDefDescriptor
++org.exolab.castor.mapping.xml.MapTo=org.exolab.castor.mapping.xml.descriptors.MapToDescriptor
++org.exolab.castor.mapping.xml.Property=org.exolab.castor.mapping.xml.descriptors.PropertyDescriptor
++org.exolab.castor.mapping.xml.PropertyType=org.exolab.castor.mapping.xml.descriptors.PropertyTypeDescriptor
++org.exolab.castor.mapping.xml.QueryHint=org.exolab.castor.mapping.xml.descriptors.QueryHintDescriptor
++org.exolab.castor.mapping.xml.NamedNativeQuery=org.exolab.castor.mapping.xml.descriptors.NamedNativeQueryDescriptor
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/MapTo.java
+@@ -0,0 +1,335 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -163,14 +379,15 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * The 'field' element is used to describe the property of a Java
-+ * object.
++ * The 'map-to' element is used for specifying the name of the item
++ * 
++ *  that should be associated with the given Java object.
 + *  
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class FieldMapping implements java.io.Serializable {
++public class MapTo implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -178,166 +395,53 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * A required attribute used to identify the name of the
-+     * property. 
++     * An optional attribute used to specify the name of the table 
++     *  to which the given Java object is associated.
 +     *  
 +     */
-+    private java.lang.String _name;
++    private java.lang.String _table;
 +
 +    /**
-+     * An optional attribute used to identify the type of the
-+     * property.
-+     *  
++     * Field _xml.
 +     */
-+    private java.lang.String _type;
++    private java.lang.String _xml;
 +
 +    /**
-+     * Field _required.
++     * Field _nsUri.
 +     */
-+    private boolean _required = false;
++    private java.lang.String _nsUri;
 +
 +    /**
-+     * keeps track of state for field: _required
++     * Field _nsPrefix.
 +     */
-+    private boolean _has_required;
++    private java.lang.String _nsPrefix;
 +
 +    /**
-+     * Field _transient.
-+     */
-+    private boolean _transient = false;
-+
-+    /**
-+     * keeps track of state for field: _transient
-+     */
-+    private boolean _has_transient;
-+
-+    /**
-+     * Field _nillable.
-+     */
-+    private boolean _nillable = false;
-+
-+    /**
-+     * keeps track of state for field: _nillable
-+     */
-+    private boolean _has_nillable;
-+
-+    /**
-+     * Field _direct.
-+     */
-+    private boolean _direct = false;
-+
-+    /**
-+     * keeps track of state for field: _direct
-+     */
-+    private boolean _has_direct;
-+
-+    /**
-+     * Field _lazy.
-+     */
-+    private boolean _lazy = false;
-+
-+    /**
-+     * keeps track of state for field: _lazy
-+     */
-+    private boolean _has_lazy;
-+
-+    /**
-+     * Indicates whether the field should be treated as a
-+     * container, 
-+     *  i.e. only it's fields should be persisted, but not the
-+     * containing 
-+     *  class itself. In this case, the container attribute should
-+     *  be set to true (supported in Castor XML only).
-+     *  
-+     */
-+    private boolean _container;
-+
-+    /**
-+     * keeps track of state for field: _container
-+     */
-+    private boolean _has_container;
-+
-+    /**
-+     * Field _getMethod.
-+     */
-+    private java.lang.String _getMethod;
-+
-+    /**
-+     * Field _hasMethod.
-+     */
-+    private java.lang.String _hasMethod;
-+
-+    /**
-+     * Field _setMethod.
-+     */
-+    private java.lang.String _setMethod;
-+
-+    /**
-+     * Field _createMethod.
-+     */
-+    private java.lang.String _createMethod;
-+
-+    /**
-+     * Field _handler.
-+     */
-+    private java.lang.String _handler;
-+
-+    /**
-+     * An optional attribute used to specify the type of the
-+     * collection.
-+     *  
-+     */
-+    private org.exolab.castor.mapping.xml.types.FieldMappingCollectionType _collection;
-+
-+    /**
-+     * Field _comparator.
-+     */
-+    private java.lang.String _comparator;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private boolean _identity = false;
-+
-+    /**
-+     * keeps track of state for field: _identity
-+     */
-+    private boolean _has_identity;
-+
-+    /**
-+     * Field _description.
++     * Field _elementDefinition.
 +     */
-+    private java.lang.String _description;
++    private boolean _elementDefinition = false;
 +
 +    /**
-+     * The 'sql' element is used to store information about the
-+     * database 
-+     *  column to which a Java object is mapped to.
-+     *  
++     * keeps track of state for field: _elementDefinition
 +     */
-+    private org.exolab.castor.mapping.xml.Sql _sql;
++    private boolean _has_elementDefinition;
 +
 +    /**
-+     * The 'bind-xml' element is used for specifying XML specific
-+     * databinding
-+     *  properties and behavior for a specific field. 'bind-xml'
-+     * may only appear
-+     *  as a child of a 'field' element.
-+     *  
++     * Field _ldapDn.
 +     */
-+    private org.exolab.castor.mapping.xml.BindXml _bindXml;
++    private java.lang.String _ldapDn;
 +
 +    /**
-+     * Field _ldap.
++     * Field _ldapOc.
 +     */
-+    private org.exolab.castor.mapping.xml.Ldap _ldap;
++    private java.lang.String _ldapOc;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public FieldMapping() {
++    public MapTo() {
 +        super();
 +    }
 +
@@ -348,925 +452,998 @@ Last-Update: 2010-06-27
 +
 +    /**
 +     */
-+    public void deleteContainer(
-+    ) {
-+        this._has_container= false;
-+    }
-+
-+    /**
-+     */
-+    public void deleteDirect(
++    public void deleteElementDefinition(
 +    ) {
-+        this._has_direct= false;
++        this._has_elementDefinition= false;
 +    }
 +
 +    /**
++     * Returns the value of field 'elementDefinition'.
++     * 
++     * @return the value of field 'ElementDefinition'.
 +     */
-+    public void deleteIdentity(
++    public boolean getElementDefinition(
 +    ) {
-+        this._has_identity= false;
++        return this._elementDefinition;
 +    }
 +
 +    /**
++     * Returns the value of field 'ldapDn'.
++     * 
++     * @return the value of field 'LdapDn'.
 +     */
-+    public void deleteLazy(
++    public java.lang.String getLdapDn(
 +    ) {
-+        this._has_lazy= false;
++        return this._ldapDn;
 +    }
 +
 +    /**
++     * Returns the value of field 'ldapOc'.
++     * 
++     * @return the value of field 'LdapOc'.
 +     */
-+    public void deleteNillable(
++    public java.lang.String getLdapOc(
 +    ) {
-+        this._has_nillable= false;
++        return this._ldapOc;
 +    }
 +
 +    /**
++     * Returns the value of field 'nsPrefix'.
++     * 
++     * @return the value of field 'NsPrefix'.
 +     */
-+    public void deleteRequired(
++    public java.lang.String getNsPrefix(
 +    ) {
-+        this._has_required= false;
++        return this._nsPrefix;
 +    }
 +
 +    /**
++     * Returns the value of field 'nsUri'.
++     * 
++     * @return the value of field 'NsUri'.
 +     */
-+    public void deleteTransient(
++    public java.lang.String getNsUri(
 +    ) {
-+        this._has_transient= false;
++        return this._nsUri;
 +    }
 +
 +    /**
-+     * Returns the value of field 'bindXml'. The field 'bindXml'
-+     * has the following description: The 'bind-xml' element is
-+     * used for specifying XML specific databinding
-+     *  properties and behavior for a specific field. 'bind-xml'
-+     * may only appear
-+     *  as a child of a 'field' element.
++     * Returns the value of field 'table'. The field 'table' has
++     * the following description: An optional attribute used to
++     * specify the name of the table 
++     *  to which the given Java object is associated.
 +     *  
 +     * 
-+     * @return the value of field 'BindXml'.
++     * @return the value of field 'Table'.
 +     */
-+    public org.exolab.castor.mapping.xml.BindXml getBindXml(
++    public java.lang.String getTable(
 +    ) {
-+        return this._bindXml;
++        return this._table;
 +    }
 +
 +    /**
-+     * Returns the value of field 'collection'. The field
-+     * 'collection' has the following description: An optional
-+     * attribute used to specify the type of the collection.
-+     *  
++     * Returns the value of field 'xml'.
 +     * 
-+     * @return the value of field 'Collection'.
++     * @return the value of field 'Xml'.
 +     */
-+    public org.exolab.castor.mapping.xml.types.FieldMappingCollectionType getCollection(
++    public java.lang.String getXml(
 +    ) {
-+        return this._collection;
++        return this._xml;
 +    }
 +
 +    /**
-+     * Returns the value of field 'comparator'.
++     * Method hasElementDefinition.
 +     * 
-+     * @return the value of field 'Comparator'.
++     * @return true if at least one ElementDefinition has been added
 +     */
-+    public java.lang.String getComparator(
++    public boolean hasElementDefinition(
 +    ) {
-+        return this._comparator;
++        return this._has_elementDefinition;
 +    }
 +
 +    /**
-+     * Returns the value of field 'container'. The field
-+     * 'container' has the following description: Indicates whether
-+     * the field should be treated as a container, 
-+     *  i.e. only it's fields should be persisted, but not the
-+     * containing 
-+     *  class itself. In this case, the container attribute should
-+     *  be set to true (supported in Castor XML only).
-+     *  
++     * Returns the value of field 'elementDefinition'.
 +     * 
-+     * @return the value of field 'Container'.
++     * @return the value of field 'ElementDefinition'.
 +     */
-+    public boolean getContainer(
++    public boolean isElementDefinition(
 +    ) {
-+        return this._container;
++        return this._elementDefinition;
 +    }
 +
 +    /**
-+     * Returns the value of field 'createMethod'.
++     * Method isValid.
 +     * 
-+     * @return the value of field 'CreateMethod'.
++     * @return true if this object is valid according to the schema
 +     */
-+    public java.lang.String getCreateMethod(
++    public boolean isValid(
 +    ) {
-+        return this._createMethod;
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
-+     * Returns the value of field 'description'.
 +     * 
-+     * @return the value of field 'Description'.
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public java.lang.String getDescription(
-+    ) {
-+        return this._description;
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
-+     * Returns the value of field 'direct'.
 +     * 
-+     * @return the value of field 'Direct'.
-+     */
-+    public boolean getDirect(
-+    ) {
-+        return this._direct;
-+    }
-+
-+    /**
-+     * Returns the value of field 'getMethod'.
 +     * 
-+     * @return the value of field 'GetMethod'.
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    public java.lang.String getGetMethod(
-+    ) {
-+        return this._getMethod;
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
 +    }
 +
 +    /**
-+     * Returns the value of field 'handler'.
++     * Sets the value of field 'elementDefinition'.
 +     * 
-+     * @return the value of field 'Handler'.
++     * @param elementDefinition the value of field
++     * 'elementDefinition'.
 +     */
-+    public java.lang.String getHandler(
-+    ) {
-+        return this._handler;
++    public void setElementDefinition(
++            final boolean elementDefinition) {
++        this._elementDefinition = elementDefinition;
++        this._has_elementDefinition = true;
 +    }
 +
 +    /**
-+     * Returns the value of field 'hasMethod'.
++     * Sets the value of field 'ldapDn'.
 +     * 
-+     * @return the value of field 'HasMethod'.
++     * @param ldapDn the value of field 'ldapDn'.
 +     */
-+    public java.lang.String getHasMethod(
-+    ) {
-+        return this._hasMethod;
++    public void setLdapDn(
++            final java.lang.String ldapDn) {
++        this._ldapDn = ldapDn;
 +    }
 +
 +    /**
-+     * Returns the value of field 'identity'.
++     * Sets the value of field 'ldapOc'.
 +     * 
-+     * @return the value of field 'Identity'.
++     * @param ldapOc the value of field 'ldapOc'.
 +     */
-+    public boolean getIdentity(
-+    ) {
-+        return this._identity;
++    public void setLdapOc(
++            final java.lang.String ldapOc) {
++        this._ldapOc = ldapOc;
 +    }
 +
 +    /**
-+     * Returns the value of field 'lazy'.
++     * Sets the value of field 'nsPrefix'.
 +     * 
-+     * @return the value of field 'Lazy'.
++     * @param nsPrefix the value of field 'nsPrefix'.
 +     */
-+    public boolean getLazy(
-+    ) {
-+        return this._lazy;
++    public void setNsPrefix(
++            final java.lang.String nsPrefix) {
++        this._nsPrefix = nsPrefix;
 +    }
 +
 +    /**
-+     * Returns the value of field 'ldap'.
++     * Sets the value of field 'nsUri'.
 +     * 
-+     * @return the value of field 'Ldap'.
++     * @param nsUri the value of field 'nsUri'.
 +     */
-+    public org.exolab.castor.mapping.xml.Ldap getLdap(
-+    ) {
-+        return this._ldap;
++    public void setNsUri(
++            final java.lang.String nsUri) {
++        this._nsUri = nsUri;
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'. The field 'name' has the
-+     * following description: A required attribute used to identify
-+     * the name of the property. 
++     * Sets the value of field 'table'. The field 'table' has the
++     * following description: An optional attribute used to specify
++     * the name of the table 
++     *  to which the given Java object is associated.
 +     *  
 +     * 
-+     * @return the value of field 'Name'.
++     * @param table the value of field 'table'.
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
++    public void setTable(
++            final java.lang.String table) {
++        this._table = table;
 +    }
 +
 +    /**
-+     * Returns the value of field 'nillable'.
++     * Sets the value of field 'xml'.
 +     * 
-+     * @return the value of field 'Nillable'.
++     * @param xml the value of field 'xml'.
 +     */
-+    public boolean getNillable(
-+    ) {
-+        return this._nillable;
++    public void setXml(
++            final java.lang.String xml) {
++        this._xml = xml;
 +    }
 +
 +    /**
-+     * Returns the value of field 'required'.
++     * Method unmarshal.
 +     * 
-+     * @return the value of field 'Required'.
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.exolab.castor.mapping.xml.MapTo
 +     */
-+    public boolean getRequired(
-+    ) {
-+        return this._required;
++    public static org.exolab.castor.mapping.xml.MapTo unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.MapTo) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.MapTo.class, reader);
 +    }
 +
 +    /**
-+     * Returns the value of field 'setMethod'.
 +     * 
-+     * @return the value of field 'SetMethod'.
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public java.lang.String getSetMethod(
-+    ) {
-+        return this._setMethod;
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
 +    }
 +
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/BindXml.java
+@@ -0,0 +1,670 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * The 'bind-xml' element is used for specifying XML specific
++ * databinding
++ *  properties and behavior for a specific field. 'bind-xml' may
++ * only appear
++ *  as a child of a 'field' element.
++ *  
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class BindXml implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
 +    /**
-+     * Returns the value of field 'sql'. The field 'sql' has the
-+     * following description: The 'sql' element is used to store
-+     * information about the database 
-+     *  column to which a Java object is mapped to.
++     * An optional attribute used for specifying the XML name for
++     * the
++     *  field associated with the 'bind-xml' element.
 +     *  
-+     * 
-+     * @return the value of field 'Sql'.
 +     */
-+    public org.exolab.castor.mapping.xml.Sql getSql(
-+    ) {
-+        return this._sql;
-+    }
++    private java.lang.String _name;
 +
 +    /**
-+     * Returns the value of field 'transient'.
-+     * 
-+     * @return the value of field 'Transient'.
++     * Field _type.
 +     */
-+    public boolean getTransient(
-+    ) {
-+        return this._transient;
-+    }
++    private java.lang.String _type;
 +
 +    /**
-+     * Returns the value of field 'type'. The field 'type' has the
-+     * following description: An optional attribute used to
-+     * identify the type of the property.
++     * Allows specifying how Castor should automatically determines
++     *  the XML name of this field when no name has been specified.
++     *  In most cases the XML name is determined by using the field
++     * name,
++     *  but in some cases the user may want to use the Class name
++     * of
++     *  the field type. This attribute allows choosing between the
++     *  two approaches. If this attribute is not specified, the
++     * field
++     *  name is used as the XML name.
 +     *  
-+     * 
-+     * @return the value of field 'Type'.
 +     */
-+    public java.lang.String getType(
-+    ) {
-+        return this._type;
-+    }
++    private org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType _autoNaming;
 +
 +    /**
-+     * Method hasContainer.
-+     * 
-+     * @return true if at least one Container has been added
++     * Allows specifying a nested location path for this field,
++     *  the value should just be a simplified XPath like value
++     *  where names are separated by "/".
++     *  
 +     */
-+    public boolean hasContainer(
-+    ) {
-+        return this._has_container;
-+    }
++    private java.lang.String _location;
 +
 +    /**
-+     * Method hasDirect.
-+     * 
-+     * @return true if at least one Direct has been added
++     * Field _matches.
 +     */
-+    public boolean hasDirect(
-+    ) {
-+        return this._has_direct;
-+    }
++    private java.lang.String _matches;
 +
 +    /**
-+     * Method hasIdentity.
-+     * 
-+     * @return true if at least one Identity has been added
++     * Field _reference.
 +     */
-+    public boolean hasIdentity(
-+    ) {
-+        return this._has_identity;
-+    }
++    private boolean _reference;
 +
 +    /**
-+     * Method hasLazy.
-+     * 
-+     * @return true if at least one Lazy has been added
++     * keeps track of state for field: _reference
 +     */
-+    public boolean hasLazy(
-+    ) {
-+        return this._has_lazy;
-+    }
++    private boolean _has_reference;
 +
 +    /**
-+     * Method hasNillable.
-+     * 
-+     * @return true if at least one Nillable has been added
++     * Field _node.
 +     */
-+    public boolean hasNillable(
-+    ) {
-+        return this._has_nillable;
-+    }
++    private org.exolab.castor.mapping.xml.types.BindXmlNodeType _node;
 +
 +    /**
-+     * Method hasRequired.
-+     * 
-+     * @return true if at least one Required has been added
++     * Field _QNamePrefix.
 +     */
-+    public boolean hasRequired(
-+    ) {
-+        return this._has_required;
-+    }
++    private java.lang.String _QNamePrefix;
 +
 +    /**
-+     * Method hasTransient.
-+     * 
-+     * @return true if at least one Transient has been added
++     * Field _transient.
 +     */
-+    public boolean hasTransient(
-+    ) {
-+        return this._has_transient;
-+    }
++    private boolean _transient;
 +
 +    /**
-+     * Returns the value of field 'container'. The field
-+     * 'container' has the following description: Indicates whether
-+     * the field should be treated as a container, 
-+     *  i.e. only it's fields should be persisted, but not the
-+     * containing 
-+     *  class itself. In this case, the container attribute should
-+     *  be set to true (supported in Castor XML only).
++     * keeps track of state for field: _transient
++     */
++    private boolean _has_transient;
++
++    /**
++     * The 'class' element is used to store information about
++     * mapping of a class.
 +     *  
-+     * 
-+     * @return the value of field 'Container'.
 +     */
-+    public boolean isContainer(
-+    ) {
-+        return this._container;
++    private org.exolab.castor.mapping.xml.ClassMapping _classMapping;
++
++    /**
++     * Field _propertyList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.Property> _propertyList;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public BindXml() {
++        super();
++        this._propertyList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Property>();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
-+     * Returns the value of field 'direct'.
 +     * 
-+     * @return the value of field 'Direct'.
++     * 
++     * @param vProperty
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public boolean isDirect(
-+    ) {
-+        return this._direct;
++    public void addProperty(
++            final org.exolab.castor.mapping.xml.Property vProperty)
++    throws java.lang.IndexOutOfBoundsException {
++        this._propertyList.add(vProperty);
 +    }
 +
 +    /**
-+     * Returns the value of field 'identity'.
 +     * 
-+     * @return the value of field 'Identity'.
++     * 
++     * @param index
++     * @param vProperty
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public boolean isIdentity(
-+    ) {
-+        return this._identity;
++    public void addProperty(
++            final int index,
++            final org.exolab.castor.mapping.xml.Property vProperty)
++    throws java.lang.IndexOutOfBoundsException {
++        this._propertyList.add(index, vProperty);
 +    }
 +
 +    /**
-+     * Returns the value of field 'lazy'.
-+     * 
-+     * @return the value of field 'Lazy'.
 +     */
-+    public boolean isLazy(
++    public void deleteReference(
 +    ) {
-+        return this._lazy;
++        this._has_reference= false;
 +    }
 +
 +    /**
-+     * Returns the value of field 'nillable'.
-+     * 
-+     * @return the value of field 'Nillable'.
 +     */
-+    public boolean isNillable(
++    public void deleteTransient(
 +    ) {
-+        return this._nillable;
++        this._has_transient= false;
 +    }
 +
 +    /**
-+     * Returns the value of field 'required'.
++     * Method enumerateProperty.
 +     * 
-+     * @return the value of field 'Required'.
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public boolean isRequired(
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Property> enumerateProperty(
 +    ) {
-+        return this._required;
++        return java.util.Collections.enumeration(this._propertyList);
 +    }
 +
 +    /**
-+     * Returns the value of field 'transient'.
++     * Returns the value of field 'autoNaming'. The field
++     * 'autoNaming' has the following description: Allows
++     * specifying how Castor should automatically determines
++     *  the XML name of this field when no name has been specified.
++     *  In most cases the XML name is determined by using the field
++     * name,
++     *  but in some cases the user may want to use the Class name
++     * of
++     *  the field type. This attribute allows choosing between the
++     *  two approaches. If this attribute is not specified, the
++     * field
++     *  name is used as the XML name.
++     *  
 +     * 
-+     * @return the value of field 'Transient'.
++     * @return the value of field 'AutoNaming'.
 +     */
-+    public boolean isTransient(
++    public org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType getAutoNaming(
 +    ) {
-+        return this._transient;
++        return this._autoNaming;
 +    }
 +
 +    /**
-+     * Method isValid.
++     * Returns the value of field 'classMapping'. The field
++     * 'classMapping' has the following description: The 'class'
++     * element is used to store information about mapping of a
++     * class.
++     *  
 +     * 
-+     * @return true if this object is valid according to the schema
++     * @return the value of field 'ClassMapping'.
 +     */
-+    public boolean isValid(
++    public org.exolab.castor.mapping.xml.ClassMapping getClassMapping(
 +    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
++        return this._classMapping;
 +    }
 +
 +    /**
++     * Returns the value of field 'location'. The field 'location'
++     * has the following description: Allows specifying a nested
++     * location path for this field,
++     *  the value should just be a simplified XPath like value
++     *  where names are separated by "/".
++     *  
 +     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return the value of field 'Location'.
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    public java.lang.String getLocation(
++    ) {
++        return this._location;
 +    }
 +
 +    /**
++     * Returns the value of field 'matches'.
 +     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
++     * @return the value of field 'Matches'.
 +     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    public java.lang.String getMatches(
++    ) {
++        return this._matches;
 +    }
 +
 +    /**
-+     * Sets the value of field 'bindXml'. The field 'bindXml' has
-+     * the following description: The 'bind-xml' element is used
-+     * for specifying XML specific databinding
-+     *  properties and behavior for a specific field. 'bind-xml'
-+     * may only appear
-+     *  as a child of a 'field' element.
++     * Returns the value of field 'name'. The field 'name' has the
++     * following description: An optional attribute used for
++     * specifying the XML name for the
++     *  field associated with the 'bind-xml' element.
 +     *  
 +     * 
-+     * @param bindXml the value of field 'bindXml'.
++     * @return the value of field 'Name'.
 +     */
-+    public void setBindXml(
-+            final org.exolab.castor.mapping.xml.BindXml bindXml) {
-+        this._bindXml = bindXml;
++    public java.lang.String getName(
++    ) {
++        return this._name;
 +    }
 +
 +    /**
-+     * Sets the value of field 'collection'. The field 'collection'
-+     * has the following description: An optional attribute used to
-+     * specify the type of the collection.
-+     *  
++     * Returns the value of field 'node'.
 +     * 
-+     * @param collection the value of field 'collection'.
++     * @return the value of field 'Node'.
 +     */
-+    public void setCollection(
-+            final org.exolab.castor.mapping.xml.types.FieldMappingCollectionType collection) {
-+        this._collection = collection;
++    public org.exolab.castor.mapping.xml.types.BindXmlNodeType getNode(
++    ) {
++        return this._node;
 +    }
 +
 +    /**
-+     * Sets the value of field 'comparator'.
++     * Method getProperty.
 +     * 
-+     * @param comparator the value of field 'comparator'.
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.Property at the given index
 +     */
-+    public void setComparator(
-+            final java.lang.String comparator) {
-+        this._comparator = comparator;
++    public org.exolab.castor.mapping.xml.Property getProperty(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._propertyList.size()) {
++            throw new IndexOutOfBoundsException("getProperty: Index value '" + index + "' not in range [0.." + (this._propertyList.size() - 1) + "]");
++        }
++
++        return (org.exolab.castor.mapping.xml.Property) _propertyList.get(index);
 +    }
 +
 +    /**
-+     * Sets the value of field 'container'. The field 'container'
-+     * has the following description: Indicates whether the field
-+     * should be treated as a container, 
-+     *  i.e. only it's fields should be persisted, but not the
-+     * containing 
-+     *  class itself. In this case, the container attribute should
-+     *  be set to true (supported in Castor XML only).
-+     *  
++     * Method getProperty.Returns the contents of the collection in
++     * an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
-+     * @param container the value of field 'container'.
++     * @return this collection as an Array
 +     */
-+    public void setContainer(
-+            final boolean container) {
-+        this._container = container;
-+        this._has_container = true;
++    public org.exolab.castor.mapping.xml.Property[] getProperty(
++    ) {
++        org.exolab.castor.mapping.xml.Property[] array = new org.exolab.castor.mapping.xml.Property[0];
++        return (org.exolab.castor.mapping.xml.Property[]) this._propertyList.toArray(array);
 +    }
 +
 +    /**
-+     * Sets the value of field 'createMethod'.
++     * Method getPropertyCount.
 +     * 
-+     * @param createMethod the value of field 'createMethod'.
++     * @return the size of this collection
 +     */
-+    public void setCreateMethod(
-+            final java.lang.String createMethod) {
-+        this._createMethod = createMethod;
++    public int getPropertyCount(
++    ) {
++        return this._propertyList.size();
 +    }
 +
 +    /**
-+     * Sets the value of field 'description'.
++     * Returns the value of field 'QNamePrefix'.
 +     * 
-+     * @param description the value of field 'description'.
++     * @return the value of field 'QNamePrefix'.
 +     */
-+    public void setDescription(
-+            final java.lang.String description) {
-+        this._description = description;
++    public java.lang.String getQNamePrefix(
++    ) {
++        return this._QNamePrefix;
 +    }
 +
 +    /**
-+     * Sets the value of field 'direct'.
++     * Returns the value of field 'reference'.
 +     * 
-+     * @param direct the value of field 'direct'.
++     * @return the value of field 'Reference'.
 +     */
-+    public void setDirect(
-+            final boolean direct) {
-+        this._direct = direct;
-+        this._has_direct = true;
++    public boolean getReference(
++    ) {
++        return this._reference;
 +    }
 +
 +    /**
-+     * Sets the value of field 'getMethod'.
++     * Returns the value of field 'transient'.
 +     * 
-+     * @param getMethod the value of field 'getMethod'.
++     * @return the value of field 'Transient'.
 +     */
-+    public void setGetMethod(
-+            final java.lang.String getMethod) {
-+        this._getMethod = getMethod;
++    public boolean getTransient(
++    ) {
++        return this._transient;
 +    }
 +
 +    /**
-+     * Sets the value of field 'handler'.
++     * Returns the value of field 'type'.
 +     * 
-+     * @param handler the value of field 'handler'.
++     * @return the value of field 'Type'.
 +     */
-+    public void setHandler(
-+            final java.lang.String handler) {
-+        this._handler = handler;
++    public java.lang.String getType(
++    ) {
++        return this._type;
 +    }
 +
 +    /**
-+     * Sets the value of field 'hasMethod'.
++     * Method hasReference.
 +     * 
-+     * @param hasMethod the value of field 'hasMethod'.
++     * @return true if at least one Reference has been added
 +     */
-+    public void setHasMethod(
-+            final java.lang.String hasMethod) {
-+        this._hasMethod = hasMethod;
++    public boolean hasReference(
++    ) {
++        return this._has_reference;
 +    }
 +
 +    /**
-+     * Sets the value of field 'identity'.
++     * Method hasTransient.
 +     * 
-+     * @param identity the value of field 'identity'.
++     * @return true if at least one Transient has been added
 +     */
-+    public void setIdentity(
-+            final boolean identity) {
-+        this._identity = identity;
-+        this._has_identity = true;
++    public boolean hasTransient(
++    ) {
++        return this._has_transient;
 +    }
 +
 +    /**
-+     * Sets the value of field 'lazy'.
++     * Returns the value of field 'reference'.
 +     * 
-+     * @param lazy the value of field 'lazy'.
++     * @return the value of field 'Reference'.
 +     */
-+    public void setLazy(
-+            final boolean lazy) {
-+        this._lazy = lazy;
-+        this._has_lazy = true;
++    public boolean isReference(
++    ) {
++        return this._reference;
 +    }
 +
 +    /**
-+     * Sets the value of field 'ldap'.
++     * Returns the value of field 'transient'.
 +     * 
-+     * @param ldap the value of field 'ldap'.
++     * @return the value of field 'Transient'.
 +     */
-+    public void setLdap(
-+            final org.exolab.castor.mapping.xml.Ldap ldap) {
-+        this._ldap = ldap;
++    public boolean isTransient(
++    ) {
++        return this._transient;
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'. The field 'name' has the
-+     * following description: A required attribute used to identify
-+     * the name of the property. 
-+     *  
++     * Method isValid.
 +     * 
-+     * @param name the value of field 'name'.
++     * @return true if this object is valid according to the schema
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
-+     * Sets the value of field 'nillable'.
++     * Method iterateProperty.
 +     * 
-+     * @param nillable the value of field 'nillable'.
++     * @return an Iterator over all possible elements in this
++     * collection
 +     */
-+    public void setNillable(
-+            final boolean nillable) {
-+        this._nillable = nillable;
-+        this._has_nillable = true;
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Property> iterateProperty(
++    ) {
++        return this._propertyList.iterator();
 +    }
 +
 +    /**
-+     * Sets the value of field 'required'.
 +     * 
-+     * @param required the value of field 'required'.
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public void setRequired(
-+            final boolean required) {
-+        this._required = required;
-+        this._has_required = true;
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
-+     * Sets the value of field 'setMethod'.
 +     * 
-+     * @param setMethod the value of field 'setMethod'.
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    public void setSetMethod(
-+            final java.lang.String setMethod) {
-+        this._setMethod = setMethod;
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
 +    }
 +
 +    /**
-+     * Sets the value of field 'sql'. The field 'sql' has the
-+     * following description: The 'sql' element is used to store
-+     * information about the database 
-+     *  column to which a Java object is mapped to.
-+     *  
++     */
++    public void removeAllProperty(
++    ) {
++        this._propertyList.clear();
++    }
++
++    /**
++     * Method removeProperty.
 +     * 
-+     * @param sql the value of field 'sql'.
++     * @param vProperty
++     * @return true if the object was removed from the collection.
 +     */
-+    public void setSql(
-+            final org.exolab.castor.mapping.xml.Sql sql) {
-+        this._sql = sql;
++    public boolean removeProperty(
++            final org.exolab.castor.mapping.xml.Property vProperty) {
++        boolean removed = _propertyList.remove(vProperty);
++        return removed;
 +    }
 +
 +    /**
-+     * Sets the value of field 'transient'.
++     * Method removePropertyAt.
 +     * 
-+     * @param _transient
-+     * @param transient the value of field 'transient'.
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public void setTransient(
-+            final boolean _transient) {
-+        this._transient = _transient;
-+        this._has_transient = true;
++    public org.exolab.castor.mapping.xml.Property removePropertyAt(
++            final int index) {
++        java.lang.Object obj = this._propertyList.remove(index);
++        return (org.exolab.castor.mapping.xml.Property) obj;
 +    }
 +
 +    /**
-+     * Sets the value of field 'type'. The field 'type' has the
-+     * following description: An optional attribute used to
-+     * identify the type of the property.
++     * Sets the value of field 'autoNaming'. The field 'autoNaming'
++     * has the following description: Allows specifying how Castor
++     * should automatically determines
++     *  the XML name of this field when no name has been specified.
++     *  In most cases the XML name is determined by using the field
++     * name,
++     *  but in some cases the user may want to use the Class name
++     * of
++     *  the field type. This attribute allows choosing between the
++     *  two approaches. If this attribute is not specified, the
++     * field
++     *  name is used as the XML name.
 +     *  
 +     * 
-+     * @param type the value of field 'type'.
++     * @param autoNaming the value of field 'autoNaming'.
 +     */
-+    public void setType(
-+            final java.lang.String type) {
-+        this._type = type;
++    public void setAutoNaming(
++            final org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType autoNaming) {
++        this._autoNaming = autoNaming;
 +    }
 +
 +    /**
-+     * Method unmarshal.
++     * Sets the value of field 'classMapping'. The field
++     * 'classMapping' has the following description: The 'class'
++     * element is used to store information about mapping of a
++     * class.
++     *  
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.FieldMapping
++     * @param classMapping the value of field 'classMapping'.
 +     */
-+    public static org.exolab.castor.mapping.xml.FieldMapping unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.FieldMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.FieldMapping.class, reader);
++    public void setClassMapping(
++            final org.exolab.castor.mapping.xml.ClassMapping classMapping) {
++        this._classMapping = classMapping;
 +    }
 +
 +    /**
++     * Sets the value of field 'location'. The field 'location' has
++     * the following description: Allows specifying a nested
++     * location path for this field,
++     *  the value should just be a simplified XPath like value
++     *  where names are separated by "/".
++     *  
 +     * 
++     * @param location the value of field 'location'.
++     */
++    public void setLocation(
++            final java.lang.String location) {
++        this._location = location;
++    }
++
++    /**
++     * Sets the value of field 'matches'.
 +     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @param matches the value of field 'matches'.
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public void setMatches(
++            final java.lang.String matches) {
++        this._matches = matches;
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/NamedNativeQuery.java
-@@ -0,0 +1,381 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * Class NamedNativeQuery.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class NamedNativeQuery implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _name.
-+     */
-+    private java.lang.String _name;
-+
-+    /**
-+     * Field _resultClass.
-+     */
-+    private java.lang.String _resultClass;
-+
-+    /**
-+     * Field _resultSetMapping.
-+     */
-+    private java.lang.String _resultSetMapping;
-+
 +    /**
-+     * Field _query.
++     * Sets the value of field 'name'. The field 'name' has the
++     * following description: An optional attribute used for
++     * specifying the XML name for the
++     *  field associated with the 'bind-xml' element.
++     *  
++     * 
++     * @param name the value of field 'name'.
 +     */
-+    private java.lang.String _query;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
++    }
 +
 +    /**
-+     * Field _queryHintList.
++     * Sets the value of field 'node'.
++     * 
++     * @param node the value of field 'node'.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.QueryHint> _queryHintList;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public NamedNativeQuery() {
-+        super();
-+        this._queryHintList = new java.util.ArrayList<org.exolab.castor.mapping.xml.QueryHint>();
++    public void setNode(
++            final org.exolab.castor.mapping.xml.types.BindXmlNodeType node) {
++        this._node = node;
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
 +     * 
 +     * 
-+     * @param vQueryHint
++     * @param index
++     * @param vProperty
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void addQueryHint(
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
++    public void setProperty(
++            final int index,
++            final org.exolab.castor.mapping.xml.Property vProperty)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._queryHintList.add(vQueryHint);
++        // check bounds for index
++        if (index < 0 || index >= this._propertyList.size()) {
++            throw new IndexOutOfBoundsException("setProperty: Index value '" + index + "' not in range [0.." + (this._propertyList.size() - 1) + "]");
++        }
++
++        this._propertyList.set(index, vProperty);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param index
-+     * @param vQueryHint
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param vPropertyArray
 +     */
-+    public void addQueryHint(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._queryHintList.add(index, vQueryHint);
++    public void setProperty(
++            final org.exolab.castor.mapping.xml.Property[] vPropertyArray) {
++        //-- copy array
++        _propertyList.clear();
++
++        for (int i = 0; i < vPropertyArray.length; i++) {
++                this._propertyList.add(vPropertyArray[i]);
++        }
 +    }
 +
 +    /**
-+     * Method enumerateQueryHint.
++     * Sets the value of field 'QNamePrefix'.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @param QNamePrefix the value of field 'QNamePrefix'.
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.QueryHint> enumerateQueryHint(
-+    ) {
-+        return java.util.Collections.enumeration(this._queryHintList);
++    public void setQNamePrefix(
++            final java.lang.String QNamePrefix) {
++        this._QNamePrefix = QNamePrefix;
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'.
++     * Sets the value of field 'reference'.
 +     * 
-+     * @return the value of field 'Name'.
++     * @param reference the value of field 'reference'.
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
++    public void setReference(
++            final boolean reference) {
++        this._reference = reference;
++        this._has_reference = true;
 +    }
 +
 +    /**
-+     * Returns the value of field 'query'.
++     * Sets the value of field 'transient'.
 +     * 
-+     * @return the value of field 'Query'.
++     * @param _transient
++     * @param transient the value of field 'transient'.
 +     */
-+    public java.lang.String getQuery(
-+    ) {
-+        return this._query;
++    public void setTransient(
++            final boolean _transient) {
++        this._transient = _transient;
++        this._has_transient = true;
 +    }
 +
 +    /**
-+     * Method getQueryHint.
++     * Sets the value of field 'type'.
 +     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.QueryHint at the given index
++     * @param type the value of field 'type'.
 +     */
-+    public org.exolab.castor.mapping.xml.QueryHint getQueryHint(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._queryHintList.size()) {
-+            throw new IndexOutOfBoundsException("getQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.QueryHint) _queryHintList.get(index);
++    public void setType(
++            final java.lang.String type) {
++        this._type = type;
 +    }
 +
 +    /**
-+     * Method getQueryHint.Returns the contents of the collection
-+     * in an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
++     * Method unmarshal.
 +     * 
-+     * @return this collection as an Array
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.exolab.castor.mapping.xml.BindXml
 +     */
-+    public org.exolab.castor.mapping.xml.QueryHint[] getQueryHint(
-+    ) {
-+        org.exolab.castor.mapping.xml.QueryHint[] array = new org.exolab.castor.mapping.xml.QueryHint[0];
-+        return (org.exolab.castor.mapping.xml.QueryHint[]) this._queryHintList.toArray(array);
++    public static org.exolab.castor.mapping.xml.BindXml unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.BindXml) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.BindXml.class, reader);
 +    }
 +
 +    /**
-+     * Method getQueryHintCount.
 +     * 
-+     * @return the size of this collection
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public int getQueryHintCount(
-+    ) {
-+        return this._queryHintList.size();
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/PropertyType.java
+@@ -0,0 +1,115 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * Class PropertyType.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public abstract class PropertyType implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _name.
++     */
++    private java.lang.String _name;
++
++    /**
++     * Field _value.
++     */
++    private java.lang.String _value;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public PropertyType() {
++        super();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
-+     * Returns the value of field 'resultClass'.
++     * Returns the value of field 'name'.
 +     * 
-+     * @return the value of field 'ResultClass'.
++     * @return the value of field 'Name'.
 +     */
-+    public java.lang.String getResultClass(
++    public java.lang.String getName(
 +    ) {
-+        return this._resultClass;
++        return this._name;
 +    }
 +
 +    /**
-+     * Returns the value of field 'resultSetMapping'.
++     * Returns the value of field 'value'.
 +     * 
-+     * @return the value of field 'ResultSetMapping'.
++     * @return the value of field 'Value'.
 +     */
-+    public java.lang.String getResultSetMapping(
++    public java.lang.String getValue(
 +    ) {
-+        return this._resultSetMapping;
++        return this._value;
 +    }
 +
 +    /**
@@ -1285,80 +1462,6 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Method iterateQueryHint.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
-+     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.QueryHint> iterateQueryHint(
-+    ) {
-+        return this._queryHintList.iterator();
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
-+    }
-+
-+    /**
-+     */
-+    public void removeAllQueryHint(
-+    ) {
-+        this._queryHintList.clear();
-+    }
-+
-+    /**
-+     * Method removeQueryHint.
-+     * 
-+     * @param vQueryHint
-+     * @return true if the object was removed from the collection.
-+     */
-+    public boolean removeQueryHint(
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint) {
-+        boolean removed = _queryHintList.remove(vQueryHint);
-+        return removed;
-+    }
-+
-+    /**
-+     * Method removeQueryHintAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
-+     */
-+    public org.exolab.castor.mapping.xml.QueryHint removeQueryHintAt(
-+            final int index) {
-+        java.lang.Object obj = this._queryHintList.remove(index);
-+        return (org.exolab.castor.mapping.xml.QueryHint) obj;
-+    }
-+
-+    /**
 +     * Sets the value of field 'name'.
 +     * 
 +     * @param name the value of field 'name'.
@@ -1369,85 +1472,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'query'.
-+     * 
-+     * @param query the value of field 'query'.
-+     */
-+    public void setQuery(
-+            final java.lang.String query) {
-+        this._query = query;
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vQueryHint
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void setQueryHint(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._queryHintList.size()) {
-+            throw new IndexOutOfBoundsException("setQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
-+        }
-+
-+        this._queryHintList.set(index, vQueryHint);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param vQueryHintArray
-+     */
-+    public void setQueryHint(
-+            final org.exolab.castor.mapping.xml.QueryHint[] vQueryHintArray) {
-+        //-- copy array
-+        _queryHintList.clear();
-+
-+        for (int i = 0; i < vQueryHintArray.length; i++) {
-+                this._queryHintList.add(vQueryHintArray[i]);
-+        }
-+    }
-+
-+    /**
-+     * Sets the value of field 'resultClass'.
-+     * 
-+     * @param resultClass the value of field 'resultClass'.
-+     */
-+    public void setResultClass(
-+            final java.lang.String resultClass) {
-+        this._resultClass = resultClass;
-+    }
-+
-+    /**
-+     * Sets the value of field 'resultSetMapping'.
-+     * 
-+     * @param resultSetMapping the value of field 'resultSetMapping'
-+     */
-+    public void setResultSetMapping(
-+            final java.lang.String resultSetMapping) {
-+        this._resultSetMapping = resultSetMapping;
-+    }
-+
-+    /**
-+     * Method unmarshal.
++     * Sets the value of field 'value'.
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.NamedNativeQuery
++     * @param value the value of field 'value'.
 +     */
-+    public static org.exolab.castor.mapping.xml.NamedNativeQuery unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.NamedNativeQuery) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.NamedNativeQuery.class, reader);
++    public void setValue(
++            final java.lang.String value) {
++        this._value = value;
 +    }
 +
 +    /**
@@ -1465,11 +1496,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/QueryHint.java
-@@ -0,0 +1,164 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/MappingRoot.java
+@@ -0,0 +1,814 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -1477,12 +1508,12 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class QueryHint.
++ * Class MappingRoot.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class QueryHint implements java.io.Serializable {
++public class MappingRoot implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -1490,22 +1521,43 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _name.
++     * Field _description.
 +     */
-+    private java.lang.String _name;
++    private java.lang.String _description;
 +
 +    /**
-+     * Field _value.
++     * Field _includeList.
 +     */
-+    private java.lang.String _value;
++    private java.util.List<org.exolab.castor.mapping.xml.Include> _includeList;
++
++    /**
++     * Field _fieldHandlerDefList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.FieldHandlerDef> _fieldHandlerDefList;
++
++    /**
++     * The 'class' element is used to store information about
++     * mapping of a class.
++     *  
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.ClassMapping> _classMappingList;
++
++    /**
++     * Field _keyGeneratorDefList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.KeyGeneratorDef> _keyGeneratorDefList;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public QueryHint() {
++    public MappingRoot() {
 +        super();
++        this._includeList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Include>();
++        this._fieldHandlerDefList = new java.util.ArrayList<org.exolab.castor.mapping.xml.FieldHandlerDef>();
++        this._classMappingList = new java.util.ArrayList<org.exolab.castor.mapping.xml.ClassMapping>();
++        this._keyGeneratorDefList = new java.util.ArrayList<org.exolab.castor.mapping.xml.KeyGeneratorDef>();
 +    }
 +
 +
@@ -1514,758 +1566,819 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
-+     * Returns the value of field 'name'.
 +     * 
-+     * @return the value of field 'Name'.
++     * 
++     * @param vClassMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
++    public void addClassMapping(
++            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._classMappingList.add(vClassMapping);
 +    }
 +
 +    /**
-+     * Returns the value of field 'value'.
 +     * 
-+     * @return the value of field 'Value'.
++     * 
++     * @param index
++     * @param vClassMapping
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public java.lang.String getValue(
-+    ) {
-+        return this._value;
++    public void addClassMapping(
++            final int index,
++            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping)
++    throws java.lang.IndexOutOfBoundsException {
++        this._classMappingList.add(index, vClassMapping);
 +    }
 +
 +    /**
-+     * Method isValid.
 +     * 
-+     * @return true if this object is valid according to the schema
++     * 
++     * @param vFieldHandlerDef
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public boolean isValid(
-+    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
++    public void addFieldHandlerDef(
++            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef)
++    throws java.lang.IndexOutOfBoundsException {
++        this._fieldHandlerDefList.add(vFieldHandlerDef);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @param index
++     * @param vFieldHandlerDef
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    public void addFieldHandlerDef(
++            final int index,
++            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef)
++    throws java.lang.IndexOutOfBoundsException {
++        this._fieldHandlerDefList.add(index, vFieldHandlerDef);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
++     * @param vInclude
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    public void addInclude(
++            final org.exolab.castor.mapping.xml.Include vInclude)
++    throws java.lang.IndexOutOfBoundsException {
++        this._includeList.add(vInclude);
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'.
 +     * 
-+     * @param name the value of field 'name'.
++     * 
++     * @param index
++     * @param vInclude
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public void addInclude(
++            final int index,
++            final org.exolab.castor.mapping.xml.Include vInclude)
++    throws java.lang.IndexOutOfBoundsException {
++        this._includeList.add(index, vInclude);
 +    }
 +
 +    /**
-+     * Sets the value of field 'value'.
 +     * 
-+     * @param value the value of field 'value'.
++     * 
++     * @param vKeyGeneratorDef
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void setValue(
-+            final java.lang.String value) {
-+        this._value = value;
++    public void addKeyGeneratorDef(
++            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef)
++    throws java.lang.IndexOutOfBoundsException {
++        this._keyGeneratorDefList.add(vKeyGeneratorDef);
 +    }
 +
 +    /**
-+     * Method unmarshal.
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.QueryHint
++     * 
++     * @param index
++     * @param vKeyGeneratorDef
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public static org.exolab.castor.mapping.xml.QueryHint unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.QueryHint) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.QueryHint.class, reader);
++    public void addKeyGeneratorDef(
++            final int index,
++            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef)
++    throws java.lang.IndexOutOfBoundsException {
++        this._keyGeneratorDefList.add(index, vKeyGeneratorDef);
 +    }
 +
 +    /**
++     * Method enumerateClassMapping.
 +     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.ClassMapping> enumerateClassMapping(
++    ) {
++        return java.util.Collections.enumeration(this._classMappingList);
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/ClassMapping.java
-@@ -0,0 +1,1036 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * The 'class' element is used to store information about mapping
-+ * of a class.
-+ *  
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class ClassMapping implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
 +    /**
-+     * Specifies the fully qualified package name of the Java
-+     * object needed to be mapped.
-+     *  
++     * Method enumerateFieldHandlerDef.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    private java.lang.String _name;
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.FieldHandlerDef> enumerateFieldHandlerDef(
++    ) {
++        return java.util.Collections.enumeration(this._fieldHandlerDefList);
++    }
 +
 +    /**
-+     * An optional attribute to specify the extension realtionship 
-+     *  between objects. Used only if mapping of the another object
++     * Method enumerateInclude.
 +     * 
-+     *  is provided.
-+     *  
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    private java.lang.Object _extends;
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Include> enumerateInclude(
++    ) {
++        return java.util.Collections.enumeration(this._includeList);
++    }
 +
 +    /**
-+     * An optional attribute to specify that one object depends on 
-+     *  another object.
-+     *  
++     * Method enumerateKeyGeneratorDef.
++     * 
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    private java.lang.Object _depends;
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.KeyGeneratorDef> enumerateKeyGeneratorDef(
++    ) {
++        return java.util.Collections.enumeration(this._keyGeneratorDefList);
++    }
 +
 +    /**
-+     * An optional attribute for specifying the unique
-+     * identificator 
-+     *  of the object within the persistence storage. 
-+     *  
++     * Method getClassMapping.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.ClassMapping at the given index
 +     */
-+    private java.util.List<java.lang.String> _identity;
++    public org.exolab.castor.mapping.xml.ClassMapping getClassMapping(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._classMappingList.size()) {
++            throw new IndexOutOfBoundsException("getClassMapping: Index value '" + index + "' not in range [0.." + (this._classMappingList.size() - 1) + "]");
++        }
 +
-+    /**
-+     * Field _access.
-+     */
-+    private org.exolab.castor.mapping.xml.types.ClassMappingAccessType _access = org.exolab.castor.mapping.xml.types.ClassMappingAccessType.valueOf("shared");
++        return (org.exolab.castor.mapping.xml.ClassMapping) _classMappingList.get(index);
++    }
 +
 +    /**
-+     * Field _keyGenerator.
++     * Method getClassMapping.Returns the contents of the
++     * collection in an Array.  <p>Note:  Just in case the
++     * collection contents are changing in another thread, we pass
++     * a 0-length Array of the correct type into the API call. 
++     * This way we <i>know</i> that the Array returned is of
++     * exactly the correct length.
++     * 
++     * @return this collection as an Array
 +     */
-+    private java.lang.String _keyGenerator;
++    public org.exolab.castor.mapping.xml.ClassMapping[] getClassMapping(
++    ) {
++        org.exolab.castor.mapping.xml.ClassMapping[] array = new org.exolab.castor.mapping.xml.ClassMapping[0];
++        return (org.exolab.castor.mapping.xml.ClassMapping[]) this._classMappingList.toArray(array);
++    }
 +
 +    /**
-+     * Field _autoComplete.
++     * Method getClassMappingCount.
++     * 
++     * @return the size of this collection
 +     */
-+    private boolean _autoComplete = false;
++    public int getClassMappingCount(
++    ) {
++        return this._classMappingList.size();
++    }
 +
 +    /**
-+     * keeps track of state for field: _autoComplete
++     * Returns the value of field 'description'.
++     * 
++     * @return the value of field 'Description'.
 +     */
-+    private boolean _has_autoComplete;
++    public java.lang.String getDescription(
++    ) {
++        return this._description;
++    }
 +
 +    /**
-+     * Field _verifyConstructable.
++     * Method getFieldHandlerDef.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.FieldHandlerDef at the given
++     * index
 +     */
-+    private boolean _verifyConstructable = true;
++    public org.exolab.castor.mapping.xml.FieldHandlerDef getFieldHandlerDef(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._fieldHandlerDefList.size()) {
++            throw new IndexOutOfBoundsException("getFieldHandlerDef: Index value '" + index + "' not in range [0.." + (this._fieldHandlerDefList.size() - 1) + "]");
++        }
 +
-+    /**
-+     * keeps track of state for field: _verifyConstructable
-+     */
-+    private boolean _has_verifyConstructable;
++        return (org.exolab.castor.mapping.xml.FieldHandlerDef) _fieldHandlerDefList.get(index);
++    }
 +
 +    /**
-+     * Field _version.
++     * Method getFieldHandlerDef.Returns the contents of the
++     * collection in an Array.  <p>Note:  Just in case the
++     * collection contents are changing in another thread, we pass
++     * a 0-length Array of the correct type into the API call. 
++     * This way we <i>know</i> that the Array returned is of
++     * exactly the correct length.
++     * 
++     * @return this collection as an Array
 +     */
-+    private java.lang.String _version;
++    public org.exolab.castor.mapping.xml.FieldHandlerDef[] getFieldHandlerDef(
++    ) {
++        org.exolab.castor.mapping.xml.FieldHandlerDef[] array = new org.exolab.castor.mapping.xml.FieldHandlerDef[0];
++        return (org.exolab.castor.mapping.xml.FieldHandlerDef[]) this._fieldHandlerDefList.toArray(array);
++    }
 +
 +    /**
-+     * Field _description.
++     * Method getFieldHandlerDefCount.
++     * 
++     * @return the size of this collection
 +     */
-+    private java.lang.String _description;
++    public int getFieldHandlerDefCount(
++    ) {
++        return this._fieldHandlerDefList.size();
++    }
 +
 +    /**
-+     * Field _cacheTypeMapping.
++     * Method getInclude.
++     * 
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.Include at the given index
 +     */
-+    private org.exolab.castor.mapping.xml.CacheTypeMapping _cacheTypeMapping;
-+
-+    /**
-+     * The 'map-to' element is used for specifying the name of the
-+     * item 
-+     *  that should be associated with the given Java object.
-+     *  
-+     */
-+    private org.exolab.castor.mapping.xml.MapTo _mapTo;
-+
-+    /**
-+     * Field _namedQueryList.
-+     */
-+    private java.util.List<org.exolab.castor.mapping.xml.NamedQuery> _namedQueryList;
-+
-+    /**
-+     * Field _namedNativeQueryList.
-+     */
-+    private java.util.List<org.exolab.castor.mapping.xml.NamedNativeQuery> _namedNativeQueryList;
-+
-+    /**
-+     * Field _classChoice.
-+     */
-+    private org.exolab.castor.mapping.xml.ClassChoice _classChoice;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++    public org.exolab.castor.mapping.xml.Include getInclude(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._includeList.size()) {
++            throw new IndexOutOfBoundsException("getInclude: Index value '" + index + "' not in range [0.." + (this._includeList.size() - 1) + "]");
++        }
 +
-+    public ClassMapping() {
-+        super();
-+        this._identity = new java.util.ArrayList<java.lang.String>();
-+        setAccess(org.exolab.castor.mapping.xml.types.ClassMappingAccessType.valueOf("shared"));
-+        this._namedQueryList = new java.util.ArrayList<org.exolab.castor.mapping.xml.NamedQuery>();
-+        this._namedNativeQueryList = new java.util.ArrayList<org.exolab.castor.mapping.xml.NamedNativeQuery>();
++        return (org.exolab.castor.mapping.xml.Include) _includeList.get(index);
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
++     * Method getInclude.Returns the contents of the collection in
++     * an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
-+     * 
-+     * @param vIdentity
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return this collection as an Array
 +     */
-+    public void addIdentity(
-+            final java.lang.String vIdentity)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._identity.add(vIdentity);
++    public org.exolab.castor.mapping.xml.Include[] getInclude(
++    ) {
++        org.exolab.castor.mapping.xml.Include[] array = new org.exolab.castor.mapping.xml.Include[0];
++        return (org.exolab.castor.mapping.xml.Include[]) this._includeList.toArray(array);
 +    }
 +
 +    /**
++     * Method getIncludeCount.
 +     * 
-+     * 
-+     * @param index
-+     * @param vIdentity
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the size of this collection
 +     */
-+    public void addIdentity(
-+            final int index,
-+            final java.lang.String vIdentity)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._identity.add(index, vIdentity);
++    public int getIncludeCount(
++    ) {
++        return this._includeList.size();
 +    }
 +
 +    /**
++     * Method getKeyGeneratorDef.
 +     * 
-+     * 
-+     * @param vNamedNativeQuery
++     * @param index
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.KeyGeneratorDef at the given
++     * index
 +     */
-+    public void addNamedNativeQuery(
-+            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery)
++    public org.exolab.castor.mapping.xml.KeyGeneratorDef getKeyGeneratorDef(
++            final int index)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._namedNativeQueryList.add(vNamedNativeQuery);
++        // check bounds for index
++        if (index < 0 || index >= this._keyGeneratorDefList.size()) {
++            throw new IndexOutOfBoundsException("getKeyGeneratorDef: Index value '" + index + "' not in range [0.." + (this._keyGeneratorDefList.size() - 1) + "]");
++        }
++
++        return (org.exolab.castor.mapping.xml.KeyGeneratorDef) _keyGeneratorDefList.get(index);
 +    }
 +
 +    /**
++     * Method getKeyGeneratorDef.Returns the contents of the
++     * collection in an Array.  <p>Note:  Just in case the
++     * collection contents are changing in another thread, we pass
++     * a 0-length Array of the correct type into the API call. 
++     * This way we <i>know</i> that the Array returned is of
++     * exactly the correct length.
 +     * 
-+     * 
-+     * @param index
-+     * @param vNamedNativeQuery
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return this collection as an Array
 +     */
-+    public void addNamedNativeQuery(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._namedNativeQueryList.add(index, vNamedNativeQuery);
++    public org.exolab.castor.mapping.xml.KeyGeneratorDef[] getKeyGeneratorDef(
++    ) {
++        org.exolab.castor.mapping.xml.KeyGeneratorDef[] array = new org.exolab.castor.mapping.xml.KeyGeneratorDef[0];
++        return (org.exolab.castor.mapping.xml.KeyGeneratorDef[]) this._keyGeneratorDefList.toArray(array);
 +    }
 +
 +    /**
++     * Method getKeyGeneratorDefCount.
 +     * 
-+     * 
-+     * @param vNamedQuery
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the size of this collection
 +     */
-+    public void addNamedQuery(
-+            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._namedQueryList.add(vNamedQuery);
++    public int getKeyGeneratorDefCount(
++    ) {
++        return this._keyGeneratorDefList.size();
 +    }
 +
 +    /**
++     * Method isValid.
 +     * 
-+     * 
-+     * @param index
-+     * @param vNamedQuery
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return true if this object is valid according to the schema
 +     */
-+    public void addNamedQuery(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._namedQueryList.add(index, vNamedQuery);
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
++     * Method iterateClassMapping.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
 +     */
-+    public void deleteAutoComplete(
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.ClassMapping> iterateClassMapping(
 +    ) {
-+        this._has_autoComplete= false;
++        return this._classMappingList.iterator();
 +    }
 +
 +    /**
++     * Method iterateFieldHandlerDef.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
 +     */
-+    public void deleteVerifyConstructable(
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.FieldHandlerDef> iterateFieldHandlerDef(
 +    ) {
-+        this._has_verifyConstructable= false;
++        return this._fieldHandlerDefList.iterator();
 +    }
 +
 +    /**
-+     * Method enumerateIdentity.
++     * Method iterateInclude.
 +     * 
-+     * @return an Enumeration over all possible elements of this
++     * @return an Iterator over all possible elements in this
 +     * collection
 +     */
-+    public java.util.Enumeration<? extends java.lang.String> enumerateIdentity(
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Include> iterateInclude(
 +    ) {
-+        return java.util.Collections.enumeration(this._identity);
++        return this._includeList.iterator();
 +    }
 +
 +    /**
-+     * Method enumerateNamedNativeQuery.
++     * Method iterateKeyGeneratorDef.
 +     * 
-+     * @return an Enumeration over all possible elements of this
++     * @return an Iterator over all possible elements in this
 +     * collection
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.NamedNativeQuery> enumerateNamedNativeQuery(
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.KeyGeneratorDef> iterateKeyGeneratorDef(
 +    ) {
-+        return java.util.Collections.enumeration(this._namedNativeQueryList);
++        return this._keyGeneratorDefList.iterator();
 +    }
 +
 +    /**
-+     * Method enumerateNamedQuery.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.NamedQuery> enumerateNamedQuery(
-+    ) {
-+        return java.util.Collections.enumeration(this._namedQueryList);
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
-+     * Returns the value of field 'access'.
 +     * 
-+     * @return the value of field 'Access'.
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    public org.exolab.castor.mapping.xml.types.ClassMappingAccessType getAccess(
-+    ) {
-+        return this._access;
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
 +    }
 +
 +    /**
-+     * Returns the value of field 'autoComplete'.
-+     * 
-+     * @return the value of field 'AutoComplete'.
 +     */
-+    public boolean getAutoComplete(
++    public void removeAllClassMapping(
 +    ) {
-+        return this._autoComplete;
++        this._classMappingList.clear();
 +    }
 +
 +    /**
-+     * Returns the value of field 'cacheTypeMapping'.
-+     * 
-+     * @return the value of field 'CacheTypeMapping'.
 +     */
-+    public org.exolab.castor.mapping.xml.CacheTypeMapping getCacheTypeMapping(
++    public void removeAllFieldHandlerDef(
 +    ) {
-+        return this._cacheTypeMapping;
++        this._fieldHandlerDefList.clear();
 +    }
 +
 +    /**
-+     * Returns the value of field 'classChoice'.
-+     * 
-+     * @return the value of field 'ClassChoice'.
 +     */
-+    public org.exolab.castor.mapping.xml.ClassChoice getClassChoice(
++    public void removeAllInclude(
 +    ) {
-+        return this._classChoice;
++        this._includeList.clear();
 +    }
 +
 +    /**
-+     * Returns the value of field 'depends'. The field 'depends'
-+     * has the following description: An optional attribute to
-+     * specify that one object depends on 
-+     *  another object.
-+     *  
-+     * 
-+     * @return the value of field 'Depends'.
 +     */
-+    public java.lang.Object getDepends(
++    public void removeAllKeyGeneratorDef(
 +    ) {
-+        return this._depends;
++        this._keyGeneratorDefList.clear();
 +    }
 +
 +    /**
-+     * Returns the value of field 'description'.
++     * Method removeClassMapping.
 +     * 
-+     * @return the value of field 'Description'.
++     * @param vClassMapping
++     * @return true if the object was removed from the collection.
 +     */
-+    public java.lang.String getDescription(
-+    ) {
-+        return this._description;
++    public boolean removeClassMapping(
++            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping) {
++        boolean removed = _classMappingList.remove(vClassMapping);
++        return removed;
 +    }
 +
 +    /**
-+     * Returns the value of field 'extends'. The field 'extends'
-+     * has the following description: An optional attribute to
-+     * specify the extension realtionship 
-+     *  between objects. Used only if mapping of the another object
-+     * 
-+     *  is provided.
-+     *  
++     * Method removeClassMappingAt.
 +     * 
-+     * @return the value of field 'Extends'.
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public java.lang.Object getExtends(
-+    ) {
-+        return this._extends;
++    public org.exolab.castor.mapping.xml.ClassMapping removeClassMappingAt(
++            final int index) {
++        java.lang.Object obj = this._classMappingList.remove(index);
++        return (org.exolab.castor.mapping.xml.ClassMapping) obj;
 +    }
 +
 +    /**
-+     * Method getIdentity.
++     * Method removeFieldHandlerDef.
 +     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the java.lang.String at the given index
++     * @param vFieldHandlerDef
++     * @return true if the object was removed from the collection.
 +     */
-+    public java.lang.String getIdentity(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._identity.size()) {
-+            throw new IndexOutOfBoundsException("getIdentity: Index value '" + index + "' not in range [0.." + (this._identity.size() - 1) + "]");
-+        }
-+
-+        return (java.lang.String) _identity.get(index);
++    public boolean removeFieldHandlerDef(
++            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef) {
++        boolean removed = _fieldHandlerDefList.remove(vFieldHandlerDef);
++        return removed;
 +    }
 +
 +    /**
-+     * Method getIdentity.Returns the contents of the collection in
-+     * an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
++     * Method removeFieldHandlerDefAt.
 +     * 
-+     * @return this collection as an Array
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public java.lang.String[] getIdentity(
-+    ) {
-+        java.lang.String[] array = new java.lang.String[0];
-+        return (java.lang.String[]) this._identity.toArray(array);
++    public org.exolab.castor.mapping.xml.FieldHandlerDef removeFieldHandlerDefAt(
++            final int index) {
++        java.lang.Object obj = this._fieldHandlerDefList.remove(index);
++        return (org.exolab.castor.mapping.xml.FieldHandlerDef) obj;
 +    }
 +
 +    /**
-+     * Method getIdentityCount.
++     * Method removeInclude.
 +     * 
-+     * @return the size of this collection
++     * @param vInclude
++     * @return true if the object was removed from the collection.
 +     */
-+    public int getIdentityCount(
-+    ) {
-+        return this._identity.size();
++    public boolean removeInclude(
++            final org.exolab.castor.mapping.xml.Include vInclude) {
++        boolean removed = _includeList.remove(vInclude);
++        return removed;
 +    }
 +
 +    /**
-+     * Returns the value of field 'keyGenerator'.
++     * Method removeIncludeAt.
 +     * 
-+     * @return the value of field 'KeyGenerator'.
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public java.lang.String getKeyGenerator(
-+    ) {
-+        return this._keyGenerator;
++    public org.exolab.castor.mapping.xml.Include removeIncludeAt(
++            final int index) {
++        java.lang.Object obj = this._includeList.remove(index);
++        return (org.exolab.castor.mapping.xml.Include) obj;
 +    }
 +
 +    /**
-+     * Returns the value of field 'mapTo'. The field 'mapTo' has
-+     * the following description: The 'map-to' element is used for
-+     * specifying the name of the item 
-+     *  that should be associated with the given Java object.
-+     *  
++     * Method removeKeyGeneratorDef.
 +     * 
-+     * @return the value of field 'MapTo'.
++     * @param vKeyGeneratorDef
++     * @return true if the object was removed from the collection.
 +     */
-+    public org.exolab.castor.mapping.xml.MapTo getMapTo(
-+    ) {
-+        return this._mapTo;
++    public boolean removeKeyGeneratorDef(
++            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef) {
++        boolean removed = _keyGeneratorDefList.remove(vKeyGeneratorDef);
++        return removed;
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'. The field 'name' has the
-+     * following description: Specifies the fully qualified package
-+     * name of the Java object needed to be mapped.
-+     *  
++     * Method removeKeyGeneratorDefAt.
 +     * 
-+     * @return the value of field 'Name'.
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
++    public org.exolab.castor.mapping.xml.KeyGeneratorDef removeKeyGeneratorDefAt(
++            final int index) {
++        java.lang.Object obj = this._keyGeneratorDefList.remove(index);
++        return (org.exolab.castor.mapping.xml.KeyGeneratorDef) obj;
 +    }
 +
 +    /**
-+     * Method getNamedNativeQuery.
++     * 
 +     * 
 +     * @param index
++     * @param vClassMapping
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.NamedNativeQuery at the given
-+     * index
 +     */
-+    public org.exolab.castor.mapping.xml.NamedNativeQuery getNamedNativeQuery(
-+            final int index)
++    public void setClassMapping(
++            final int index,
++            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._namedNativeQueryList.size()) {
-+            throw new IndexOutOfBoundsException("getNamedNativeQuery: Index value '" + index + "' not in range [0.." + (this._namedNativeQueryList.size() - 1) + "]");
++        if (index < 0 || index >= this._classMappingList.size()) {
++            throw new IndexOutOfBoundsException("setClassMapping: Index value '" + index + "' not in range [0.." + (this._classMappingList.size() - 1) + "]");
 +        }
 +
-+        return (org.exolab.castor.mapping.xml.NamedNativeQuery) _namedNativeQueryList.get(index);
++        this._classMappingList.set(index, vClassMapping);
 +    }
 +
 +    /**
-+     * Method getNamedNativeQuery.Returns the contents of the
-+     * collection in an Array.  <p>Note:  Just in case the
-+     * collection contents are changing in another thread, we pass
-+     * a 0-length Array of the correct type into the API call. 
-+     * This way we <i>know</i> that the Array returned is of
-+     * exactly the correct length.
 +     * 
-+     * @return this collection as an Array
++     * 
++     * @param vClassMappingArray
 +     */
-+    public org.exolab.castor.mapping.xml.NamedNativeQuery[] getNamedNativeQuery(
-+    ) {
-+        org.exolab.castor.mapping.xml.NamedNativeQuery[] array = new org.exolab.castor.mapping.xml.NamedNativeQuery[0];
-+        return (org.exolab.castor.mapping.xml.NamedNativeQuery[]) this._namedNativeQueryList.toArray(array);
++    public void setClassMapping(
++            final org.exolab.castor.mapping.xml.ClassMapping[] vClassMappingArray) {
++        //-- copy array
++        _classMappingList.clear();
++
++        for (int i = 0; i < vClassMappingArray.length; i++) {
++                this._classMappingList.add(vClassMappingArray[i]);
++        }
 +    }
 +
 +    /**
-+     * Method getNamedNativeQueryCount.
++     * Sets the value of field 'description'.
 +     * 
-+     * @return the size of this collection
++     * @param description the value of field 'description'.
 +     */
-+    public int getNamedNativeQueryCount(
-+    ) {
-+        return this._namedNativeQueryList.size();
++    public void setDescription(
++            final java.lang.String description) {
++        this._description = description;
 +    }
 +
 +    /**
-+     * Method getNamedQuery.
++     * 
 +     * 
 +     * @param index
++     * @param vFieldHandlerDef
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.NamedQuery at the given index
 +     */
-+    public org.exolab.castor.mapping.xml.NamedQuery getNamedQuery(
-+            final int index)
++    public void setFieldHandlerDef(
++            final int index,
++            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._namedQueryList.size()) {
-+            throw new IndexOutOfBoundsException("getNamedQuery: Index value '" + index + "' not in range [0.." + (this._namedQueryList.size() - 1) + "]");
++        if (index < 0 || index >= this._fieldHandlerDefList.size()) {
++            throw new IndexOutOfBoundsException("setFieldHandlerDef: Index value '" + index + "' not in range [0.." + (this._fieldHandlerDefList.size() - 1) + "]");
 +        }
 +
-+        return (org.exolab.castor.mapping.xml.NamedQuery) _namedQueryList.get(index);
++        this._fieldHandlerDefList.set(index, vFieldHandlerDef);
 +    }
 +
 +    /**
-+     * Method getNamedQuery.Returns the contents of the collection
-+     * in an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
 +     * 
-+     * @return this collection as an Array
++     * 
++     * @param vFieldHandlerDefArray
 +     */
-+    public org.exolab.castor.mapping.xml.NamedQuery[] getNamedQuery(
-+    ) {
-+        org.exolab.castor.mapping.xml.NamedQuery[] array = new org.exolab.castor.mapping.xml.NamedQuery[0];
-+        return (org.exolab.castor.mapping.xml.NamedQuery[]) this._namedQueryList.toArray(array);
++    public void setFieldHandlerDef(
++            final org.exolab.castor.mapping.xml.FieldHandlerDef[] vFieldHandlerDefArray) {
++        //-- copy array
++        _fieldHandlerDefList.clear();
++
++        for (int i = 0; i < vFieldHandlerDefArray.length; i++) {
++                this._fieldHandlerDefList.add(vFieldHandlerDefArray[i]);
++        }
 +    }
 +
 +    /**
-+     * Method getNamedQueryCount.
 +     * 
-+     * @return the size of this collection
++     * 
++     * @param index
++     * @param vInclude
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public int getNamedQueryCount(
-+    ) {
-+        return this._namedQueryList.size();
++    public void setInclude(
++            final int index,
++            final org.exolab.castor.mapping.xml.Include vInclude)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._includeList.size()) {
++            throw new IndexOutOfBoundsException("setInclude: Index value '" + index + "' not in range [0.." + (this._includeList.size() - 1) + "]");
++        }
++
++        this._includeList.set(index, vInclude);
 +    }
 +
 +    /**
-+     * Returns the value of field 'verifyConstructable'.
 +     * 
-+     * @return the value of field 'VerifyConstructable'.
++     * 
++     * @param vIncludeArray
 +     */
-+    public boolean getVerifyConstructable(
-+    ) {
-+        return this._verifyConstructable;
++    public void setInclude(
++            final org.exolab.castor.mapping.xml.Include[] vIncludeArray) {
++        //-- copy array
++        _includeList.clear();
++
++        for (int i = 0; i < vIncludeArray.length; i++) {
++                this._includeList.add(vIncludeArray[i]);
++        }
 +    }
 +
 +    /**
-+     * Returns the value of field 'version'.
 +     * 
-+     * @return the value of field 'Version'.
++     * 
++     * @param index
++     * @param vKeyGeneratorDef
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public java.lang.String getVersion(
-+    ) {
-+        return this._version;
++    public void setKeyGeneratorDef(
++            final int index,
++            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._keyGeneratorDefList.size()) {
++            throw new IndexOutOfBoundsException("setKeyGeneratorDef: Index value '" + index + "' not in range [0.." + (this._keyGeneratorDefList.size() - 1) + "]");
++        }
++
++        this._keyGeneratorDefList.set(index, vKeyGeneratorDef);
 +    }
 +
 +    /**
-+     * Method hasAutoComplete.
 +     * 
-+     * @return true if at least one AutoComplete has been added
++     * 
++     * @param vKeyGeneratorDefArray
 +     */
-+    public boolean hasAutoComplete(
-+    ) {
-+        return this._has_autoComplete;
-+    }
++    public void setKeyGeneratorDef(
++            final org.exolab.castor.mapping.xml.KeyGeneratorDef[] vKeyGeneratorDefArray) {
++        //-- copy array
++        _keyGeneratorDefList.clear();
 +
-+    /**
-+     * Method hasVerifyConstructable.
-+     * 
-+     * @return true if at least one VerifyConstructable has been
-+     * added
-+     */
-+    public boolean hasVerifyConstructable(
-+    ) {
-+        return this._has_verifyConstructable;
++        for (int i = 0; i < vKeyGeneratorDefArray.length; i++) {
++                this._keyGeneratorDefList.add(vKeyGeneratorDefArray[i]);
++        }
 +    }
 +
 +    /**
-+     * Returns the value of field 'autoComplete'.
++     * Method unmarshal.
 +     * 
-+     * @return the value of field 'AutoComplete'.
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.MappingRoot
 +     */
-+    public boolean isAutoComplete(
-+    ) {
-+        return this._autoComplete;
++    public static org.exolab.castor.mapping.xml.MappingRoot unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.MappingRoot) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.MappingRoot.class, reader);
 +    }
 +
 +    /**
-+     * Method isValid.
 +     * 
-+     * @return true if this object is valid according to the schema
-+     */
-+    public boolean isValid(
-+    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
-+    }
-+
-+    /**
-+     * Returns the value of field 'verifyConstructable'.
 +     * 
-+     * @return the value of field 'VerifyConstructable'.
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public boolean isVerifyConstructable(
-+    ) {
-+        return this._verifyConstructable;
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
 +    }
 +
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/Include.java
+@@ -0,0 +1,138 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * Class Include.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class Include implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
 +    /**
-+     * Method iterateIdentity.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
++     * Field _href.
 +     */
-+    public java.util.Iterator<? extends java.lang.String> iterateIdentity(
-+    ) {
-+        return this._identity.iterator();
++    private java.lang.String _href;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public Include() {
++        super();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
-+     * Method iterateNamedNativeQuery.
++     * Returns the value of field 'href'.
 +     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
++     * @return the value of field 'Href'.
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.NamedNativeQuery> iterateNamedNativeQuery(
++    public java.lang.String getHref(
 +    ) {
-+        return this._namedNativeQueryList.iterator();
++        return this._href;
 +    }
 +
 +    /**
-+     * Method iterateNamedQuery.
++     * Method isValid.
 +     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
++     * @return true if this object is valid according to the schema
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.NamedQuery> iterateNamedQuery(
++    public boolean isValid(
 +    ) {
-+        return this._namedQueryList.iterator();
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
@@ -2301,342 +2414,537 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Sets the value of field 'href'.
++     * 
++     * @param href the value of field 'href'.
 +     */
-+    public void removeAllIdentity(
-+    ) {
-+        this._identity.clear();
++    public void setHref(
++            final java.lang.String href) {
++        this._href = href;
 +    }
 +
 +    /**
++     * Method unmarshal.
++     * 
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.exolab.castor.mapping.xml.Include
 +     */
-+    public void removeAllNamedNativeQuery(
-+    ) {
-+        this._namedNativeQueryList.clear();
++    public static org.exolab.castor.mapping.xml.Include unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.Include) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Include.class, reader);
 +    }
 +
 +    /**
++     * 
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public void removeAllNamedQuery(
-+    ) {
-+        this._namedQueryList.clear();
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
 +    }
 +
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/Ldap.java
+@@ -0,0 +1,138 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * Class Ldap.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class Ldap implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
 +    /**
-+     * Method removeIdentity.
-+     * 
-+     * @param vIdentity
-+     * @return true if the object was removed from the collection.
++     * Field _name.
 +     */
-+    public boolean removeIdentity(
-+            final java.lang.String vIdentity) {
-+        boolean removed = _identity.remove(vIdentity);
-+        return removed;
++    private java.lang.String _name;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public Ldap() {
++        super();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
-+     * Method removeIdentityAt.
++     * Returns the value of field 'name'.
 +     * 
-+     * @param index
-+     * @return the element removed from the collection
++     * @return the value of field 'Name'.
 +     */
-+    public java.lang.String removeIdentityAt(
-+            final int index) {
-+        java.lang.Object obj = this._identity.remove(index);
-+        return (java.lang.String) obj;
++    public java.lang.String getName(
++    ) {
++        return this._name;
 +    }
 +
 +    /**
-+     * Method removeNamedNativeQuery.
++     * Method isValid.
 +     * 
-+     * @param vNamedNativeQuery
-+     * @return true if the object was removed from the collection.
++     * @return true if this object is valid according to the schema
 +     */
-+    public boolean removeNamedNativeQuery(
-+            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery) {
-+        boolean removed = _namedNativeQueryList.remove(vNamedNativeQuery);
-+        return removed;
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
-+     * Method removeNamedNativeQueryAt.
 +     * 
-+     * @param index
-+     * @return the element removed from the collection
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public org.exolab.castor.mapping.xml.NamedNativeQuery removeNamedNativeQueryAt(
-+            final int index) {
-+        java.lang.Object obj = this._namedNativeQueryList.remove(index);
-+        return (org.exolab.castor.mapping.xml.NamedNativeQuery) obj;
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
-+     * Method removeNamedQuery.
 +     * 
-+     * @param vNamedQuery
-+     * @return true if the object was removed from the collection.
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    public boolean removeNamedQuery(
-+            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery) {
-+        boolean removed = _namedQueryList.remove(vNamedQuery);
-+        return removed;
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
 +    }
 +
 +    /**
-+     * Method removeNamedQueryAt.
++     * Sets the value of field 'name'.
 +     * 
-+     * @param index
-+     * @return the element removed from the collection
++     * @param name the value of field 'name'.
 +     */
-+    public org.exolab.castor.mapping.xml.NamedQuery removeNamedQueryAt(
-+            final int index) {
-+        java.lang.Object obj = this._namedQueryList.remove(index);
-+        return (org.exolab.castor.mapping.xml.NamedQuery) obj;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
-+     * Sets the value of field 'access'.
++     * Method unmarshal.
 +     * 
-+     * @param access the value of field 'access'.
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.exolab.castor.mapping.xml.Ldap
 +     */
-+    public void setAccess(
-+            final org.exolab.castor.mapping.xml.types.ClassMappingAccessType access) {
-+        this._access = access;
++    public static org.exolab.castor.mapping.xml.Ldap unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.Ldap) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Ldap.class, reader);
 +    }
 +
 +    /**
-+     * Sets the value of field 'autoComplete'.
 +     * 
-+     * @param autoComplete the value of field 'autoComplete'.
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public void setAutoComplete(
-+            final boolean autoComplete) {
-+        this._autoComplete = autoComplete;
-+        this._has_autoComplete = true;
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
 +    }
 +
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/NamedNativeQuery.java
+@@ -0,0 +1,381 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * Class NamedNativeQuery.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class NamedNativeQuery implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
 +    /**
-+     * Sets the value of field 'cacheTypeMapping'.
-+     * 
-+     * @param cacheTypeMapping the value of field 'cacheTypeMapping'
++     * Field _name.
 +     */
-+    public void setCacheTypeMapping(
-+            final org.exolab.castor.mapping.xml.CacheTypeMapping cacheTypeMapping) {
-+        this._cacheTypeMapping = cacheTypeMapping;
-+    }
++    private java.lang.String _name;
 +
 +    /**
-+     * Sets the value of field 'classChoice'.
-+     * 
-+     * @param classChoice the value of field 'classChoice'.
++     * Field _resultClass.
 +     */
-+    public void setClassChoice(
-+            final org.exolab.castor.mapping.xml.ClassChoice classChoice) {
-+        this._classChoice = classChoice;
-+    }
++    private java.lang.String _resultClass;
 +
 +    /**
-+     * Sets the value of field 'depends'. The field 'depends' has
-+     * the following description: An optional attribute to specify
-+     * that one object depends on 
-+     *  another object.
-+     *  
-+     * 
-+     * @param depends the value of field 'depends'.
++     * Field _resultSetMapping.
 +     */
-+    public void setDepends(
-+            final java.lang.Object depends) {
-+        this._depends = depends;
-+    }
++    private java.lang.String _resultSetMapping;
 +
 +    /**
-+     * Sets the value of field 'description'.
-+     * 
-+     * @param description the value of field 'description'.
++     * Field _query.
 +     */
-+    public void setDescription(
-+            final java.lang.String description) {
-+        this._description = description;
-+    }
++    private java.lang.String _query;
 +
 +    /**
-+     * Sets the value of field 'extends'. The field 'extends' has
-+     * the following description: An optional attribute to specify
-+     * the extension realtionship 
-+     *  between objects. Used only if mapping of the another object
-+     * 
-+     *  is provided.
-+     *  
-+     * 
-+     * @param _extends
-+     * @param extends the value of field 'extends'.
++     * Field _queryHintList.
 +     */
-+    public void setExtends(
-+            final java.lang.Object _extends) {
-+        this._extends = _extends;
++    private java.util.List<org.exolab.castor.mapping.xml.QueryHint> _queryHintList;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public NamedNativeQuery() {
++        super();
++        this._queryHintList = new java.util.ArrayList<org.exolab.castor.mapping.xml.QueryHint>();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
 +     * 
 +     * 
-+     * @param index
-+     * @param vIdentity
++     * @param vQueryHint
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void setIdentity(
-+            final int index,
-+            final java.lang.String vIdentity)
++    public void addQueryHint(
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
 +    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._identity.size()) {
-+            throw new IndexOutOfBoundsException("setIdentity: Index value '" + index + "' not in range [0.." + (this._identity.size() - 1) + "]");
-+        }
-+
-+        this._identity.set(index, vIdentity);
++        this._queryHintList.add(vQueryHint);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param vIdentityArray
++     * @param index
++     * @param vQueryHint
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void setIdentity(
-+            final java.lang.String[] vIdentityArray) {
-+        //-- copy array
-+        _identity.clear();
-+
-+        for (int i = 0; i < vIdentityArray.length; i++) {
-+                this._identity.add(vIdentityArray[i]);
-+        }
++    public void addQueryHint(
++            final int index,
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
++    throws java.lang.IndexOutOfBoundsException {
++        this._queryHintList.add(index, vQueryHint);
 +    }
 +
 +    /**
-+     * Sets the value of field 'keyGenerator'.
++     * Method enumerateQueryHint.
 +     * 
-+     * @param keyGenerator the value of field 'keyGenerator'.
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public void setKeyGenerator(
-+            final java.lang.String keyGenerator) {
-+        this._keyGenerator = keyGenerator;
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.QueryHint> enumerateQueryHint(
++    ) {
++        return java.util.Collections.enumeration(this._queryHintList);
 +    }
 +
 +    /**
-+     * Sets the value of field 'mapTo'. The field 'mapTo' has the
-+     * following description: The 'map-to' element is used for
-+     * specifying the name of the item 
-+     *  that should be associated with the given Java object.
-+     *  
++     * Returns the value of field 'name'.
 +     * 
-+     * @param mapTo the value of field 'mapTo'.
++     * @return the value of field 'Name'.
 +     */
-+    public void setMapTo(
-+            final org.exolab.castor.mapping.xml.MapTo mapTo) {
-+        this._mapTo = mapTo;
++    public java.lang.String getName(
++    ) {
++        return this._name;
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'. The field 'name' has the
-+     * following description: Specifies the fully qualified package
-+     * name of the Java object needed to be mapped.
-+     *  
++     * Returns the value of field 'query'.
 +     * 
-+     * @param name the value of field 'name'.
++     * @return the value of field 'Query'.
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public java.lang.String getQuery(
++    ) {
++        return this._query;
 +    }
 +
 +    /**
-+     * 
++     * Method getQueryHint.
 +     * 
 +     * @param index
-+     * @param vNamedNativeQuery
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.QueryHint at the given index
 +     */
-+    public void setNamedNativeQuery(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery)
++    public org.exolab.castor.mapping.xml.QueryHint getQueryHint(
++            final int index)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._namedNativeQueryList.size()) {
-+            throw new IndexOutOfBoundsException("setNamedNativeQuery: Index value '" + index + "' not in range [0.." + (this._namedNativeQueryList.size() - 1) + "]");
++        if (index < 0 || index >= this._queryHintList.size()) {
++            throw new IndexOutOfBoundsException("getQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
 +        }
 +
-+        this._namedNativeQueryList.set(index, vNamedNativeQuery);
++        return (org.exolab.castor.mapping.xml.QueryHint) _queryHintList.get(index);
 +    }
 +
 +    /**
++     * Method getQueryHint.Returns the contents of the collection
++     * in an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
-+     * 
-+     * @param vNamedNativeQueryArray
++     * @return this collection as an Array
 +     */
-+    public void setNamedNativeQuery(
-+            final org.exolab.castor.mapping.xml.NamedNativeQuery[] vNamedNativeQueryArray) {
-+        //-- copy array
-+        _namedNativeQueryList.clear();
++    public org.exolab.castor.mapping.xml.QueryHint[] getQueryHint(
++    ) {
++        org.exolab.castor.mapping.xml.QueryHint[] array = new org.exolab.castor.mapping.xml.QueryHint[0];
++        return (org.exolab.castor.mapping.xml.QueryHint[]) this._queryHintList.toArray(array);
++    }
 +
-+        for (int i = 0; i < vNamedNativeQueryArray.length; i++) {
-+                this._namedNativeQueryList.add(vNamedNativeQueryArray[i]);
++    /**
++     * Method getQueryHintCount.
++     * 
++     * @return the size of this collection
++     */
++    public int getQueryHintCount(
++    ) {
++        return this._queryHintList.size();
++    }
++
++    /**
++     * Returns the value of field 'resultClass'.
++     * 
++     * @return the value of field 'ResultClass'.
++     */
++    public java.lang.String getResultClass(
++    ) {
++        return this._resultClass;
++    }
++
++    /**
++     * Returns the value of field 'resultSetMapping'.
++     * 
++     * @return the value of field 'ResultSetMapping'.
++     */
++    public java.lang.String getResultSetMapping(
++    ) {
++        return this._resultSetMapping;
++    }
++
++    /**
++     * Method isValid.
++     * 
++     * @return true if this object is valid according to the schema
++     */
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
 +        }
++        return true;
++    }
++
++    /**
++     * Method iterateQueryHint.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.QueryHint> iterateQueryHint(
++    ) {
++        return this._queryHintList.iterator();
++    }
++
++    /**
++     * 
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    }
++
++    /**
++     * 
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     */
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    }
++
++    /**
++     */
++    public void removeAllQueryHint(
++    ) {
++        this._queryHintList.clear();
 +    }
 +
 +    /**
++     * Method removeQueryHint.
 +     * 
++     * @param vQueryHint
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removeQueryHint(
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint) {
++        boolean removed = _queryHintList.remove(vQueryHint);
++        return removed;
++    }
++
++    /**
++     * Method removeQueryHintAt.
 +     * 
 +     * @param index
-+     * @param vNamedQuery
++     * @return the element removed from the collection
++     */
++    public org.exolab.castor.mapping.xml.QueryHint removeQueryHintAt(
++            final int index) {
++        java.lang.Object obj = this._queryHintList.remove(index);
++        return (org.exolab.castor.mapping.xml.QueryHint) obj;
++    }
++
++    /**
++     * Sets the value of field 'name'.
++     * 
++     * @param name the value of field 'name'.
++     */
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
++    }
++
++    /**
++     * Sets the value of field 'query'.
++     * 
++     * @param query the value of field 'query'.
++     */
++    public void setQuery(
++            final java.lang.String query) {
++        this._query = query;
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vQueryHint
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void setNamedQuery(
++    public void setQueryHint(
 +            final int index,
-+            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery)
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._namedQueryList.size()) {
-+            throw new IndexOutOfBoundsException("setNamedQuery: Index value '" + index + "' not in range [0.." + (this._namedQueryList.size() - 1) + "]");
++        if (index < 0 || index >= this._queryHintList.size()) {
++            throw new IndexOutOfBoundsException("setQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
 +        }
 +
-+        this._namedQueryList.set(index, vNamedQuery);
++        this._queryHintList.set(index, vQueryHint);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param vNamedQueryArray
++     * @param vQueryHintArray
 +     */
-+    public void setNamedQuery(
-+            final org.exolab.castor.mapping.xml.NamedQuery[] vNamedQueryArray) {
++    public void setQueryHint(
++            final org.exolab.castor.mapping.xml.QueryHint[] vQueryHintArray) {
 +        //-- copy array
-+        _namedQueryList.clear();
++        _queryHintList.clear();
 +
-+        for (int i = 0; i < vNamedQueryArray.length; i++) {
-+                this._namedQueryList.add(vNamedQueryArray[i]);
++        for (int i = 0; i < vQueryHintArray.length; i++) {
++                this._queryHintList.add(vQueryHintArray[i]);
 +        }
 +    }
 +
 +    /**
-+     * Sets the value of field 'verifyConstructable'.
++     * Sets the value of field 'resultClass'.
 +     * 
-+     * @param verifyConstructable the value of field
-+     * 'verifyConstructable'.
++     * @param resultClass the value of field 'resultClass'.
 +     */
-+    public void setVerifyConstructable(
-+            final boolean verifyConstructable) {
-+        this._verifyConstructable = verifyConstructable;
-+        this._has_verifyConstructable = true;
++    public void setResultClass(
++            final java.lang.String resultClass) {
++        this._resultClass = resultClass;
 +    }
 +
 +    /**
-+     * Sets the value of field 'version'.
++     * Sets the value of field 'resultSetMapping'.
 +     * 
-+     * @param version the value of field 'version'.
++     * @param resultSetMapping the value of field 'resultSetMapping'
 +     */
-+    public void setVersion(
-+            final java.lang.String version) {
-+        this._version = version;
++    public void setResultSetMapping(
++            final java.lang.String resultSetMapping) {
++        this._resultSetMapping = resultSetMapping;
 +    }
 +
 +    /**
@@ -2648,12 +2956,12 @@ Last-Update: 2010-06-27
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
 +     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.ClassMapping
++     * org.exolab.castor.mapping.xml.NamedNativeQuery
 +     */
-+    public static org.exolab.castor.mapping.xml.ClassMapping unmarshal(
++    public static org.exolab.castor.mapping.xml.NamedNativeQuery unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.ClassMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.ClassMapping.class, reader);
++        return (org.exolab.castor.mapping.xml.NamedNativeQuery) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.NamedNativeQuery.class, reader);
 +    }
 +
 +    /**
@@ -2671,11 +2979,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/KeyGeneratorDef.java
-@@ -0,0 +1,331 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/FieldMapping.java
+@@ -0,0 +1,930 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -2683,12 +2991,14 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class KeyGeneratorDef.
++ * The 'field' element is used to describe the property of a Java
++ * object.
++ *  
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class KeyGeneratorDef implements java.io.Serializable {
++public class FieldMapping implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -2696,1049 +3006,800 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _name.
++     * A required attribute used to identify the name of the
++     * property. 
++     *  
 +     */
 +    private java.lang.String _name;
 +
 +    /**
-+     * Field _alias.
++     * An optional attribute used to identify the type of the
++     * property.
++     *  
 +     */
-+    private java.lang.String _alias;
++    private java.lang.String _type;
 +
 +    /**
-+     * Field _paramList.
++     * Field _required.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.Param> _paramList;
-+
++    private boolean _required = false;
 +
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++    /**
++     * keeps track of state for field: _required
++     */
++    private boolean _has_required;
 +
-+    public KeyGeneratorDef() {
-+        super();
-+        this._paramList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Param>();
-+    }
++    /**
++     * Field _transient.
++     */
++    private boolean _transient = false;
 +
++    /**
++     * keeps track of state for field: _transient
++     */
++    private boolean _has_transient;
 +
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
++    /**
++     * Field _nillable.
++     */
++    private boolean _nillable = false;
 +
 +    /**
-+     * 
-+     * 
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * keeps track of state for field: _nillable
 +     */
-+    public void addParam(
-+            final org.exolab.castor.mapping.xml.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._paramList.add(vParam);
-+    }
++    private boolean _has_nillable;
 +
 +    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * Field _direct.
 +     */
-+    public void addParam(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._paramList.add(index, vParam);
-+    }
++    private boolean _direct = false;
 +
 +    /**
-+     * Method enumerateParam.
-+     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * keeps track of state for field: _direct
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Param> enumerateParam(
-+    ) {
-+        return java.util.Collections.enumeration(this._paramList);
-+    }
++    private boolean _has_direct;
 +
 +    /**
-+     * Returns the value of field 'alias'.
-+     * 
-+     * @return the value of field 'Alias'.
++     * Field _lazy.
 +     */
-+    public java.lang.String getAlias(
-+    ) {
-+        return this._alias;
-+    }
++    private boolean _lazy = false;
 +
 +    /**
-+     * Returns the value of field 'name'.
-+     * 
-+     * @return the value of field 'Name'.
++     * keeps track of state for field: _lazy
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
-+    }
++    private boolean _has_lazy;
 +
 +    /**
-+     * Method getParam.
-+     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the org.exolab.castor.mapping.xml.Param
-+     * at the given index
++     * Indicates whether the field should be treated as a
++     * container, 
++     *  i.e. only it's fields should be persisted, but not the
++     * containing 
++     *  class itself. In this case, the container attribute should
++     *  be set to true (supported in Castor XML only).
++     *  
 +     */
-+    public org.exolab.castor.mapping.xml.Param getParam(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._paramList.size()) {
-+            throw new IndexOutOfBoundsException("getParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.Param) _paramList.get(index);
-+    }
++    private boolean _container;
 +
 +    /**
-+     * Method getParam.Returns the contents of the collection in an
-+     * Array.  <p>Note:  Just in case the collection contents are
-+     * changing in another thread, we pass a 0-length Array of the
-+     * correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
-+     * 
-+     * @return this collection as an Array
++     * keeps track of state for field: _container
 +     */
-+    public org.exolab.castor.mapping.xml.Param[] getParam(
-+    ) {
-+        org.exolab.castor.mapping.xml.Param[] array = new org.exolab.castor.mapping.xml.Param[0];
-+        return (org.exolab.castor.mapping.xml.Param[]) this._paramList.toArray(array);
-+    }
++    private boolean _has_container;
 +
 +    /**
-+     * Method getParamCount.
-+     * 
-+     * @return the size of this collection
++     * Field _getMethod.
 +     */
-+    public int getParamCount(
-+    ) {
-+        return this._paramList.size();
-+    }
++    private java.lang.String _getMethod;
 +
 +    /**
-+     * Method isValid.
-+     * 
-+     * @return true if this object is valid according to the schema
++     * Field _hasMethod.
 +     */
-+    public boolean isValid(
-+    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
-+    }
++    private java.lang.String _hasMethod;
 +
 +    /**
-+     * Method iterateParam.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
++     * Field _setMethod.
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Param> iterateParam(
-+    ) {
-+        return this._paramList.iterator();
-+    }
++    private java.lang.String _setMethod;
 +
 +    /**
-+     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * Field _createMethod.
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
-+    }
++    private java.lang.String _createMethod;
 +
 +    /**
-+     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
++     * Field _handler.
 +     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
-+    }
++    private java.lang.String _handler;
 +
 +    /**
++     * An optional attribute used to specify the type of the
++     * collection, if 
++     *  the property is multi-valued.
++     *  
 +     */
-+    public void removeAllParam(
-+    ) {
-+        this._paramList.clear();
-+    }
++    private org.exolab.castor.mapping.xml.types.FieldMappingCollectionType _collection;
 +
 +    /**
-+     * Method removeParam.
-+     * 
-+     * @param vParam
-+     * @return true if the object was removed from the collection.
++     * Field _comparator.
 +     */
-+    public boolean removeParam(
-+            final org.exolab.castor.mapping.xml.Param vParam) {
-+        boolean removed = _paramList.remove(vParam);
-+        return removed;
-+    }
++    private java.lang.String _comparator;
 +
 +    /**
-+     * Method removeParamAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
++     * Field _identity.
 +     */
-+    public org.exolab.castor.mapping.xml.Param removeParamAt(
-+            final int index) {
-+        java.lang.Object obj = this._paramList.remove(index);
-+        return (org.exolab.castor.mapping.xml.Param) obj;
-+    }
++    private boolean _identity = false;
 +
 +    /**
-+     * Sets the value of field 'alias'.
-+     * 
-+     * @param alias the value of field 'alias'.
++     * keeps track of state for field: _identity
 +     */
-+    public void setAlias(
-+            final java.lang.String alias) {
-+        this._alias = alias;
-+    }
++    private boolean _has_identity;
 +
 +    /**
-+     * Sets the value of field 'name'.
-+     * 
-+     * @param name the value of field 'name'.
++     * Field _description.
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
-+    }
++    private java.lang.String _description;
 +
 +    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * The 'sql' element is used to store information about the
++     * database 
++     *  column to which a Java object is mapped to.
++     *  
 +     */
-+    public void setParam(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._paramList.size()) {
-+            throw new IndexOutOfBoundsException("setParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
-+        }
++    private org.exolab.castor.mapping.xml.Sql _sql;
 +
-+        this._paramList.set(index, vParam);
-+    }
++    /**
++     * The 'bind-xml' element is used for specifying XML specific
++     * databinding
++     *  properties and behavior for a specific field. 'bind-xml'
++     * may only appear
++     *  as a child of a 'field' element.
++     *  
++     */
++    private org.exolab.castor.mapping.xml.BindXml _bindXml;
 +
 +    /**
-+     * 
-+     * 
-+     * @param vParamArray
++     * Field _ldap.
 +     */
-+    public void setParam(
-+            final org.exolab.castor.mapping.xml.Param[] vParamArray) {
-+        //-- copy array
-+        _paramList.clear();
++    private org.exolab.castor.mapping.xml.Ldap _ldap;
 +
-+        for (int i = 0; i < vParamArray.length; i++) {
-+                this._paramList.add(vParamArray[i]);
-+        }
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public FieldMapping() {
++        super();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
-+     * Method unmarshal.
-+     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.KeyGeneratorDef
 +     */
-+    public static org.exolab.castor.mapping.xml.KeyGeneratorDef unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.KeyGeneratorDef) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.KeyGeneratorDef.class, reader);
++    public void deleteContainer(
++    ) {
++        this._has_container= false;
 +    }
 +
 +    /**
-+     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public void deleteDirect(
++    ) {
++        this._has_direct= false;
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/.castor.cdr
-@@ -0,0 +1,20 @@
-+#Fri Jun 11 21:09:46 VET 2010
-+org.exolab.castor.mapping.xml.BindXml=org.exolab.castor.mapping.xml.descriptors.BindXmlDescriptor
-+org.exolab.castor.mapping.xml.FieldHandlerDef=org.exolab.castor.mapping.xml.descriptors.FieldHandlerDefDescriptor
-+org.exolab.castor.mapping.xml.Container=org.exolab.castor.mapping.xml.descriptors.ContainerDescriptor
-+org.exolab.castor.mapping.xml.Include=org.exolab.castor.mapping.xml.descriptors.IncludeDescriptor
-+org.exolab.castor.mapping.xml.Param=org.exolab.castor.mapping.xml.descriptors.ParamDescriptor
-+org.exolab.castor.mapping.xml.Ldap=org.exolab.castor.mapping.xml.descriptors.LdapDescriptor
-+org.exolab.castor.mapping.xml.ClassChoice=org.exolab.castor.mapping.xml.descriptors.ClassChoiceDescriptor
-+org.exolab.castor.mapping.xml.NamedQuery=org.exolab.castor.mapping.xml.descriptors.NamedQueryDescriptor
-+org.exolab.castor.mapping.xml.ClassMapping=org.exolab.castor.mapping.xml.descriptors.ClassMappingDescriptor
-+org.exolab.castor.mapping.xml.CacheTypeMapping=org.exolab.castor.mapping.xml.descriptors.CacheTypeMappingDescriptor
-+org.exolab.castor.mapping.xml.FieldMapping=org.exolab.castor.mapping.xml.descriptors.FieldMappingDescriptor
-+org.exolab.castor.mapping.xml.MappingRoot=org.exolab.castor.mapping.xml.descriptors.MappingRootDescriptor
-+org.exolab.castor.mapping.xml.Sql=org.exolab.castor.mapping.xml.descriptors.SqlDescriptor
-+org.exolab.castor.mapping.xml.KeyGeneratorDef=org.exolab.castor.mapping.xml.descriptors.KeyGeneratorDefDescriptor
-+org.exolab.castor.mapping.xml.MapTo=org.exolab.castor.mapping.xml.descriptors.MapToDescriptor
-+org.exolab.castor.mapping.xml.Property=org.exolab.castor.mapping.xml.descriptors.PropertyDescriptor
-+org.exolab.castor.mapping.xml.PropertyType=org.exolab.castor.mapping.xml.descriptors.PropertyTypeDescriptor
-+org.exolab.castor.mapping.xml.QueryHint=org.exolab.castor.mapping.xml.descriptors.QueryHintDescriptor
-+org.exolab.castor.mapping.xml.NamedNativeQuery=org.exolab.castor.mapping.xml.descriptors.NamedNativeQueryDescriptor
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/Param.java
-@@ -0,0 +1,163 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * Class Param.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class Param implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
 +    /**
-+     * Field _name.
 +     */
-+    private java.lang.String _name;
++    public void deleteIdentity(
++    ) {
++        this._has_identity= false;
++    }
 +
 +    /**
-+     * Field _value.
 +     */
-+    private java.lang.String _value;
-+
++    public void deleteLazy(
++    ) {
++        this._has_lazy= false;
++    }
 +
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++    /**
++     */
++    public void deleteNillable(
++    ) {
++        this._has_nillable= false;
++    }
 +
-+    public Param() {
-+        super();
++    /**
++     */
++    public void deleteRequired(
++    ) {
++        this._has_required= false;
 +    }
 +
++    /**
++     */
++    public void deleteTransient(
++    ) {
++        this._has_transient= false;
++    }
 +
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
++    /**
++     * Returns the value of field 'bindXml'. The field 'bindXml'
++     * has the following description: The 'bind-xml' element is
++     * used for specifying XML specific databinding
++     *  properties and behavior for a specific field. 'bind-xml'
++     * may only appear
++     *  as a child of a 'field' element.
++     *  
++     * 
++     * @return the value of field 'BindXml'.
++     */
++    public org.exolab.castor.mapping.xml.BindXml getBindXml(
++    ) {
++        return this._bindXml;
++    }
 +
 +    /**
-+     * Returns the value of field 'name'.
++     * Returns the value of field 'collection'. The field
++     * 'collection' has the following description: An optional
++     * attribute used to specify the type of the collection, if 
++     *  the property is multi-valued.
++     *  
 +     * 
-+     * @return the value of field 'Name'.
++     * @return the value of field 'Collection'.
 +     */
-+    public java.lang.String getName(
++    public org.exolab.castor.mapping.xml.types.FieldMappingCollectionType getCollection(
 +    ) {
-+        return this._name;
++        return this._collection;
 +    }
 +
 +    /**
-+     * Returns the value of field 'value'.
++     * Returns the value of field 'comparator'.
 +     * 
-+     * @return the value of field 'Value'.
++     * @return the value of field 'Comparator'.
 +     */
-+    public java.lang.String getValue(
++    public java.lang.String getComparator(
 +    ) {
-+        return this._value;
++        return this._comparator;
 +    }
 +
 +    /**
-+     * Method isValid.
++     * Returns the value of field 'container'. The field
++     * 'container' has the following description: Indicates whether
++     * the field should be treated as a container, 
++     *  i.e. only it's fields should be persisted, but not the
++     * containing 
++     *  class itself. In this case, the container attribute should
++     *  be set to true (supported in Castor XML only).
++     *  
 +     * 
-+     * @return true if this object is valid according to the schema
++     * @return the value of field 'Container'.
 +     */
-+    public boolean isValid(
++    public boolean getContainer(
 +    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
++        return this._container;
 +    }
 +
 +    /**
++     * Returns the value of field 'createMethod'.
 +     * 
++     * @return the value of field 'CreateMethod'.
++     */
++    public java.lang.String getCreateMethod(
++    ) {
++        return this._createMethod;
++    }
++
++    /**
++     * Returns the value of field 'description'.
 +     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return the value of field 'Description'.
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    public java.lang.String getDescription(
++    ) {
++        return this._description;
 +    }
 +
 +    /**
++     * Returns the value of field 'direct'.
 +     * 
++     * @return the value of field 'Direct'.
++     */
++    public boolean getDirect(
++    ) {
++        return this._direct;
++    }
++
++    /**
++     * Returns the value of field 'getMethod'.
 +     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
++     * @return the value of field 'GetMethod'.
 +     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    public java.lang.String getGetMethod(
++    ) {
++        return this._getMethod;
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'.
++     * Returns the value of field 'handler'.
 +     * 
-+     * @param name the value of field 'name'.
++     * @return the value of field 'Handler'.
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public java.lang.String getHandler(
++    ) {
++        return this._handler;
 +    }
 +
 +    /**
-+     * Sets the value of field 'value'.
++     * Returns the value of field 'hasMethod'.
 +     * 
-+     * @param value the value of field 'value'.
++     * @return the value of field 'HasMethod'.
 +     */
-+    public void setValue(
-+            final java.lang.String value) {
-+        this._value = value;
++    public java.lang.String getHasMethod(
++    ) {
++        return this._hasMethod;
 +    }
 +
 +    /**
-+     * Method unmarshal.
++     * Returns the value of field 'identity'.
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.exolab.castor.mapping.xml.Param
++     * @return the value of field 'Identity'.
 +     */
-+    public static org.exolab.castor.mapping.xml.Param unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.Param) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Param.class, reader);
++    public boolean getIdentity(
++    ) {
++        return this._identity;
 +    }
 +
 +    /**
++     * Returns the value of field 'lazy'.
 +     * 
++     * @return the value of field 'Lazy'.
++     */
++    public boolean getLazy(
++    ) {
++        return this._lazy;
++    }
++
++    /**
++     * Returns the value of field 'ldap'.
 +     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return the value of field 'Ldap'.
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public org.exolab.castor.mapping.xml.Ldap getLdap(
++    ) {
++        return this._ldap;
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/BindXml.java
-@@ -0,0 +1,670 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * The 'bind-xml' element is used for specifying XML specific
-+ * databinding
-+ *  properties and behavior for a specific field. 'bind-xml' may
-+ * only appear
-+ *  as a child of a 'field' element.
-+ *  
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class BindXml implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
 +    /**
-+     * An optional attribute used for specifying the XML name for
-+     * the
-+     *  field associated with the 'bind-xml' element.
++     * Returns the value of field 'name'. The field 'name' has the
++     * following description: A required attribute used to identify
++     * the name of the property. 
 +     *  
++     * 
++     * @return the value of field 'Name'.
 +     */
-+    private java.lang.String _name;
-+
-+    /**
-+     * Field _type.
-+     */
-+    private java.lang.String _type;
++    public java.lang.String getName(
++    ) {
++        return this._name;
++    }
 +
 +    /**
-+     * Allows specifying how Castor should automatically determines
-+     *  the XML name of this field when no name has been specified.
-+     *  In most cases the XML name is determined by using the field
-+     * name,
-+     *  but in some cases the user may want to use the Class name
-+     * of
-+     *  the field type. This attribute allows choosing between the
-+     *  two approaches. If this attribute is not specified, the
-+     * field
-+     *  name is used as the XML name.
-+     *  
++     * Returns the value of field 'nillable'.
++     * 
++     * @return the value of field 'Nillable'.
 +     */
-+    private org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType _autoNaming;
++    public boolean getNillable(
++    ) {
++        return this._nillable;
++    }
 +
 +    /**
-+     * Allows specifying a nested location path for this field,
-+     *  the value should just be a simplified XPath like value
-+     *  where names are separated by "/".
-+     *  
++     * Returns the value of field 'required'.
++     * 
++     * @return the value of field 'Required'.
 +     */
-+    private java.lang.String _location;
++    public boolean getRequired(
++    ) {
++        return this._required;
++    }
 +
 +    /**
-+     * Field _matches.
++     * Returns the value of field 'setMethod'.
++     * 
++     * @return the value of field 'SetMethod'.
 +     */
-+    private java.lang.String _matches;
++    public java.lang.String getSetMethod(
++    ) {
++        return this._setMethod;
++    }
 +
 +    /**
-+     * Field _reference.
++     * Returns the value of field 'sql'. The field 'sql' has the
++     * following description: The 'sql' element is used to store
++     * information about the database 
++     *  column to which a Java object is mapped to.
++     *  
++     * 
++     * @return the value of field 'Sql'.
 +     */
-+    private boolean _reference;
++    public org.exolab.castor.mapping.xml.Sql getSql(
++    ) {
++        return this._sql;
++    }
 +
 +    /**
-+     * keeps track of state for field: _reference
++     * Returns the value of field 'transient'.
++     * 
++     * @return the value of field 'Transient'.
 +     */
-+    private boolean _has_reference;
++    public boolean getTransient(
++    ) {
++        return this._transient;
++    }
 +
 +    /**
-+     * Field _node.
++     * Returns the value of field 'type'. The field 'type' has the
++     * following description: An optional attribute used to
++     * identify the type of the property.
++     *  
++     * 
++     * @return the value of field 'Type'.
 +     */
-+    private org.exolab.castor.mapping.xml.types.BindXmlNodeType _node;
++    public java.lang.String getType(
++    ) {
++        return this._type;
++    }
 +
 +    /**
-+     * Field _QNamePrefix.
++     * Method hasContainer.
++     * 
++     * @return true if at least one Container has been added
 +     */
-+    private java.lang.String _QNamePrefix;
++    public boolean hasContainer(
++    ) {
++        return this._has_container;
++    }
 +
 +    /**
-+     * Field _transient.
++     * Method hasDirect.
++     * 
++     * @return true if at least one Direct has been added
 +     */
-+    private boolean _transient;
++    public boolean hasDirect(
++    ) {
++        return this._has_direct;
++    }
 +
 +    /**
-+     * keeps track of state for field: _transient
++     * Method hasIdentity.
++     * 
++     * @return true if at least one Identity has been added
 +     */
-+    private boolean _has_transient;
++    public boolean hasIdentity(
++    ) {
++        return this._has_identity;
++    }
 +
 +    /**
-+     * The 'class' element is used to store information about
-+     * mapping of a class.
-+     *  
++     * Method hasLazy.
++     * 
++     * @return true if at least one Lazy has been added
 +     */
-+    private org.exolab.castor.mapping.xml.ClassMapping _classMapping;
++    public boolean hasLazy(
++    ) {
++        return this._has_lazy;
++    }
 +
 +    /**
-+     * Field _propertyList.
++     * Method hasNillable.
++     * 
++     * @return true if at least one Nillable has been added
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.Property> _propertyList;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public BindXml() {
-+        super();
-+        this._propertyList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Property>();
++    public boolean hasNillable(
++    ) {
++        return this._has_nillable;
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
++     * Method hasRequired.
 +     * 
-+     * 
-+     * @param vProperty
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return true if at least one Required has been added
 +     */
-+    public void addProperty(
-+            final org.exolab.castor.mapping.xml.Property vProperty)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._propertyList.add(vProperty);
++    public boolean hasRequired(
++    ) {
++        return this._has_required;
 +    }
 +
 +    /**
++     * Method hasTransient.
 +     * 
-+     * 
-+     * @param index
-+     * @param vProperty
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return true if at least one Transient has been added
 +     */
-+    public void addProperty(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Property vProperty)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._propertyList.add(index, vProperty);
++    public boolean hasTransient(
++    ) {
++        return this._has_transient;
 +    }
 +
 +    /**
++     * Returns the value of field 'container'. The field
++     * 'container' has the following description: Indicates whether
++     * the field should be treated as a container, 
++     *  i.e. only it's fields should be persisted, but not the
++     * containing 
++     *  class itself. In this case, the container attribute should
++     *  be set to true (supported in Castor XML only).
++     *  
++     * 
++     * @return the value of field 'Container'.
 +     */
-+    public void deleteReference(
++    public boolean isContainer(
 +    ) {
-+        this._has_reference= false;
++        return this._container;
 +    }
 +
 +    /**
++     * Returns the value of field 'direct'.
++     * 
++     * @return the value of field 'Direct'.
 +     */
-+    public void deleteTransient(
++    public boolean isDirect(
 +    ) {
-+        this._has_transient= false;
++        return this._direct;
 +    }
 +
 +    /**
-+     * Method enumerateProperty.
++     * Returns the value of field 'identity'.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @return the value of field 'Identity'.
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Property> enumerateProperty(
++    public boolean isIdentity(
 +    ) {
-+        return java.util.Collections.enumeration(this._propertyList);
++        return this._identity;
 +    }
 +
 +    /**
-+     * Returns the value of field 'autoNaming'. The field
-+     * 'autoNaming' has the following description: Allows
-+     * specifying how Castor should automatically determines
-+     *  the XML name of this field when no name has been specified.
-+     *  In most cases the XML name is determined by using the field
-+     * name,
-+     *  but in some cases the user may want to use the Class name
-+     * of
-+     *  the field type. This attribute allows choosing between the
-+     *  two approaches. If this attribute is not specified, the
-+     * field
-+     *  name is used as the XML name.
-+     *  
++     * Returns the value of field 'lazy'.
 +     * 
-+     * @return the value of field 'AutoNaming'.
++     * @return the value of field 'Lazy'.
 +     */
-+    public org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType getAutoNaming(
++    public boolean isLazy(
 +    ) {
-+        return this._autoNaming;
++        return this._lazy;
 +    }
 +
 +    /**
-+     * Returns the value of field 'classMapping'. The field
-+     * 'classMapping' has the following description: The 'class'
-+     * element is used to store information about mapping of a
-+     * class.
-+     *  
++     * Returns the value of field 'nillable'.
 +     * 
-+     * @return the value of field 'ClassMapping'.
++     * @return the value of field 'Nillable'.
 +     */
-+    public org.exolab.castor.mapping.xml.ClassMapping getClassMapping(
++    public boolean isNillable(
 +    ) {
-+        return this._classMapping;
++        return this._nillable;
 +    }
 +
 +    /**
-+     * Returns the value of field 'location'. The field 'location'
-+     * has the following description: Allows specifying a nested
-+     * location path for this field,
-+     *  the value should just be a simplified XPath like value
-+     *  where names are separated by "/".
-+     *  
++     * Returns the value of field 'required'.
 +     * 
-+     * @return the value of field 'Location'.
++     * @return the value of field 'Required'.
 +     */
-+    public java.lang.String getLocation(
++    public boolean isRequired(
 +    ) {
-+        return this._location;
++        return this._required;
 +    }
 +
 +    /**
-+     * Returns the value of field 'matches'.
++     * Returns the value of field 'transient'.
 +     * 
-+     * @return the value of field 'Matches'.
++     * @return the value of field 'Transient'.
 +     */
-+    public java.lang.String getMatches(
++    public boolean isTransient(
 +    ) {
-+        return this._matches;
++        return this._transient;
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'. The field 'name' has the
-+     * following description: An optional attribute used for
-+     * specifying the XML name for the
-+     *  field associated with the 'bind-xml' element.
-+     *  
++     * Method isValid.
 +     * 
-+     * @return the value of field 'Name'.
++     * @return true if this object is valid according to the schema
 +     */
-+    public java.lang.String getName(
++    public boolean isValid(
 +    ) {
-+        return this._name;
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
-+     * Returns the value of field 'node'.
 +     * 
-+     * @return the value of field 'Node'.
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public org.exolab.castor.mapping.xml.types.BindXmlNodeType getNode(
-+    ) {
-+        return this._node;
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
-+     * Method getProperty.
 +     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.Property at the given index
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    public org.exolab.castor.mapping.xml.Property getProperty(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._propertyList.size()) {
-+            throw new IndexOutOfBoundsException("getProperty: Index value '" + index + "' not in range [0.." + (this._propertyList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.Property) _propertyList.get(index);
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
 +    }
 +
 +    /**
-+     * Method getProperty.Returns the contents of the collection in
-+     * an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
++     * Sets the value of field 'bindXml'. The field 'bindXml' has
++     * the following description: The 'bind-xml' element is used
++     * for specifying XML specific databinding
++     *  properties and behavior for a specific field. 'bind-xml'
++     * may only appear
++     *  as a child of a 'field' element.
++     *  
 +     * 
-+     * @return this collection as an Array
++     * @param bindXml the value of field 'bindXml'.
 +     */
-+    public org.exolab.castor.mapping.xml.Property[] getProperty(
-+    ) {
-+        org.exolab.castor.mapping.xml.Property[] array = new org.exolab.castor.mapping.xml.Property[0];
-+        return (org.exolab.castor.mapping.xml.Property[]) this._propertyList.toArray(array);
++    public void setBindXml(
++            final org.exolab.castor.mapping.xml.BindXml bindXml) {
++        this._bindXml = bindXml;
 +    }
 +
 +    /**
-+     * Method getPropertyCount.
++     * Sets the value of field 'collection'. The field 'collection'
++     * has the following description: An optional attribute used to
++     * specify the type of the collection, if 
++     *  the property is multi-valued.
++     *  
 +     * 
-+     * @return the size of this collection
++     * @param collection the value of field 'collection'.
 +     */
-+    public int getPropertyCount(
-+    ) {
-+        return this._propertyList.size();
++    public void setCollection(
++            final org.exolab.castor.mapping.xml.types.FieldMappingCollectionType collection) {
++        this._collection = collection;
 +    }
 +
 +    /**
-+     * Returns the value of field 'QNamePrefix'.
++     * Sets the value of field 'comparator'.
 +     * 
-+     * @return the value of field 'QNamePrefix'.
++     * @param comparator the value of field 'comparator'.
 +     */
-+    public java.lang.String getQNamePrefix(
-+    ) {
-+        return this._QNamePrefix;
++    public void setComparator(
++            final java.lang.String comparator) {
++        this._comparator = comparator;
 +    }
 +
 +    /**
-+     * Returns the value of field 'reference'.
++     * Sets the value of field 'container'. The field 'container'
++     * has the following description: Indicates whether the field
++     * should be treated as a container, 
++     *  i.e. only it's fields should be persisted, but not the
++     * containing 
++     *  class itself. In this case, the container attribute should
++     *  be set to true (supported in Castor XML only).
++     *  
 +     * 
-+     * @return the value of field 'Reference'.
++     * @param container the value of field 'container'.
 +     */
-+    public boolean getReference(
-+    ) {
-+        return this._reference;
++    public void setContainer(
++            final boolean container) {
++        this._container = container;
++        this._has_container = true;
 +    }
 +
 +    /**
-+     * Returns the value of field 'transient'.
++     * Sets the value of field 'createMethod'.
 +     * 
-+     * @return the value of field 'Transient'.
++     * @param createMethod the value of field 'createMethod'.
 +     */
-+    public boolean getTransient(
-+    ) {
-+        return this._transient;
++    public void setCreateMethod(
++            final java.lang.String createMethod) {
++        this._createMethod = createMethod;
 +    }
 +
 +    /**
-+     * Returns the value of field 'type'.
++     * Sets the value of field 'description'.
 +     * 
-+     * @return the value of field 'Type'.
++     * @param description the value of field 'description'.
 +     */
-+    public java.lang.String getType(
-+    ) {
-+        return this._type;
++    public void setDescription(
++            final java.lang.String description) {
++        this._description = description;
 +    }
 +
 +    /**
-+     * Method hasReference.
++     * Sets the value of field 'direct'.
 +     * 
-+     * @return true if at least one Reference has been added
++     * @param direct the value of field 'direct'.
 +     */
-+    public boolean hasReference(
-+    ) {
-+        return this._has_reference;
++    public void setDirect(
++            final boolean direct) {
++        this._direct = direct;
++        this._has_direct = true;
 +    }
 +
 +    /**
-+     * Method hasTransient.
++     * Sets the value of field 'getMethod'.
 +     * 
-+     * @return true if at least one Transient has been added
++     * @param getMethod the value of field 'getMethod'.
 +     */
-+    public boolean hasTransient(
-+    ) {
-+        return this._has_transient;
++    public void setGetMethod(
++            final java.lang.String getMethod) {
++        this._getMethod = getMethod;
 +    }
 +
 +    /**
-+     * Returns the value of field 'reference'.
++     * Sets the value of field 'handler'.
 +     * 
-+     * @return the value of field 'Reference'.
++     * @param handler the value of field 'handler'.
 +     */
-+    public boolean isReference(
-+    ) {
-+        return this._reference;
++    public void setHandler(
++            final java.lang.String handler) {
++        this._handler = handler;
 +    }
 +
 +    /**
-+     * Returns the value of field 'transient'.
++     * Sets the value of field 'hasMethod'.
 +     * 
-+     * @return the value of field 'Transient'.
++     * @param hasMethod the value of field 'hasMethod'.
 +     */
-+    public boolean isTransient(
-+    ) {
-+        return this._transient;
++    public void setHasMethod(
++            final java.lang.String hasMethod) {
++        this._hasMethod = hasMethod;
 +    }
 +
 +    /**
-+     * Method isValid.
++     * Sets the value of field 'identity'.
 +     * 
-+     * @return true if this object is valid according to the schema
++     * @param identity the value of field 'identity'.
 +     */
-+    public boolean isValid(
-+    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
++    public void setIdentity(
++            final boolean identity) {
++        this._identity = identity;
++        this._has_identity = true;
 +    }
 +
 +    /**
-+     * Method iterateProperty.
++     * Sets the value of field 'lazy'.
 +     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
++     * @param lazy the value of field 'lazy'.
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Property> iterateProperty(
-+    ) {
-+        return this._propertyList.iterator();
++    public void setLazy(
++            final boolean lazy) {
++        this._lazy = lazy;
++        this._has_lazy = true;
 +    }
 +
 +    /**
++     * Sets the value of field 'ldap'.
 +     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @param ldap the value of field 'ldap'.
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
-+    }
-+
-+    /**
-+     */
-+    public void removeAllProperty(
-+    ) {
-+        this._propertyList.clear();
-+    }
-+
-+    /**
-+     * Method removeProperty.
-+     * 
-+     * @param vProperty
-+     * @return true if the object was removed from the collection.
-+     */
-+    public boolean removeProperty(
-+            final org.exolab.castor.mapping.xml.Property vProperty) {
-+        boolean removed = _propertyList.remove(vProperty);
-+        return removed;
-+    }
-+
-+    /**
-+     * Method removePropertyAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
-+     */
-+    public org.exolab.castor.mapping.xml.Property removePropertyAt(
-+            final int index) {
-+        java.lang.Object obj = this._propertyList.remove(index);
-+        return (org.exolab.castor.mapping.xml.Property) obj;
-+    }
-+
-+    /**
-+     * Sets the value of field 'autoNaming'. The field 'autoNaming'
-+     * has the following description: Allows specifying how Castor
-+     * should automatically determines
-+     *  the XML name of this field when no name has been specified.
-+     *  In most cases the XML name is determined by using the field
-+     * name,
-+     *  but in some cases the user may want to use the Class name
-+     * of
-+     *  the field type. This attribute allows choosing between the
-+     *  two approaches. If this attribute is not specified, the
-+     * field
-+     *  name is used as the XML name.
-+     *  
-+     * 
-+     * @param autoNaming the value of field 'autoNaming'.
-+     */
-+    public void setAutoNaming(
-+            final org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType autoNaming) {
-+        this._autoNaming = autoNaming;
-+    }
-+
-+    /**
-+     * Sets the value of field 'classMapping'. The field
-+     * 'classMapping' has the following description: The 'class'
-+     * element is used to store information about mapping of a
-+     * class.
-+     *  
-+     * 
-+     * @param classMapping the value of field 'classMapping'.
-+     */
-+    public void setClassMapping(
-+            final org.exolab.castor.mapping.xml.ClassMapping classMapping) {
-+        this._classMapping = classMapping;
-+    }
-+
-+    /**
-+     * Sets the value of field 'location'. The field 'location' has
-+     * the following description: Allows specifying a nested
-+     * location path for this field,
-+     *  the value should just be a simplified XPath like value
-+     *  where names are separated by "/".
-+     *  
-+     * 
-+     * @param location the value of field 'location'.
-+     */
-+    public void setLocation(
-+            final java.lang.String location) {
-+        this._location = location;
-+    }
-+
-+    /**
-+     * Sets the value of field 'matches'.
-+     * 
-+     * @param matches the value of field 'matches'.
-+     */
-+    public void setMatches(
-+            final java.lang.String matches) {
-+        this._matches = matches;
++    public void setLdap(
++            final org.exolab.castor.mapping.xml.Ldap ldap) {
++        this._ldap = ldap;
 +    }
 +
 +    /**
 +     * Sets the value of field 'name'. The field 'name' has the
-+     * following description: An optional attribute used for
-+     * specifying the XML name for the
-+     *  field associated with the 'bind-xml' element.
++     * following description: A required attribute used to identify
++     * the name of the property. 
 +     *  
 +     * 
 +     * @param name the value of field 'name'.
@@ -3749,69 +3810,49 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'node'.
-+     * 
-+     * @param node the value of field 'node'.
-+     */
-+    public void setNode(
-+            final org.exolab.castor.mapping.xml.types.BindXmlNodeType node) {
-+        this._node = node;
-+    }
-+
-+    /**
-+     * 
++     * Sets the value of field 'nillable'.
 +     * 
-+     * @param index
-+     * @param vProperty
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param nillable the value of field 'nillable'.
 +     */
-+    public void setProperty(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Property vProperty)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._propertyList.size()) {
-+            throw new IndexOutOfBoundsException("setProperty: Index value '" + index + "' not in range [0.." + (this._propertyList.size() - 1) + "]");
-+        }
-+
-+        this._propertyList.set(index, vProperty);
++    public void setNillable(
++            final boolean nillable) {
++        this._nillable = nillable;
++        this._has_nillable = true;
 +    }
 +
 +    /**
++     * Sets the value of field 'required'.
 +     * 
-+     * 
-+     * @param vPropertyArray
++     * @param required the value of field 'required'.
 +     */
-+    public void setProperty(
-+            final org.exolab.castor.mapping.xml.Property[] vPropertyArray) {
-+        //-- copy array
-+        _propertyList.clear();
-+
-+        for (int i = 0; i < vPropertyArray.length; i++) {
-+                this._propertyList.add(vPropertyArray[i]);
-+        }
++    public void setRequired(
++            final boolean required) {
++        this._required = required;
++        this._has_required = true;
 +    }
 +
 +    /**
-+     * Sets the value of field 'QNamePrefix'.
++     * Sets the value of field 'setMethod'.
 +     * 
-+     * @param QNamePrefix the value of field 'QNamePrefix'.
++     * @param setMethod the value of field 'setMethod'.
 +     */
-+    public void setQNamePrefix(
-+            final java.lang.String QNamePrefix) {
-+        this._QNamePrefix = QNamePrefix;
++    public void setSetMethod(
++            final java.lang.String setMethod) {
++        this._setMethod = setMethod;
 +    }
 +
 +    /**
-+     * Sets the value of field 'reference'.
++     * Sets the value of field 'sql'. The field 'sql' has the
++     * following description: The 'sql' element is used to store
++     * information about the database 
++     *  column to which a Java object is mapped to.
++     *  
 +     * 
-+     * @param reference the value of field 'reference'.
++     * @param sql the value of field 'sql'.
 +     */
-+    public void setReference(
-+            final boolean reference) {
-+        this._reference = reference;
-+        this._has_reference = true;
++    public void setSql(
++            final org.exolab.castor.mapping.xml.Sql sql) {
++        this._sql = sql;
 +    }
 +
 +    /**
@@ -3827,7 +3868,10 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'type'.
++     * Sets the value of field 'type'. The field 'type' has the
++     * following description: An optional attribute used to
++     * identify the type of the property.
++     *  
 +     * 
 +     * @param type the value of field 'type'.
 +     */
@@ -3844,12 +3888,13 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.exolab.castor.mapping.xml.BindXml
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.FieldMapping
 +     */
-+    public static org.exolab.castor.mapping.xml.BindXml unmarshal(
++    public static org.exolab.castor.mapping.xml.FieldMapping unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.BindXml) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.BindXml.class, reader);
++        return (org.exolab.castor.mapping.xml.FieldMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.FieldMapping.class, reader);
 +    }
 +
 +    /**
@@ -3867,11 +3912,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/MapTo.java
-@@ -0,0 +1,335 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/Property.java
+@@ -0,0 +1,110 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -3879,176 +3924,173 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * The 'map-to' element is used for specifying the name of the item
-+ * 
-+ *  that should be associated with the given Java object.
-+ *  
++ * Class Property.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class MapTo implements java.io.Serializable {
++public class Property extends PropertyType 
++implements java.io.Serializable
++{
 +
 +
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
++      //----------------/
++     //- Constructors -/
++    //----------------/
 +
-+    /**
-+     * An optional attribute used to specify the name of the table 
-+     *  to which the given Java object is associated.
-+     *  
-+     */
-+    private java.lang.String _table;
++    public Property() {
++        super();
++    }
 +
-+    /**
-+     * Field _xml.
-+     */
-+    private java.lang.String _xml;
 +
-+    /**
-+     * Field _nsUri.
-+     */
-+    private java.lang.String _nsUri;
++      //-----------/
++     //- Methods -/
++    //-----------/
 +
 +    /**
-+     * Field _nsPrefix.
++     * Method isValid.
++     * 
++     * @return true if this object is valid according to the schema
 +     */
-+    private java.lang.String _nsPrefix;
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
++    }
 +
 +    /**
-+     * Field _elementDefinition.
++     * 
++     * 
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    private boolean _elementDefinition = false;
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    }
 +
 +    /**
-+     * keeps track of state for field: _elementDefinition
++     * 
++     * 
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    private boolean _has_elementDefinition;
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    }
 +
 +    /**
-+     * Field _ldapDn.
++     * Method unmarshal.
++     * 
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled org.exolab.castor.mapping.xml.Propert
 +     */
-+    private java.lang.String _ldapDn;
++    public static org.exolab.castor.mapping.xml.Property unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.Property) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Property.class, reader);
++    }
 +
 +    /**
-+     * Field _ldapOc.
++     * 
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    private java.lang.String _ldapOc;
-+
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
++    }
 +
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/QueryHint.java
+@@ -0,0 +1,164 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
 +
-+    public MapTo() {
-+        super();
-+    }
++package org.exolab.castor.mapping.xml;
 +
++/**
++ * Class QueryHint.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class QueryHint implements java.io.Serializable {
 +
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
 +
-+    /**
-+     */
-+    public void deleteElementDefinition(
-+    ) {
-+        this._has_elementDefinition= false;
-+    }
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
 +
 +    /**
-+     * Returns the value of field 'elementDefinition'.
-+     * 
-+     * @return the value of field 'ElementDefinition'.
++     * Field _name.
 +     */
-+    public boolean getElementDefinition(
-+    ) {
-+        return this._elementDefinition;
-+    }
++    private java.lang.String _name;
 +
 +    /**
-+     * Returns the value of field 'ldapDn'.
-+     * 
-+     * @return the value of field 'LdapDn'.
++     * Field _value.
 +     */
-+    public java.lang.String getLdapDn(
-+    ) {
-+        return this._ldapDn;
-+    }
++    private java.lang.String _value;
 +
-+    /**
-+     * Returns the value of field 'ldapOc'.
-+     * 
-+     * @return the value of field 'LdapOc'.
-+     */
-+    public java.lang.String getLdapOc(
-+    ) {
-+        return this._ldapOc;
-+    }
 +
-+    /**
-+     * Returns the value of field 'nsPrefix'.
-+     * 
-+     * @return the value of field 'NsPrefix'.
-+     */
-+    public java.lang.String getNsPrefix(
-+    ) {
-+        return this._nsPrefix;
-+    }
++      //----------------/
++     //- Constructors -/
++    //----------------/
 +
-+    /**
-+     * Returns the value of field 'nsUri'.
-+     * 
-+     * @return the value of field 'NsUri'.
-+     */
-+    public java.lang.String getNsUri(
-+    ) {
-+        return this._nsUri;
++    public QueryHint() {
++        super();
 +    }
 +
-+    /**
-+     * Returns the value of field 'table'. The field 'table' has
-+     * the following description: An optional attribute used to
-+     * specify the name of the table 
-+     *  to which the given Java object is associated.
-+     *  
-+     * 
-+     * @return the value of field 'Table'.
-+     */
-+    public java.lang.String getTable(
-+    ) {
-+        return this._table;
-+    }
 +
-+    /**
-+     * Returns the value of field 'xml'.
-+     * 
-+     * @return the value of field 'Xml'.
-+     */
-+    public java.lang.String getXml(
-+    ) {
-+        return this._xml;
-+    }
++      //-----------/
++     //- Methods -/
++    //-----------/
 +
 +    /**
-+     * Method hasElementDefinition.
++     * Returns the value of field 'name'.
 +     * 
-+     * @return true if at least one ElementDefinition has been added
++     * @return the value of field 'Name'.
 +     */
-+    public boolean hasElementDefinition(
++    public java.lang.String getName(
 +    ) {
-+        return this._has_elementDefinition;
++        return this._name;
 +    }
 +
 +    /**
-+     * Returns the value of field 'elementDefinition'.
++     * Returns the value of field 'value'.
 +     * 
-+     * @return the value of field 'ElementDefinition'.
++     * @return the value of field 'Value'.
 +     */
-+    public boolean isElementDefinition(
++    public java.lang.String getValue(
 +    ) {
-+        return this._elementDefinition;
++        return this._value;
 +    }
 +
 +    /**
@@ -4099,139 +4141,97 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'elementDefinition'.
++     * Sets the value of field 'name'.
 +     * 
-+     * @param elementDefinition the value of field
-+     * 'elementDefinition'.
++     * @param name the value of field 'name'.
 +     */
-+    public void setElementDefinition(
-+            final boolean elementDefinition) {
-+        this._elementDefinition = elementDefinition;
-+        this._has_elementDefinition = true;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
-+     * Sets the value of field 'ldapDn'.
++     * Sets the value of field 'value'.
 +     * 
-+     * @param ldapDn the value of field 'ldapDn'.
++     * @param value the value of field 'value'.
 +     */
-+    public void setLdapDn(
-+            final java.lang.String ldapDn) {
-+        this._ldapDn = ldapDn;
++    public void setValue(
++            final java.lang.String value) {
++        this._value = value;
 +    }
 +
 +    /**
-+     * Sets the value of field 'ldapOc'.
++     * Method unmarshal.
 +     * 
-+     * @param ldapOc the value of field 'ldapOc'.
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.QueryHint
 +     */
-+    public void setLdapOc(
-+            final java.lang.String ldapOc) {
-+        this._ldapOc = ldapOc;
++    public static org.exolab.castor.mapping.xml.QueryHint unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.QueryHint) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.QueryHint.class, reader);
 +    }
 +
 +    /**
-+     * Sets the value of field 'nsPrefix'.
 +     * 
-+     * @param nsPrefix the value of field 'nsPrefix'.
-+     */
-+    public void setNsPrefix(
-+            final java.lang.String nsPrefix) {
-+        this._nsPrefix = nsPrefix;
-+    }
-+
-+    /**
-+     * Sets the value of field 'nsUri'.
 +     * 
-+     * @param nsUri the value of field 'nsUri'.
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public void setNsUri(
-+            final java.lang.String nsUri) {
-+        this._nsUri = nsUri;
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
 +    }
 +
-+    /**
-+     * Sets the value of field 'table'. The field 'table' has the
-+     * following description: An optional attribute used to specify
-+     * the name of the table 
-+     *  to which the given Java object is associated.
-+     *  
-+     * 
-+     * @param table the value of field 'table'.
-+     */
-+    public void setTable(
-+            final java.lang.String table) {
-+        this._table = table;
-+    }
-+
-+    /**
-+     * Sets the value of field 'xml'.
-+     * 
-+     * @param xml the value of field 'xml'.
-+     */
-+    public void setXml(
-+            final java.lang.String xml) {
-+        this._xml = xml;
-+    }
-+
-+    /**
-+     * Method unmarshal.
-+     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.exolab.castor.mapping.xml.MapTo
-+     */
-+    public static org.exolab.castor.mapping.xml.MapTo unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.MapTo) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.MapTo.class, reader);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/Property.java
-@@ -0,0 +1,110 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/Param.java
+@@ -0,0 +1,163 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
 +
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class Property.
++ * Class Param.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Property extends PropertyType 
-+implements java.io.Serializable
-+{
++public class Param implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _name.
++     */
++    private java.lang.String _name;
++
++    /**
++     * Field _value.
++     */
++    private java.lang.String _value;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Property() {
++    public Param() {
 +        super();
 +    }
 +
@@ -4241,6 +4241,26 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
++     * Returns the value of field 'name'.
++     * 
++     * @return the value of field 'Name'.
++     */
++    public java.lang.String getName(
++    ) {
++        return this._name;
++    }
++
++    /**
++     * Returns the value of field 'value'.
++     * 
++     * @return the value of field 'Value'.
++     */
++    public java.lang.String getValue(
++    ) {
++        return this._value;
++    }
++
++    /**
 +     * Method isValid.
 +     * 
 +     * @return true if this object is valid according to the schema
@@ -4288,6 +4308,26 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Sets the value of field 'name'.
++     * 
++     * @param name the value of field 'name'.
++     */
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
++    }
++
++    /**
++     * Sets the value of field 'value'.
++     * 
++     * @param value the value of field 'value'.
++     */
++    public void setValue(
++            final java.lang.String value) {
++        this._value = value;
++    }
++
++    /**
 +     * Method unmarshal.
 +     * 
 +     * @param reader
@@ -4295,12 +4335,12 @@ Last-Update: 2010-06-27
 +     * null or if any SAXException is thrown during marshaling
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.exolab.castor.mapping.xml.Propert
++     * @return the unmarshaled org.exolab.castor.mapping.xml.Param
 +     */
-+    public static org.exolab.castor.mapping.xml.Property unmarshal(
++    public static org.exolab.castor.mapping.xml.Param unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.Property) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Property.class, reader);
++        return (org.exolab.castor.mapping.xml.Param) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Param.class, reader);
 +    }
 +
 +    /**
@@ -4318,11 +4358,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/CacheTypeMapping.java
-@@ -0,0 +1,413 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/ClassMapping.java
+@@ -0,0 +1,1073 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -4330,12 +4370,14 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class CacheTypeMapping.
++ * The 'class' element is used to store information about mapping
++ * of a class.
++ *  
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class CacheTypeMapping implements java.io.Serializable {
++public class ClassMapping implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -4343,44 +4385,124 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _type.
++     * Specifies the fully qualified package name of the Java
++     * object needed to be mapped.
++     *  
 +     */
-+    private java.lang.String _type = "count-limited";
++    private java.lang.String _name;
 +
 +    /**
-+     * Field _debug.
++     * An optional attribute to specify the extension relationship 
++     *  between objects. Used only if mapping of the another object
++     * 
++     *  is provided.
++     *  
 +     */
-+    private boolean _debug = false;
++    private java.lang.Object _extends;
 +
 +    /**
-+     * keeps track of state for field: _debug
++     * An optional attribute to specify that one object depends on 
++     *  another object.
++     *  
 +     */
-+    private boolean _has_debug;
++    private java.lang.Object _depends;
 +
 +    /**
-+     * Field _capacity.
++     * An optional attribute for specifying the unique
++     * identificator 
++     *  of the object within the persistence storage. 
++     *  
 +     */
-+    private long _capacity;
++    private java.util.List<java.lang.String> _identity;
 +
 +    /**
-+     * keeps track of state for field: _capacity
++     * Field _access.
 +     */
-+    private boolean _has_capacity;
++    private org.exolab.castor.mapping.xml.types.ClassMappingAccessType _access = org.exolab.castor.mapping.xml.types.ClassMappingAccessType.fromValue("shared");
 +
 +    /**
-+     * Field _paramList.
++     * Field _keyGenerator.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.Param> _paramList;
++    private java.lang.String _keyGenerator;
++
++    /**
++     * Specifies whether Castor should use reflection to establish
++     * XML data 
++     *  binding information at startup time for those fields that
++     * are not
++     *  mapped explicitly.
++     *  
++     */
++    private boolean _autoComplete = false;
++
++    /**
++     * keeps track of state for field: _autoComplete
++     */
++    private boolean _has_autoComplete;
++
++    /**
++     * Field _verifyConstructable.
++     */
++    private boolean _verifyConstructable = true;
++
++    /**
++     * keeps track of state for field: _verifyConstructable
++     */
++    private boolean _has_verifyConstructable;
++
++    /**
++     * If set to the name of a mapped field, this field will be
++     * used for check 
++     *  on object modifications during transactions (Castor JDO
++     * only).
++     *  
++     */
++    private java.lang.String _version;
++
++    /**
++     * Field _description.
++     */
++    private java.lang.String _description;
++
++    /**
++     * Field _cacheTypeMapping.
++     */
++    private org.exolab.castor.mapping.xml.CacheTypeMapping _cacheTypeMapping;
++
++    /**
++     * The 'map-to' element is used for specifying the name of the
++     * item 
++     *  that should be associated with the given Java object.
++     *  
++     */
++    private org.exolab.castor.mapping.xml.MapTo _mapTo;
++
++    /**
++     * Field _namedQueryList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.NamedQuery> _namedQueryList;
++
++    /**
++     * Field _namedNativeQueryList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.NamedNativeQuery> _namedNativeQueryList;
++
++    /**
++     * Field _classChoice.
++     */
++    private org.exolab.castor.mapping.xml.ClassChoice _classChoice;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public CacheTypeMapping() {
++    public ClassMapping() {
 +        super();
-+        setType("count-limited");
-+        this._paramList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Param>();
++        this._identity = new java.util.ArrayList<java.lang.String>();
++        setAccess(org.exolab.castor.mapping.xml.types.ClassMappingAccessType.fromValue("shared"));
++        this._namedQueryList = new java.util.ArrayList<org.exolab.castor.mapping.xml.NamedQuery>();
++        this._namedNativeQueryList = new java.util.ArrayList<org.exolab.castor.mapping.xml.NamedNativeQuery>();
 +    }
 +
 +
@@ -4391,505 +4513,453 @@ Last-Update: 2010-06-27
 +    /**
 +     * 
 +     * 
-+     * @param vParam
++     * @param vIdentity
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void addParam(
-+            final org.exolab.castor.mapping.xml.Param vParam)
++    public void addIdentity(
++            final java.lang.String vIdentity)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._paramList.add(vParam);
++        this._identity.add(vIdentity);
 +    }
 +
 +    /**
 +     * 
 +     * 
 +     * @param index
-+     * @param vParam
++     * @param vIdentity
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void addParam(
++    public void addIdentity(
 +            final int index,
-+            final org.exolab.castor.mapping.xml.Param vParam)
++            final java.lang.String vIdentity)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._paramList.add(index, vParam);
++        this._identity.add(index, vIdentity);
 +    }
 +
 +    /**
++     * 
++     * 
++     * @param vNamedNativeQuery
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void deleteCapacity(
-+    ) {
-+        this._has_capacity= false;
++    public void addNamedNativeQuery(
++            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery)
++    throws java.lang.IndexOutOfBoundsException {
++        this._namedNativeQueryList.add(vNamedNativeQuery);
 +    }
 +
 +    /**
++     * 
++     * 
++     * @param index
++     * @param vNamedNativeQuery
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void deleteDebug(
-+    ) {
-+        this._has_debug= false;
++    public void addNamedNativeQuery(
++            final int index,
++            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery)
++    throws java.lang.IndexOutOfBoundsException {
++        this._namedNativeQueryList.add(index, vNamedNativeQuery);
 +    }
 +
 +    /**
-+     * Method enumerateParam.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
-+     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Param> enumerateParam(
-+    ) {
-+        return java.util.Collections.enumeration(this._paramList);
-+    }
-+
-+    /**
-+     * Returns the value of field 'capacity'.
 +     * 
-+     * @return the value of field 'Capacity'.
++     * @param vNamedQuery
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public long getCapacity(
-+    ) {
-+        return this._capacity;
++    public void addNamedQuery(
++            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery)
++    throws java.lang.IndexOutOfBoundsException {
++        this._namedQueryList.add(vNamedQuery);
 +    }
 +
 +    /**
-+     * Returns the value of field 'debug'.
 +     * 
-+     * @return the value of field 'Debug'.
-+     */
-+    public boolean getDebug(
-+    ) {
-+        return this._debug;
-+    }
-+
-+    /**
-+     * Method getParam.
 +     * 
 +     * @param index
++     * @param vNamedQuery
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
-+     * @return the value of the org.exolab.castor.mapping.xml.Param
-+     * at the given index
 +     */
-+    public org.exolab.castor.mapping.xml.Param getParam(
-+            final int index)
++    public void addNamedQuery(
++            final int index,
++            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery)
 +    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._paramList.size()) {
-+            throw new IndexOutOfBoundsException("getParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.Param) _paramList.get(index);
++        this._namedQueryList.add(index, vNamedQuery);
 +    }
 +
 +    /**
-+     * Method getParam.Returns the contents of the collection in an
-+     * Array.  <p>Note:  Just in case the collection contents are
-+     * changing in another thread, we pass a 0-length Array of the
-+     * correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
-+     * 
-+     * @return this collection as an Array
 +     */
-+    public org.exolab.castor.mapping.xml.Param[] getParam(
++    public void deleteAutoComplete(
 +    ) {
-+        org.exolab.castor.mapping.xml.Param[] array = new org.exolab.castor.mapping.xml.Param[0];
-+        return (org.exolab.castor.mapping.xml.Param[]) this._paramList.toArray(array);
++        this._has_autoComplete= false;
 +    }
 +
 +    /**
-+     * Method getParamCount.
-+     * 
-+     * @return the size of this collection
 +     */
-+    public int getParamCount(
++    public void deleteVerifyConstructable(
 +    ) {
-+        return this._paramList.size();
++        this._has_verifyConstructable= false;
 +    }
 +
 +    /**
-+     * Returns the value of field 'type'.
++     * Method enumerateIdentity.
 +     * 
-+     * @return the value of field 'Type'.
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public java.lang.String getType(
++    public java.util.Enumeration<? extends java.lang.String> enumerateIdentity(
 +    ) {
-+        return this._type;
++        return java.util.Collections.enumeration(this._identity);
 +    }
 +
 +    /**
-+     * Method hasCapacity.
++     * Method enumerateNamedNativeQuery.
 +     * 
-+     * @return true if at least one Capacity has been added
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public boolean hasCapacity(
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.NamedNativeQuery> enumerateNamedNativeQuery(
 +    ) {
-+        return this._has_capacity;
++        return java.util.Collections.enumeration(this._namedNativeQueryList);
 +    }
 +
 +    /**
-+     * Method hasDebug.
++     * Method enumerateNamedQuery.
 +     * 
-+     * @return true if at least one Debug has been added
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public boolean hasDebug(
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.NamedQuery> enumerateNamedQuery(
 +    ) {
-+        return this._has_debug;
++        return java.util.Collections.enumeration(this._namedQueryList);
 +    }
 +
 +    /**
-+     * Returns the value of field 'debug'.
++     * Returns the value of field 'access'.
 +     * 
-+     * @return the value of field 'Debug'.
++     * @return the value of field 'Access'.
 +     */
-+    public boolean isDebug(
++    public org.exolab.castor.mapping.xml.types.ClassMappingAccessType getAccess(
 +    ) {
-+        return this._debug;
++        return this._access;
 +    }
 +
 +    /**
-+     * Method isValid.
++     * Returns the value of field 'autoComplete'. The field
++     * 'autoComplete' has the following description: Specifies
++     * whether Castor should use reflection to establish XML data 
++     *  binding information at startup time for those fields that
++     * are not
++     *  mapped explicitly.
++     *  
 +     * 
-+     * @return true if this object is valid according to the schema
++     * @return the value of field 'AutoComplete'.
 +     */
-+    public boolean isValid(
++    public boolean getAutoComplete(
 +    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
++        return this._autoComplete;
 +    }
 +
 +    /**
-+     * Method iterateParam.
++     * Returns the value of field 'cacheTypeMapping'.
 +     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
++     * @return the value of field 'CacheTypeMapping'.
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Param> iterateParam(
++    public org.exolab.castor.mapping.xml.CacheTypeMapping getCacheTypeMapping(
 +    ) {
-+        return this._paramList.iterator();
++        return this._cacheTypeMapping;
 +    }
 +
 +    /**
++     * Returns the value of field 'classChoice'.
 +     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return the value of field 'ClassChoice'.
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    public org.exolab.castor.mapping.xml.ClassChoice getClassChoice(
++    ) {
++        return this._classChoice;
 +    }
 +
 +    /**
++     * Returns the value of field 'depends'. The field 'depends'
++     * has the following description: An optional attribute to
++     * specify that one object depends on 
++     *  another object.
++     *  
 +     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
++     * @return the value of field 'Depends'.
 +     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    public java.lang.Object getDepends(
++    ) {
++        return this._depends;
 +    }
 +
 +    /**
++     * Returns the value of field 'description'.
++     * 
++     * @return the value of field 'Description'.
 +     */
-+    public void removeAllParam(
++    public java.lang.String getDescription(
 +    ) {
-+        this._paramList.clear();
++        return this._description;
 +    }
 +
 +    /**
-+     * Method removeParam.
++     * Returns the value of field 'extends'. The field 'extends'
++     * has the following description: An optional attribute to
++     * specify the extension relationship 
++     *  between objects. Used only if mapping of the another object
 +     * 
-+     * @param vParam
-+     * @return true if the object was removed from the collection.
++     *  is provided.
++     *  
++     * 
++     * @return the value of field 'Extends'.
 +     */
-+    public boolean removeParam(
-+            final org.exolab.castor.mapping.xml.Param vParam) {
-+        boolean removed = _paramList.remove(vParam);
-+        return removed;
++    public java.lang.Object getExtends(
++    ) {
++        return this._extends;
 +    }
 +
 +    /**
-+     * Method removeParamAt.
++     * Method getIdentity.
 +     * 
 +     * @param index
-+     * @return the element removed from the collection
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the java.lang.String at the given index
 +     */
-+    public org.exolab.castor.mapping.xml.Param removeParamAt(
-+            final int index) {
-+        java.lang.Object obj = this._paramList.remove(index);
-+        return (org.exolab.castor.mapping.xml.Param) obj;
++    public java.lang.String getIdentity(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._identity.size()) {
++            throw new IndexOutOfBoundsException("getIdentity: Index value '" + index + "' not in range [0.." + (this._identity.size() - 1) + "]");
++        }
++
++        return (java.lang.String) _identity.get(index);
 +    }
 +
 +    /**
-+     * Sets the value of field 'capacity'.
++     * Method getIdentity.Returns the contents of the collection in
++     * an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
-+     * @param capacity the value of field 'capacity'.
++     * @return this collection as an Array
 +     */
-+    public void setCapacity(
-+            final long capacity) {
-+        this._capacity = capacity;
-+        this._has_capacity = true;
++    public java.lang.String[] getIdentity(
++    ) {
++        java.lang.String[] array = new java.lang.String[0];
++        return (java.lang.String[]) this._identity.toArray(array);
 +    }
 +
 +    /**
-+     * Sets the value of field 'debug'.
++     * Method getIdentityCount.
 +     * 
-+     * @param debug the value of field 'debug'.
++     * @return the size of this collection
 +     */
-+    public void setDebug(
-+            final boolean debug) {
-+        this._debug = debug;
-+        this._has_debug = true;
++    public int getIdentityCount(
++    ) {
++        return this._identity.size();
 +    }
 +
 +    /**
++     * Returns the value of field 'keyGenerator'.
 +     * 
-+     * 
-+     * @param index
-+     * @param vParam
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the value of field 'KeyGenerator'.
 +     */
-+    public void setParam(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Param vParam)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._paramList.size()) {
-+            throw new IndexOutOfBoundsException("setParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
-+        }
-+
-+        this._paramList.set(index, vParam);
++    public java.lang.String getKeyGenerator(
++    ) {
++        return this._keyGenerator;
 +    }
 +
 +    /**
++     * Returns the value of field 'mapTo'. The field 'mapTo' has
++     * the following description: The 'map-to' element is used for
++     * specifying the name of the item 
++     *  that should be associated with the given Java object.
++     *  
 +     * 
-+     * 
-+     * @param vParamArray
++     * @return the value of field 'MapTo'.
 +     */
-+    public void setParam(
-+            final org.exolab.castor.mapping.xml.Param[] vParamArray) {
-+        //-- copy array
-+        _paramList.clear();
-+
-+        for (int i = 0; i < vParamArray.length; i++) {
-+                this._paramList.add(vParamArray[i]);
-+        }
++    public org.exolab.castor.mapping.xml.MapTo getMapTo(
++    ) {
++        return this._mapTo;
 +    }
 +
 +    /**
-+     * Sets the value of field 'type'.
++     * Returns the value of field 'name'. The field 'name' has the
++     * following description: Specifies the fully qualified package
++     * name of the Java object needed to be mapped.
++     *  
 +     * 
-+     * @param type the value of field 'type'.
++     * @return the value of field 'Name'.
 +     */
-+    public void setType(
-+            final java.lang.String type) {
-+        this._type = type;
++    public java.lang.String getName(
++    ) {
++        return this._name;
 +    }
 +
 +    /**
-+     * Method unmarshal.
++     * Method getNamedNativeQuery.
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.CacheTypeMapping
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.NamedNativeQuery at the given
++     * index
 +     */
-+    public static org.exolab.castor.mapping.xml.CacheTypeMapping unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.CacheTypeMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.CacheTypeMapping.class, reader);
++    public org.exolab.castor.mapping.xml.NamedNativeQuery getNamedNativeQuery(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._namedNativeQueryList.size()) {
++            throw new IndexOutOfBoundsException("getNamedNativeQuery: Index value '" + index + "' not in range [0.." + (this._namedNativeQueryList.size() - 1) + "]");
++        }
++
++        return (org.exolab.castor.mapping.xml.NamedNativeQuery) _namedNativeQueryList.get(index);
 +    }
 +
 +    /**
++     * Method getNamedNativeQuery.Returns the contents of the
++     * collection in an Array.  <p>Note:  Just in case the
++     * collection contents are changing in another thread, we pass
++     * a 0-length Array of the correct type into the API call. 
++     * This way we <i>know</i> that the Array returned is of
++     * exactly the correct length.
 +     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return this collection as an Array
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public org.exolab.castor.mapping.xml.NamedNativeQuery[] getNamedNativeQuery(
++    ) {
++        org.exolab.castor.mapping.xml.NamedNativeQuery[] array = new org.exolab.castor.mapping.xml.NamedNativeQuery[0];
++        return (org.exolab.castor.mapping.xml.NamedNativeQuery[]) this._namedNativeQueryList.toArray(array);
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/NamedQuery.java
-@@ -0,0 +1,331 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * Class NamedQuery.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class NamedQuery implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _name.
-+     */
-+    private java.lang.String _name;
-+
-+    /**
-+     * Field _query.
-+     */
-+    private java.lang.String _query;
-+
 +    /**
-+     * Field _queryHintList.
++     * Method getNamedNativeQueryCount.
++     * 
++     * @return the size of this collection
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.QueryHint> _queryHintList;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public NamedQuery() {
-+        super();
-+        this._queryHintList = new java.util.ArrayList<org.exolab.castor.mapping.xml.QueryHint>();
++    public int getNamedNativeQueryCount(
++    ) {
++        return this._namedNativeQueryList.size();
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
++     * Method getNamedQuery.
 +     * 
-+     * 
-+     * @param vQueryHint
++     * @param index
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
++     * @return the value of the
++     * org.exolab.castor.mapping.xml.NamedQuery at the given index
 +     */
-+    public void addQueryHint(
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
++    public org.exolab.castor.mapping.xml.NamedQuery getNamedQuery(
++            final int index)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._queryHintList.add(vQueryHint);
++        // check bounds for index
++        if (index < 0 || index >= this._namedQueryList.size()) {
++            throw new IndexOutOfBoundsException("getNamedQuery: Index value '" + index + "' not in range [0.." + (this._namedQueryList.size() - 1) + "]");
++        }
++
++        return (org.exolab.castor.mapping.xml.NamedQuery) _namedQueryList.get(index);
 +    }
 +
 +    /**
++     * Method getNamedQuery.Returns the contents of the collection
++     * in an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
-+     * 
-+     * @param index
-+     * @param vQueryHint
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return this collection as an Array
 +     */
-+    public void addQueryHint(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._queryHintList.add(index, vQueryHint);
++    public org.exolab.castor.mapping.xml.NamedQuery[] getNamedQuery(
++    ) {
++        org.exolab.castor.mapping.xml.NamedQuery[] array = new org.exolab.castor.mapping.xml.NamedQuery[0];
++        return (org.exolab.castor.mapping.xml.NamedQuery[]) this._namedQueryList.toArray(array);
 +    }
 +
 +    /**
-+     * Method enumerateQueryHint.
++     * Method getNamedQueryCount.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @return the size of this collection
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.QueryHint> enumerateQueryHint(
++    public int getNamedQueryCount(
 +    ) {
-+        return java.util.Collections.enumeration(this._queryHintList);
++        return this._namedQueryList.size();
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'.
++     * Returns the value of field 'verifyConstructable'.
 +     * 
-+     * @return the value of field 'Name'.
++     * @return the value of field 'VerifyConstructable'.
 +     */
-+    public java.lang.String getName(
++    public boolean getVerifyConstructable(
 +    ) {
-+        return this._name;
++        return this._verifyConstructable;
 +    }
 +
 +    /**
-+     * Returns the value of field 'query'.
++     * Returns the value of field 'version'. The field 'version'
++     * has the following description: If set to the name of a
++     * mapped field, this field will be used for check 
++     *  on object modifications during transactions (Castor JDO
++     * only).
++     *  
 +     * 
-+     * @return the value of field 'Query'.
++     * @return the value of field 'Version'.
 +     */
-+    public java.lang.String getQuery(
++    public java.lang.String getVersion(
 +    ) {
-+        return this._query;
++        return this._version;
 +    }
 +
 +    /**
-+     * Method getQueryHint.
++     * Method hasAutoComplete.
 +     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.QueryHint at the given index
++     * @return true if at least one AutoComplete has been added
 +     */
-+    public org.exolab.castor.mapping.xml.QueryHint getQueryHint(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._queryHintList.size()) {
-+            throw new IndexOutOfBoundsException("getQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.QueryHint) _queryHintList.get(index);
++    public boolean hasAutoComplete(
++    ) {
++        return this._has_autoComplete;
 +    }
 +
 +    /**
-+     * Method getQueryHint.Returns the contents of the collection
-+     * in an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
++     * Method hasVerifyConstructable.
 +     * 
-+     * @return this collection as an Array
++     * @return true if at least one VerifyConstructable has been
++     * added
 +     */
-+    public org.exolab.castor.mapping.xml.QueryHint[] getQueryHint(
++    public boolean hasVerifyConstructable(
 +    ) {
-+        org.exolab.castor.mapping.xml.QueryHint[] array = new org.exolab.castor.mapping.xml.QueryHint[0];
-+        return (org.exolab.castor.mapping.xml.QueryHint[]) this._queryHintList.toArray(array);
++        return this._has_verifyConstructable;
 +    }
 +
 +    /**
-+     * Method getQueryHintCount.
++     * Returns the value of field 'autoComplete'. The field
++     * 'autoComplete' has the following description: Specifies
++     * whether Castor should use reflection to establish XML data 
++     *  binding information at startup time for those fields that
++     * are not
++     *  mapped explicitly.
++     *  
 +     * 
-+     * @return the size of this collection
++     * @return the value of field 'AutoComplete'.
 +     */
-+    public int getQueryHintCount(
++    public boolean isAutoComplete(
 +    ) {
-+        return this._queryHintList.size();
++        return this._autoComplete;
 +    }
 +
 +    /**
@@ -4908,14 +4978,46 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Method iterateQueryHint.
++     * Returns the value of field 'verifyConstructable'.
++     * 
++     * @return the value of field 'VerifyConstructable'.
++     */
++    public boolean isVerifyConstructable(
++    ) {
++        return this._verifyConstructable;
++    }
++
++    /**
++     * Method iterateIdentity.
 +     * 
 +     * @return an Iterator over all possible elements in this
 +     * collection
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.QueryHint> iterateQueryHint(
++    public java.util.Iterator<? extends java.lang.String> iterateIdentity(
 +    ) {
-+        return this._queryHintList.iterator();
++        return this._identity.iterator();
++    }
++
++    /**
++     * Method iterateNamedNativeQuery.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.NamedNativeQuery> iterateNamedNativeQuery(
++    ) {
++        return this._namedNativeQueryList.iterator();
++    }
++
++    /**
++     * Method iterateNamedQuery.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.NamedQuery> iterateNamedQuery(
++    ) {
++        return this._namedQueryList.iterator();
 +    }
 +
 +    /**
@@ -4952,206 +5054,470 @@ Last-Update: 2010-06-27
 +
 +    /**
 +     */
-+    public void removeAllQueryHint(
++    public void removeAllIdentity(
 +    ) {
-+        this._queryHintList.clear();
++        this._identity.clear();
 +    }
 +
 +    /**
-+     * Method removeQueryHint.
++     */
++    public void removeAllNamedNativeQuery(
++    ) {
++        this._namedNativeQueryList.clear();
++    }
++
++    /**
++     */
++    public void removeAllNamedQuery(
++    ) {
++        this._namedQueryList.clear();
++    }
++
++    /**
++     * Method removeIdentity.
 +     * 
-+     * @param vQueryHint
++     * @param vIdentity
 +     * @return true if the object was removed from the collection.
 +     */
-+    public boolean removeQueryHint(
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint) {
-+        boolean removed = _queryHintList.remove(vQueryHint);
++    public boolean removeIdentity(
++            final java.lang.String vIdentity) {
++        boolean removed = _identity.remove(vIdentity);
 +        return removed;
 +    }
 +
 +    /**
-+     * Method removeQueryHintAt.
++     * Method removeIdentityAt.
 +     * 
 +     * @param index
 +     * @return the element removed from the collection
 +     */
-+    public org.exolab.castor.mapping.xml.QueryHint removeQueryHintAt(
++    public java.lang.String removeIdentityAt(
 +            final int index) {
-+        java.lang.Object obj = this._queryHintList.remove(index);
-+        return (org.exolab.castor.mapping.xml.QueryHint) obj;
++        java.lang.Object obj = this._identity.remove(index);
++        return (java.lang.String) obj;
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'.
++     * Method removeNamedNativeQuery.
 +     * 
-+     * @param name the value of field 'name'.
++     * @param vNamedNativeQuery
++     * @return true if the object was removed from the collection.
 +     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
++    public boolean removeNamedNativeQuery(
++            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery) {
++        boolean removed = _namedNativeQueryList.remove(vNamedNativeQuery);
++        return removed;
 +    }
 +
 +    /**
-+     * Sets the value of field 'query'.
++     * Method removeNamedNativeQueryAt.
 +     * 
-+     * @param query the value of field 'query'.
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public void setQuery(
-+            final java.lang.String query) {
-+        this._query = query;
++    public org.exolab.castor.mapping.xml.NamedNativeQuery removeNamedNativeQueryAt(
++            final int index) {
++        java.lang.Object obj = this._namedNativeQueryList.remove(index);
++        return (org.exolab.castor.mapping.xml.NamedNativeQuery) obj;
 +    }
 +
 +    /**
++     * Method removeNamedQuery.
 +     * 
++     * @param vNamedQuery
++     * @return true if the object was removed from the collection.
++     */
++    public boolean removeNamedQuery(
++            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery) {
++        boolean removed = _namedQueryList.remove(vNamedQuery);
++        return removed;
++    }
++
++    /**
++     * Method removeNamedQueryAt.
 +     * 
 +     * @param index
-+     * @param vQueryHint
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the element removed from the collection
 +     */
-+    public void setQueryHint(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._queryHintList.size()) {
-+            throw new IndexOutOfBoundsException("setQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
-+        }
-+
-+        this._queryHintList.set(index, vQueryHint);
++    public org.exolab.castor.mapping.xml.NamedQuery removeNamedQueryAt(
++            final int index) {
++        java.lang.Object obj = this._namedQueryList.remove(index);
++        return (org.exolab.castor.mapping.xml.NamedQuery) obj;
 +    }
 +
 +    /**
++     * Sets the value of field 'access'.
 +     * 
-+     * 
-+     * @param vQueryHintArray
++     * @param access the value of field 'access'.
 +     */
-+    public void setQueryHint(
-+            final org.exolab.castor.mapping.xml.QueryHint[] vQueryHintArray) {
-+        //-- copy array
-+        _queryHintList.clear();
-+
-+        for (int i = 0; i < vQueryHintArray.length; i++) {
-+                this._queryHintList.add(vQueryHintArray[i]);
-+        }
++    public void setAccess(
++            final org.exolab.castor.mapping.xml.types.ClassMappingAccessType access) {
++        this._access = access;
 +    }
 +
 +    /**
-+     * Method unmarshal.
++     * Sets the value of field 'autoComplete'. The field
++     * 'autoComplete' has the following description: Specifies
++     * whether Castor should use reflection to establish XML data 
++     *  binding information at startup time for those fields that
++     * are not
++     *  mapped explicitly.
++     *  
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.NamedQuery
++     * @param autoComplete the value of field 'autoComplete'.
 +     */
-+    public static org.exolab.castor.mapping.xml.NamedQuery unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.NamedQuery) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.NamedQuery.class, reader);
++    public void setAutoComplete(
++            final boolean autoComplete) {
++        this._autoComplete = autoComplete;
++        this._has_autoComplete = true;
 +    }
 +
 +    /**
++     * Sets the value of field 'cacheTypeMapping'.
 +     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @param cacheTypeMapping the value of field 'cacheTypeMapping'
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public void setCacheTypeMapping(
++            final org.exolab.castor.mapping.xml.CacheTypeMapping cacheTypeMapping) {
++        this._cacheTypeMapping = cacheTypeMapping;
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/ClassChoice.java
-@@ -0,0 +1,451 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * Class ClassChoice.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class ClassChoice implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
++    /**
++     * Sets the value of field 'classChoice'.
++     * 
++     * @param classChoice the value of field 'classChoice'.
++     */
++    public void setClassChoice(
++            final org.exolab.castor.mapping.xml.ClassChoice classChoice) {
++        this._classChoice = classChoice;
++    }
 +
 +    /**
-+     * The 'field' element is used to describe the property of a
-+     * Java object.
++     * Sets the value of field 'depends'. The field 'depends' has
++     * the following description: An optional attribute to specify
++     * that one object depends on 
++     *  another object.
 +     *  
++     * 
++     * @param depends the value of field 'depends'.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.FieldMapping> _fieldMappingList;
++    public void setDepends(
++            final java.lang.Object depends) {
++        this._depends = depends;
++    }
 +
 +    /**
-+     * Field _containerList.
++     * Sets the value of field 'description'.
++     * 
++     * @param description the value of field 'description'.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.Container> _containerList;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public ClassChoice() {
-+        super();
-+        this._fieldMappingList = new java.util.ArrayList<org.exolab.castor.mapping.xml.FieldMapping>();
-+        this._containerList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Container>();
++    public void setDescription(
++            final java.lang.String description) {
++        this._description = description;
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
++     * Sets the value of field 'extends'. The field 'extends' has
++     * the following description: An optional attribute to specify
++     * the extension relationship 
++     *  between objects. Used only if mapping of the another object
 +     * 
++     *  is provided.
++     *  
 +     * 
-+     * @param vContainer
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param _extends
++     * @param extends the value of field 'extends'.
 +     */
-+    public void addContainer(
-+            final org.exolab.castor.mapping.xml.Container vContainer)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._containerList.add(vContainer);
++    public void setExtends(
++            final java.lang.Object _extends) {
++        this._extends = _extends;
 +    }
 +
 +    /**
 +     * 
 +     * 
 +     * @param index
-+     * @param vContainer
++     * @param vIdentity
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void addContainer(
++    public void setIdentity(
 +            final int index,
-+            final org.exolab.castor.mapping.xml.Container vContainer)
++            final java.lang.String vIdentity)
 +    throws java.lang.IndexOutOfBoundsException {
-+        this._containerList.add(index, vContainer);
++        // check bounds for index
++        if (index < 0 || index >= this._identity.size()) {
++            throw new IndexOutOfBoundsException("setIdentity: Index value '" + index + "' not in range [0.." + (this._identity.size() - 1) + "]");
++        }
++
++        this._identity.set(index, vIdentity);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param vFieldMapping
++     * @param vIdentityArray
++     */
++    public void setIdentity(
++            final java.lang.String[] vIdentityArray) {
++        //-- copy array
++        _identity.clear();
++
++        for (int i = 0; i < vIdentityArray.length; i++) {
++                this._identity.add(vIdentityArray[i]);
++        }
++    }
++
++    /**
++     * Sets the value of field 'keyGenerator'.
++     * 
++     * @param keyGenerator the value of field 'keyGenerator'.
++     */
++    public void setKeyGenerator(
++            final java.lang.String keyGenerator) {
++        this._keyGenerator = keyGenerator;
++    }
++
++    /**
++     * Sets the value of field 'mapTo'. The field 'mapTo' has the
++     * following description: The 'map-to' element is used for
++     * specifying the name of the item 
++     *  that should be associated with the given Java object.
++     *  
++     * 
++     * @param mapTo the value of field 'mapTo'.
++     */
++    public void setMapTo(
++            final org.exolab.castor.mapping.xml.MapTo mapTo) {
++        this._mapTo = mapTo;
++    }
++
++    /**
++     * Sets the value of field 'name'. The field 'name' has the
++     * following description: Specifies the fully qualified package
++     * name of the Java object needed to be mapped.
++     *  
++     * 
++     * @param name the value of field 'name'.
++     */
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vNamedNativeQuery
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setNamedNativeQuery(
++            final int index,
++            final org.exolab.castor.mapping.xml.NamedNativeQuery vNamedNativeQuery)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._namedNativeQueryList.size()) {
++            throw new IndexOutOfBoundsException("setNamedNativeQuery: Index value '" + index + "' not in range [0.." + (this._namedNativeQueryList.size() - 1) + "]");
++        }
++
++        this._namedNativeQueryList.set(index, vNamedNativeQuery);
++    }
++
++    /**
++     * 
++     * 
++     * @param vNamedNativeQueryArray
++     */
++    public void setNamedNativeQuery(
++            final org.exolab.castor.mapping.xml.NamedNativeQuery[] vNamedNativeQueryArray) {
++        //-- copy array
++        _namedNativeQueryList.clear();
++
++        for (int i = 0; i < vNamedNativeQueryArray.length; i++) {
++                this._namedNativeQueryList.add(vNamedNativeQueryArray[i]);
++        }
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vNamedQuery
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void setNamedQuery(
++            final int index,
++            final org.exolab.castor.mapping.xml.NamedQuery vNamedQuery)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._namedQueryList.size()) {
++            throw new IndexOutOfBoundsException("setNamedQuery: Index value '" + index + "' not in range [0.." + (this._namedQueryList.size() - 1) + "]");
++        }
++
++        this._namedQueryList.set(index, vNamedQuery);
++    }
++
++    /**
++     * 
++     * 
++     * @param vNamedQueryArray
++     */
++    public void setNamedQuery(
++            final org.exolab.castor.mapping.xml.NamedQuery[] vNamedQueryArray) {
++        //-- copy array
++        _namedQueryList.clear();
++
++        for (int i = 0; i < vNamedQueryArray.length; i++) {
++                this._namedQueryList.add(vNamedQueryArray[i]);
++        }
++    }
++
++    /**
++     * Sets the value of field 'verifyConstructable'.
++     * 
++     * @param verifyConstructable the value of field
++     * 'verifyConstructable'.
++     */
++    public void setVerifyConstructable(
++            final boolean verifyConstructable) {
++        this._verifyConstructable = verifyConstructable;
++        this._has_verifyConstructable = true;
++    }
++
++    /**
++     * Sets the value of field 'version'. The field 'version' has
++     * the following description: If set to the name of a mapped
++     * field, this field will be used for check 
++     *  on object modifications during transactions (Castor JDO
++     * only).
++     *  
++     * 
++     * @param version the value of field 'version'.
++     */
++    public void setVersion(
++            final java.lang.String version) {
++        this._version = version;
++    }
++
++    /**
++     * Method unmarshal.
++     * 
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.ClassMapping
++     */
++    public static org.exolab.castor.mapping.xml.ClassMapping unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.ClassMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.ClassMapping.class, reader);
++    }
++
++    /**
++     * 
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     */
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/ClassChoice.java
+@@ -0,0 +1,451 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * Class ClassChoice.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class ClassChoice implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * The 'field' element is used to describe the property of a
++     * Java object.
++     *  
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.FieldMapping> _fieldMappingList;
++
++    /**
++     * Field _containerList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.Container> _containerList;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public ClassChoice() {
++        super();
++        this._fieldMappingList = new java.util.ArrayList<org.exolab.castor.mapping.xml.FieldMapping>();
++        this._containerList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Container>();
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * 
++     * 
++     * @param vContainer
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addContainer(
++            final org.exolab.castor.mapping.xml.Container vContainer)
++    throws java.lang.IndexOutOfBoundsException {
++        this._containerList.add(vContainer);
++    }
++
++    /**
++     * 
++     * 
++     * @param index
++     * @param vContainer
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     */
++    public void addContainer(
++            final int index,
++            final org.exolab.castor.mapping.xml.Container vContainer)
++    throws java.lang.IndexOutOfBoundsException {
++        this._containerList.add(index, vContainer);
++    }
++
++    /**
++     * 
++     * 
++     * @param vFieldMapping
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
@@ -5522,11 +5888,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/Sql.java
-@@ -0,0 +1,674 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/Sql.java
+@@ -0,0 +1,722 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -5585,7 +5951,19 @@ Last-Update: 2010-06-27
 +    private java.util.List<java.lang.String> _manyKey;
 +
 +    /**
-+     * Field _readOnly.
++     * An optional attribute to specify cascading support; possible
++     * values are
++     *  'none', 'all', 'create', 'delete' and 'update'; it is
++     * possible to use more than one
++     *  of those values (when not using 'all' or 'none'), using
++     * whitespace as a 
++     *  delimiter (as in 'create delete').
++     *  
++     */
++    private java.lang.String _cascading;
++
++    /**
++     * Field _readOnly.
 +     */
 +    private boolean _readOnly = false;
 +
@@ -5607,7 +5985,7 @@ Last-Update: 2010-06-27
 +    /**
 +     * Field _dirty.
 +     */
-+    private org.exolab.castor.mapping.xml.types.SqlDirtyType _dirty = org.exolab.castor.mapping.xml.types.SqlDirtyType.valueOf("check");
++    private org.exolab.castor.mapping.xml.types.SqlDirtyType _dirty = org.exolab.castor.mapping.xml.types.SqlDirtyType.fromValue("check");
 +
 +
 +      //----------------/
@@ -5618,7 +5996,7 @@ Last-Update: 2010-06-27
 +        super();
 +        this._name = new java.util.ArrayList<java.lang.String>();
 +        this._manyKey = new java.util.ArrayList<java.lang.String>();
-+        setDirty(org.exolab.castor.mapping.xml.types.SqlDirtyType.valueOf("check"));
++        setDirty(org.exolab.castor.mapping.xml.types.SqlDirtyType.fromValue("check"));
 +    }
 +
 +
@@ -5719,6 +6097,24 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Returns the value of field 'cascading'. The field
++     * 'cascading' has the following description: An optional
++     * attribute to specify cascading support; possible values are
++     *  'none', 'all', 'create', 'delete' and 'update'; it is
++     * possible to use more than one
++     *  of those values (when not using 'all' or 'none'), using
++     * whitespace as a 
++     *  delimiter (as in 'create delete').
++     *  
++     * 
++     * @return the value of field 'Cascading'.
++     */
++    public java.lang.String getCascading(
++    ) {
++        return this._cascading;
++    }
++
++    /**
 +     * Returns the value of field 'dirty'.
 +     * 
 +     * @return the value of field 'Dirty'.
@@ -6037,6 +6433,24 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Sets the value of field 'cascading'. The field 'cascading'
++     * has the following description: An optional attribute to
++     * specify cascading support; possible values are
++     *  'none', 'all', 'create', 'delete' and 'update'; it is
++     * possible to use more than one
++     *  of those values (when not using 'all' or 'none'), using
++     * whitespace as a 
++     *  delimiter (as in 'create delete').
++     *  
++     * 
++     * @param cascading the value of field 'cascading'.
++     */
++    public void setCascading(
++            final java.lang.String cascading) {
++        this._cascading = cascading;
++    }
++
++    /**
 +     * Sets the value of field 'dirty'.
 +     * 
 +     * @param dirty the value of field 'dirty'.
@@ -6199,129 +6613,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/PropertyType.java
-@@ -0,0 +1,115 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * Class PropertyType.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public abstract class PropertyType implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _name.
-+     */
-+    private java.lang.String _name;
-+
-+    /**
-+     * Field _value.
-+     */
-+    private java.lang.String _value;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public PropertyType() {
-+        super();
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Returns the value of field 'name'.
-+     * 
-+     * @return the value of field 'Name'.
-+     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
-+    }
-+
-+    /**
-+     * Returns the value of field 'value'.
-+     * 
-+     * @return the value of field 'Value'.
-+     */
-+    public java.lang.String getValue(
-+    ) {
-+        return this._value;
-+    }
-+
-+    /**
-+     * Method isValid.
-+     * 
-+     * @return true if this object is valid according to the schema
-+     */
-+    public boolean isValid(
-+    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
-+    }
-+
-+    /**
-+     * Sets the value of field 'name'.
-+     * 
-+     * @param name the value of field 'name'.
-+     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
-+    }
-+
-+    /**
-+     * Sets the value of field 'value'.
-+     * 
-+     * @param value the value of field 'value'.
-+     */
-+    public void setValue(
-+            final java.lang.String value) {
-+        this._value = value;
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/FieldHandlerDef.java
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/KeyGeneratorDef.java
 @@ -0,0 +1,331 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -6329,12 +6625,12 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class FieldHandlerDef.
++ * Class KeyGeneratorDef.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class FieldHandlerDef implements java.io.Serializable {
++public class KeyGeneratorDef implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -6347,9 +6643,9 @@ Last-Update: 2010-06-27
 +    private java.lang.String _name;
 +
 +    /**
-+     * Field _clazz.
++     * Field _alias.
 +     */
-+    private java.lang.String _clazz;
++    private java.lang.String _alias;
 +
 +    /**
 +     * Field _paramList.
@@ -6361,7 +6657,7 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public FieldHandlerDef() {
++    public KeyGeneratorDef() {
 +        super();
 +        this._paramList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Param>();
 +    }
@@ -6411,13 +6707,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Returns the value of field 'clazz'.
++     * Returns the value of field 'alias'.
 +     * 
-+     * @return the value of field 'Clazz'.
++     * @return the value of field 'Alias'.
 +     */
-+    public java.lang.String getClazz(
++    public java.lang.String getAlias(
 +    ) {
-+        return this._clazz;
++        return this._alias;
 +    }
 +
 +    /**
@@ -6565,13 +6861,13 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'clazz'.
++     * Sets the value of field 'alias'.
 +     * 
-+     * @param clazz the value of field 'clazz'.
++     * @param alias the value of field 'alias'.
 +     */
-+    public void setClazz(
-+            final java.lang.String clazz) {
-+        this._clazz = clazz;
++    public void setAlias(
++            final java.lang.String alias) {
++        this._alias = alias;
 +    }
 +
 +    /**
@@ -6628,12 +6924,12 @@ Last-Update: 2010-06-27
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
 +     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.FieldHandlerDef
++     * org.exolab.castor.mapping.xml.KeyGeneratorDef
 +     */
-+    public static org.exolab.castor.mapping.xml.FieldHandlerDef unmarshal(
++    public static org.exolab.castor.mapping.xml.KeyGeneratorDef unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.FieldHandlerDef) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.FieldHandlerDef.class, reader);
++        return (org.exolab.castor.mapping.xml.KeyGeneratorDef) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.KeyGeneratorDef.class, reader);
 +    }
 +
 +    /**
@@ -6651,11 +6947,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/Include.java
-@@ -0,0 +1,138 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/Container.java
+@@ -0,0 +1,413 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -6663,12 +6959,12 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class Include.
++ * Class Container.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Include implements java.io.Serializable {
++public class Container implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -6676,16 +6972,68 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _href.
++     * Field _name.
 +     */
-+    private java.lang.String _href;
++    private java.lang.String _name;
++
++    /**
++     * Field _type.
++     */
++    private java.lang.String _type;
++
++    /**
++     * Field _required.
++     */
++    private boolean _required = false;
++
++    /**
++     * keeps track of state for field: _required
++     */
++    private boolean _has_required;
++
++    /**
++     * Field _direct.
++     */
++    private boolean _direct = false;
++
++    /**
++     * keeps track of state for field: _direct
++     */
++    private boolean _has_direct;
++
++    /**
++     * Field _getMethod.
++     */
++    private java.lang.String _getMethod;
++
++    /**
++     * Field _setMethod.
++     */
++    private java.lang.String _setMethod;
++
++    /**
++     * Field _createMethod.
++     */
++    private java.lang.String _createMethod;
++
++    /**
++     * Field _description.
++     */
++    private java.lang.String _description;
++
++    /**
++     * The 'field' element is used to describe the property of a
++     * Java object.
++     *  
++     */
++    private org.exolab.castor.mapping.xml.FieldMapping _fieldMapping;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Include() {
++    public Container() {
 +        super();
 +    }
 +
@@ -6695,521 +7043,482 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
-+     * Returns the value of field 'href'.
-+     * 
-+     * @return the value of field 'Href'.
 +     */
-+    public java.lang.String getHref(
++    public void deleteDirect(
 +    ) {
-+        return this._href;
++        this._has_direct= false;
 +    }
 +
 +    /**
-+     * Method isValid.
-+     * 
-+     * @return true if this object is valid according to the schema
 +     */
-+    public boolean isValid(
++    public void deleteRequired(
 +    ) {
-+        try {
-+            validate();
-+        } catch (org.exolab.castor.xml.ValidationException vex) {
-+            return false;
-+        }
-+        return true;
++        this._has_required= false;
 +    }
 +
 +    /**
++     * Returns the value of field 'createMethod'.
 +     * 
-+     * 
-+     * @param out
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return the value of field 'CreateMethod'.
 +     */
-+    public void marshal(
-+            final java.io.Writer out)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, out);
++    public java.lang.String getCreateMethod(
++    ) {
++        return this._createMethod;
 +    }
 +
 +    /**
++     * Returns the value of field 'description'.
 +     * 
-+     * 
-+     * @param handler
-+     * @throws java.io.IOException if an IOException occurs during
-+     * marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
++     * @return the value of field 'Description'.
 +     */
-+    public void marshal(
-+            final org.xml.sax.ContentHandler handler)
-+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Marshaller.marshal(this, handler);
++    public java.lang.String getDescription(
++    ) {
++        return this._description;
 +    }
 +
 +    /**
-+     * Sets the value of field 'href'.
++     * Returns the value of field 'direct'.
 +     * 
-+     * @param href the value of field 'href'.
++     * @return the value of field 'Direct'.
 +     */
-+    public void setHref(
-+            final java.lang.String href) {
-+        this._href = href;
++    public boolean getDirect(
++    ) {
++        return this._direct;
 +    }
 +
 +    /**
-+     * Method unmarshal.
++     * Returns the value of field 'fieldMapping'. The field
++     * 'fieldMapping' has the following description: The 'field'
++     * element is used to describe the property of a Java object.
++     *  
 +     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled org.exolab.castor.mapping.xml.Include
++     * @return the value of field 'FieldMapping'.
 +     */
-+    public static org.exolab.castor.mapping.xml.Include unmarshal(
-+            final java.io.Reader reader)
-+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.Include) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Include.class, reader);
++    public org.exolab.castor.mapping.xml.FieldMapping getFieldMapping(
++    ) {
++        return this._fieldMapping;
 +    }
 +
 +    /**
++     * Returns the value of field 'getMethod'.
 +     * 
-+     * 
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
++     * @return the value of field 'GetMethod'.
 +     */
-+    public void validate(
-+    )
-+    throws org.exolab.castor.xml.ValidationException {
-+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-+        validator.validate(this);
++    public java.lang.String getGetMethod(
++    ) {
++        return this._getMethod;
 +    }
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/MappingRoot.java
-@@ -0,0 +1,814 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml;
-+
-+/**
-+ * Class MappingRoot.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class MappingRoot implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
 +    /**
-+     * Field _description.
++     * Returns the value of field 'name'.
++     * 
++     * @return the value of field 'Name'.
 +     */
-+    private java.lang.String _description;
++    public java.lang.String getName(
++    ) {
++        return this._name;
++    }
 +
 +    /**
-+     * Field _includeList.
++     * Returns the value of field 'required'.
++     * 
++     * @return the value of field 'Required'.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.Include> _includeList;
++    public boolean getRequired(
++    ) {
++        return this._required;
++    }
 +
 +    /**
-+     * The 'class' element is used to store information about
-+     * mapping of a class.
-+     *  
++     * Returns the value of field 'setMethod'.
++     * 
++     * @return the value of field 'SetMethod'.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.ClassMapping> _classMappingList;
++    public java.lang.String getSetMethod(
++    ) {
++        return this._setMethod;
++    }
 +
 +    /**
-+     * Field _keyGeneratorDefList.
++     * Returns the value of field 'type'.
++     * 
++     * @return the value of field 'Type'.
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.KeyGeneratorDef> _keyGeneratorDefList;
++    public java.lang.String getType(
++    ) {
++        return this._type;
++    }
 +
 +    /**
-+     * Field _fieldHandlerDefList.
++     * Method hasDirect.
++     * 
++     * @return true if at least one Direct has been added
 +     */
-+    private java.util.List<org.exolab.castor.mapping.xml.FieldHandlerDef> _fieldHandlerDefList;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public MappingRoot() {
-+        super();
-+        this._includeList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Include>();
-+        this._classMappingList = new java.util.ArrayList<org.exolab.castor.mapping.xml.ClassMapping>();
-+        this._keyGeneratorDefList = new java.util.ArrayList<org.exolab.castor.mapping.xml.KeyGeneratorDef>();
-+        this._fieldHandlerDefList = new java.util.ArrayList<org.exolab.castor.mapping.xml.FieldHandlerDef>();
++    public boolean hasDirect(
++    ) {
++        return this._has_direct;
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
++     * Method hasRequired.
 +     * 
-+     * 
-+     * @param vClassMapping
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return true if at least one Required has been added
 +     */
-+    public void addClassMapping(
-+            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._classMappingList.add(vClassMapping);
++    public boolean hasRequired(
++    ) {
++        return this._has_required;
 +    }
 +
 +    /**
++     * Returns the value of field 'direct'.
 +     * 
-+     * 
-+     * @param index
-+     * @param vClassMapping
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the value of field 'Direct'.
 +     */
-+    public void addClassMapping(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._classMappingList.add(index, vClassMapping);
++    public boolean isDirect(
++    ) {
++        return this._direct;
 +    }
 +
 +    /**
++     * Returns the value of field 'required'.
 +     * 
-+     * 
-+     * @param vFieldHandlerDef
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return the value of field 'Required'.
 +     */
-+    public void addFieldHandlerDef(
-+            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._fieldHandlerDefList.add(vFieldHandlerDef);
++    public boolean isRequired(
++    ) {
++        return this._required;
 +    }
 +
 +    /**
++     * Method isValid.
 +     * 
-+     * 
-+     * @param index
-+     * @param vFieldHandlerDef
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @return true if this object is valid according to the schema
 +     */
-+    public void addFieldHandlerDef(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._fieldHandlerDefList.add(index, vFieldHandlerDef);
++    public boolean isValid(
++    ) {
++        try {
++            validate();
++        } catch (org.exolab.castor.xml.ValidationException vex) {
++            return false;
++        }
++        return true;
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param vInclude
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param out
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public void addInclude(
-+            final org.exolab.castor.mapping.xml.Include vInclude)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._includeList.add(vInclude);
++    public void marshal(
++            final java.io.Writer out)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, out);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param index
-+     * @param vInclude
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param handler
++     * @throws java.io.IOException if an IOException occurs during
++     * marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
 +     */
-+    public void addInclude(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Include vInclude)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._includeList.add(index, vInclude);
++    public void marshal(
++            final org.xml.sax.ContentHandler handler)
++    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Marshaller.marshal(this, handler);
 +    }
 +
 +    /**
++     * Sets the value of field 'createMethod'.
 +     * 
-+     * 
-+     * @param vKeyGeneratorDef
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param createMethod the value of field 'createMethod'.
 +     */
-+    public void addKeyGeneratorDef(
-+            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._keyGeneratorDefList.add(vKeyGeneratorDef);
++    public void setCreateMethod(
++            final java.lang.String createMethod) {
++        this._createMethod = createMethod;
 +    }
 +
 +    /**
++     * Sets the value of field 'description'.
 +     * 
-+     * 
-+     * @param index
-+     * @param vKeyGeneratorDef
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
++     * @param description the value of field 'description'.
 +     */
-+    public void addKeyGeneratorDef(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef)
-+    throws java.lang.IndexOutOfBoundsException {
-+        this._keyGeneratorDefList.add(index, vKeyGeneratorDef);
++    public void setDescription(
++            final java.lang.String description) {
++        this._description = description;
 +    }
 +
 +    /**
-+     * Method enumerateClassMapping.
++     * Sets the value of field 'direct'.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @param direct the value of field 'direct'.
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.ClassMapping> enumerateClassMapping(
-+    ) {
-+        return java.util.Collections.enumeration(this._classMappingList);
++    public void setDirect(
++            final boolean direct) {
++        this._direct = direct;
++        this._has_direct = true;
 +    }
 +
 +    /**
-+     * Method enumerateFieldHandlerDef.
++     * Sets the value of field 'fieldMapping'. The field
++     * 'fieldMapping' has the following description: The 'field'
++     * element is used to describe the property of a Java object.
++     *  
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @param fieldMapping the value of field 'fieldMapping'.
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.FieldHandlerDef> enumerateFieldHandlerDef(
-+    ) {
-+        return java.util.Collections.enumeration(this._fieldHandlerDefList);
++    public void setFieldMapping(
++            final org.exolab.castor.mapping.xml.FieldMapping fieldMapping) {
++        this._fieldMapping = fieldMapping;
 +    }
 +
 +    /**
-+     * Method enumerateInclude.
++     * Sets the value of field 'getMethod'.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @param getMethod the value of field 'getMethod'.
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Include> enumerateInclude(
-+    ) {
-+        return java.util.Collections.enumeration(this._includeList);
++    public void setGetMethod(
++            final java.lang.String getMethod) {
++        this._getMethod = getMethod;
 +    }
 +
 +    /**
-+     * Method enumerateKeyGeneratorDef.
++     * Sets the value of field 'name'.
 +     * 
-+     * @return an Enumeration over all possible elements of this
-+     * collection
++     * @param name the value of field 'name'.
 +     */
-+    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.KeyGeneratorDef> enumerateKeyGeneratorDef(
-+    ) {
-+        return java.util.Collections.enumeration(this._keyGeneratorDefList);
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
-+     * Method getClassMapping.
++     * Sets the value of field 'required'.
 +     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.ClassMapping at the given index
++     * @param required the value of field 'required'.
 +     */
-+    public org.exolab.castor.mapping.xml.ClassMapping getClassMapping(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._classMappingList.size()) {
-+            throw new IndexOutOfBoundsException("getClassMapping: Index value '" + index + "' not in range [0.." + (this._classMappingList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.ClassMapping) _classMappingList.get(index);
++    public void setRequired(
++            final boolean required) {
++        this._required = required;
++        this._has_required = true;
 +    }
 +
 +    /**
-+     * Method getClassMapping.Returns the contents of the
-+     * collection in an Array.  <p>Note:  Just in case the
-+     * collection contents are changing in another thread, we pass
-+     * a 0-length Array of the correct type into the API call. 
-+     * This way we <i>know</i> that the Array returned is of
-+     * exactly the correct length.
++     * Sets the value of field 'setMethod'.
 +     * 
-+     * @return this collection as an Array
++     * @param setMethod the value of field 'setMethod'.
 +     */
-+    public org.exolab.castor.mapping.xml.ClassMapping[] getClassMapping(
-+    ) {
-+        org.exolab.castor.mapping.xml.ClassMapping[] array = new org.exolab.castor.mapping.xml.ClassMapping[0];
-+        return (org.exolab.castor.mapping.xml.ClassMapping[]) this._classMappingList.toArray(array);
++    public void setSetMethod(
++            final java.lang.String setMethod) {
++        this._setMethod = setMethod;
 +    }
 +
 +    /**
-+     * Method getClassMappingCount.
++     * Sets the value of field 'type'.
 +     * 
-+     * @return the size of this collection
++     * @param type the value of field 'type'.
 +     */
-+    public int getClassMappingCount(
-+    ) {
-+        return this._classMappingList.size();
++    public void setType(
++            final java.lang.String type) {
++        this._type = type;
 +    }
 +
 +    /**
-+     * Returns the value of field 'description'.
++     * Method unmarshal.
 +     * 
-+     * @return the value of field 'Description'.
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.Container
 +     */
-+    public java.lang.String getDescription(
-+    ) {
-+        return this._description;
++    public static org.exolab.castor.mapping.xml.Container unmarshal(
++            final java.io.Reader reader)
++    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
++        return (org.exolab.castor.mapping.xml.Container) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Container.class, reader);
 +    }
 +
 +    /**
-+     * Method getFieldHandlerDef.
 +     * 
-+     * @param index
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.FieldHandlerDef at the given
-+     * index
++     * 
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
 +     */
-+    public org.exolab.castor.mapping.xml.FieldHandlerDef getFieldHandlerDef(
-+            final int index)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._fieldHandlerDefList.size()) {
-+            throw new IndexOutOfBoundsException("getFieldHandlerDef: Index value '" + index + "' not in range [0.." + (this._fieldHandlerDefList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.FieldHandlerDef) _fieldHandlerDefList.get(index);
++    public void validate(
++    )
++    throws org.exolab.castor.xml.ValidationException {
++        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
++        validator.validate(this);
 +    }
 +
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/NamedQuery.java
+@@ -0,0 +1,331 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml;
++
++/**
++ * Class NamedQuery.
++ * 
++ * @version $Revision$ $Date$
++ */
++ at SuppressWarnings("serial")
++public class NamedQuery implements java.io.Serializable {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
 +    /**
-+     * Method getFieldHandlerDef.Returns the contents of the
-+     * collection in an Array.  <p>Note:  Just in case the
-+     * collection contents are changing in another thread, we pass
-+     * a 0-length Array of the correct type into the API call. 
-+     * This way we <i>know</i> that the Array returned is of
-+     * exactly the correct length.
-+     * 
-+     * @return this collection as an Array
++     * Field _name.
 +     */
-+    public org.exolab.castor.mapping.xml.FieldHandlerDef[] getFieldHandlerDef(
-+    ) {
-+        org.exolab.castor.mapping.xml.FieldHandlerDef[] array = new org.exolab.castor.mapping.xml.FieldHandlerDef[0];
-+        return (org.exolab.castor.mapping.xml.FieldHandlerDef[]) this._fieldHandlerDefList.toArray(array);
++    private java.lang.String _name;
++
++    /**
++     * Field _query.
++     */
++    private java.lang.String _query;
++
++    /**
++     * Field _queryHintList.
++     */
++    private java.util.List<org.exolab.castor.mapping.xml.QueryHint> _queryHintList;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public NamedQuery() {
++        super();
++        this._queryHintList = new java.util.ArrayList<org.exolab.castor.mapping.xml.QueryHint>();
 +    }
 +
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
 +    /**
-+     * Method getFieldHandlerDefCount.
 +     * 
-+     * @return the size of this collection
++     * 
++     * @param vQueryHint
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public int getFieldHandlerDefCount(
-+    ) {
-+        return this._fieldHandlerDefList.size();
++    public void addQueryHint(
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
++    throws java.lang.IndexOutOfBoundsException {
++        this._queryHintList.add(vQueryHint);
 +    }
 +
 +    /**
-+     * Method getInclude.
++     * 
 +     * 
 +     * @param index
++     * @param vQueryHint
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
-+     * @return the value of the
-+     * org.exolab.castor.mapping.xml.Include at the given index
 +     */
-+    public org.exolab.castor.mapping.xml.Include getInclude(
-+            final int index)
++    public void addQueryHint(
++            final int index,
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
 +    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._includeList.size()) {
-+            throw new IndexOutOfBoundsException("getInclude: Index value '" + index + "' not in range [0.." + (this._includeList.size() - 1) + "]");
-+        }
-+
-+        return (org.exolab.castor.mapping.xml.Include) _includeList.get(index);
++        this._queryHintList.add(index, vQueryHint);
 +    }
 +
 +    /**
-+     * Method getInclude.Returns the contents of the collection in
-+     * an Array.  <p>Note:  Just in case the collection contents
-+     * are changing in another thread, we pass a 0-length Array of
-+     * the correct type into the API call.  This way we <i>know</i>
-+     * that the Array returned is of exactly the correct length.
++     * Method enumerateQueryHint.
 +     * 
-+     * @return this collection as an Array
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public org.exolab.castor.mapping.xml.Include[] getInclude(
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.QueryHint> enumerateQueryHint(
 +    ) {
-+        org.exolab.castor.mapping.xml.Include[] array = new org.exolab.castor.mapping.xml.Include[0];
-+        return (org.exolab.castor.mapping.xml.Include[]) this._includeList.toArray(array);
++        return java.util.Collections.enumeration(this._queryHintList);
 +    }
 +
 +    /**
-+     * Method getIncludeCount.
++     * Returns the value of field 'name'.
 +     * 
-+     * @return the size of this collection
++     * @return the value of field 'Name'.
 +     */
-+    public int getIncludeCount(
++    public java.lang.String getName(
 +    ) {
-+        return this._includeList.size();
++        return this._name;
 +    }
 +
 +    /**
-+     * Method getKeyGeneratorDef.
++     * Returns the value of field 'query'.
++     * 
++     * @return the value of field 'Query'.
++     */
++    public java.lang.String getQuery(
++    ) {
++        return this._query;
++    }
++
++    /**
++     * Method getQueryHint.
 +     * 
 +     * @param index
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     * @return the value of the
-+     * org.exolab.castor.mapping.xml.KeyGeneratorDef at the given
-+     * index
++     * org.exolab.castor.mapping.xml.QueryHint at the given index
 +     */
-+    public org.exolab.castor.mapping.xml.KeyGeneratorDef getKeyGeneratorDef(
++    public org.exolab.castor.mapping.xml.QueryHint getQueryHint(
 +            final int index)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._keyGeneratorDefList.size()) {
-+            throw new IndexOutOfBoundsException("getKeyGeneratorDef: Index value '" + index + "' not in range [0.." + (this._keyGeneratorDefList.size() - 1) + "]");
++        if (index < 0 || index >= this._queryHintList.size()) {
++            throw new IndexOutOfBoundsException("getQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
 +        }
 +
-+        return (org.exolab.castor.mapping.xml.KeyGeneratorDef) _keyGeneratorDefList.get(index);
++        return (org.exolab.castor.mapping.xml.QueryHint) _queryHintList.get(index);
 +    }
 +
 +    /**
-+     * Method getKeyGeneratorDef.Returns the contents of the
-+     * collection in an Array.  <p>Note:  Just in case the
-+     * collection contents are changing in another thread, we pass
-+     * a 0-length Array of the correct type into the API call. 
-+     * This way we <i>know</i> that the Array returned is of
-+     * exactly the correct length.
++     * Method getQueryHint.Returns the contents of the collection
++     * in an Array.  <p>Note:  Just in case the collection contents
++     * are changing in another thread, we pass a 0-length Array of
++     * the correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
 +     * @return this collection as an Array
 +     */
-+    public org.exolab.castor.mapping.xml.KeyGeneratorDef[] getKeyGeneratorDef(
++    public org.exolab.castor.mapping.xml.QueryHint[] getQueryHint(
 +    ) {
-+        org.exolab.castor.mapping.xml.KeyGeneratorDef[] array = new org.exolab.castor.mapping.xml.KeyGeneratorDef[0];
-+        return (org.exolab.castor.mapping.xml.KeyGeneratorDef[]) this._keyGeneratorDefList.toArray(array);
++        org.exolab.castor.mapping.xml.QueryHint[] array = new org.exolab.castor.mapping.xml.QueryHint[0];
++        return (org.exolab.castor.mapping.xml.QueryHint[]) this._queryHintList.toArray(array);
 +    }
 +
 +    /**
-+     * Method getKeyGeneratorDefCount.
++     * Method getQueryHintCount.
 +     * 
 +     * @return the size of this collection
 +     */
-+    public int getKeyGeneratorDefCount(
++    public int getQueryHintCount(
 +    ) {
-+        return this._keyGeneratorDefList.size();
++        return this._queryHintList.size();
 +    }
 +
 +    /**
@@ -7228,47 +7537,14 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Method iterateClassMapping.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
-+     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.ClassMapping> iterateClassMapping(
-+    ) {
-+        return this._classMappingList.iterator();
-+    }
-+
-+    /**
-+     * Method iterateFieldHandlerDef.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
-+     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.FieldHandlerDef> iterateFieldHandlerDef(
-+    ) {
-+        return this._fieldHandlerDefList.iterator();
-+    }
-+
-+    /**
-+     * Method iterateInclude.
-+     * 
-+     * @return an Iterator over all possible elements in this
-+     * collection
-+     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Include> iterateInclude(
-+    ) {
-+        return this._includeList.iterator();
-+    }
-+
-+    /**
-+     * Method iterateKeyGeneratorDef.
++     * Method iterateQueryHint.
 +     * 
 +     * @return an Iterator over all possible elements in this
 +     * collection
 +     */
-+    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.KeyGeneratorDef> iterateKeyGeneratorDef(
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.QueryHint> iterateQueryHint(
 +    ) {
-+        return this._keyGeneratorDefList.iterator();
++        return this._queryHintList.iterator();
 +    }
 +
 +    /**
@@ -7305,293 +7581,105 @@ Last-Update: 2010-06-27
 +
 +    /**
 +     */
-+    public void removeAllClassMapping(
-+    ) {
-+        this._classMappingList.clear();
-+    }
-+
-+    /**
-+     */
-+    public void removeAllFieldHandlerDef(
-+    ) {
-+        this._fieldHandlerDefList.clear();
-+    }
-+
-+    /**
-+     */
-+    public void removeAllInclude(
-+    ) {
-+        this._includeList.clear();
-+    }
-+
-+    /**
-+     */
-+    public void removeAllKeyGeneratorDef(
++    public void removeAllQueryHint(
 +    ) {
-+        this._keyGeneratorDefList.clear();
-+    }
-+
-+    /**
-+     * Method removeClassMapping.
-+     * 
-+     * @param vClassMapping
-+     * @return true if the object was removed from the collection.
-+     */
-+    public boolean removeClassMapping(
-+            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping) {
-+        boolean removed = _classMappingList.remove(vClassMapping);
-+        return removed;
-+    }
-+
-+    /**
-+     * Method removeClassMappingAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
-+     */
-+    public org.exolab.castor.mapping.xml.ClassMapping removeClassMappingAt(
-+            final int index) {
-+        java.lang.Object obj = this._classMappingList.remove(index);
-+        return (org.exolab.castor.mapping.xml.ClassMapping) obj;
-+    }
-+
-+    /**
-+     * Method removeFieldHandlerDef.
-+     * 
-+     * @param vFieldHandlerDef
-+     * @return true if the object was removed from the collection.
-+     */
-+    public boolean removeFieldHandlerDef(
-+            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef) {
-+        boolean removed = _fieldHandlerDefList.remove(vFieldHandlerDef);
-+        return removed;
-+    }
-+
-+    /**
-+     * Method removeFieldHandlerDefAt.
-+     * 
-+     * @param index
-+     * @return the element removed from the collection
-+     */
-+    public org.exolab.castor.mapping.xml.FieldHandlerDef removeFieldHandlerDefAt(
-+            final int index) {
-+        java.lang.Object obj = this._fieldHandlerDefList.remove(index);
-+        return (org.exolab.castor.mapping.xml.FieldHandlerDef) obj;
++        this._queryHintList.clear();
 +    }
 +
 +    /**
-+     * Method removeInclude.
++     * Method removeQueryHint.
 +     * 
-+     * @param vInclude
++     * @param vQueryHint
 +     * @return true if the object was removed from the collection.
 +     */
-+    public boolean removeInclude(
-+            final org.exolab.castor.mapping.xml.Include vInclude) {
-+        boolean removed = _includeList.remove(vInclude);
++    public boolean removeQueryHint(
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint) {
++        boolean removed = _queryHintList.remove(vQueryHint);
 +        return removed;
 +    }
 +
 +    /**
-+     * Method removeIncludeAt.
++     * Method removeQueryHintAt.
 +     * 
 +     * @param index
 +     * @return the element removed from the collection
 +     */
-+    public org.exolab.castor.mapping.xml.Include removeIncludeAt(
++    public org.exolab.castor.mapping.xml.QueryHint removeQueryHintAt(
 +            final int index) {
-+        java.lang.Object obj = this._includeList.remove(index);
-+        return (org.exolab.castor.mapping.xml.Include) obj;
++        java.lang.Object obj = this._queryHintList.remove(index);
++        return (org.exolab.castor.mapping.xml.QueryHint) obj;
 +    }
 +
 +    /**
-+     * Method removeKeyGeneratorDef.
++     * Sets the value of field 'name'.
 +     * 
-+     * @param vKeyGeneratorDef
-+     * @return true if the object was removed from the collection.
++     * @param name the value of field 'name'.
 +     */
-+    public boolean removeKeyGeneratorDef(
-+            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef) {
-+        boolean removed = _keyGeneratorDefList.remove(vKeyGeneratorDef);
-+        return removed;
++    public void setName(
++            final java.lang.String name) {
++        this._name = name;
 +    }
 +
 +    /**
-+     * Method removeKeyGeneratorDefAt.
++     * Sets the value of field 'query'.
 +     * 
-+     * @param index
-+     * @return the element removed from the collection
++     * @param query the value of field 'query'.
 +     */
-+    public org.exolab.castor.mapping.xml.KeyGeneratorDef removeKeyGeneratorDefAt(
-+            final int index) {
-+        java.lang.Object obj = this._keyGeneratorDefList.remove(index);
-+        return (org.exolab.castor.mapping.xml.KeyGeneratorDef) obj;
++    public void setQuery(
++            final java.lang.String query) {
++        this._query = query;
 +    }
 +
 +    /**
 +     * 
 +     * 
 +     * @param index
-+     * @param vClassMapping
++     * @param vQueryHint
 +     * @throws java.lang.IndexOutOfBoundsException if the index
 +     * given is outside the bounds of the collection
 +     */
-+    public void setClassMapping(
++    public void setQueryHint(
 +            final int index,
-+            final org.exolab.castor.mapping.xml.ClassMapping vClassMapping)
++            final org.exolab.castor.mapping.xml.QueryHint vQueryHint)
 +    throws java.lang.IndexOutOfBoundsException {
 +        // check bounds for index
-+        if (index < 0 || index >= this._classMappingList.size()) {
-+            throw new IndexOutOfBoundsException("setClassMapping: Index value '" + index + "' not in range [0.." + (this._classMappingList.size() - 1) + "]");
++        if (index < 0 || index >= this._queryHintList.size()) {
++            throw new IndexOutOfBoundsException("setQueryHint: Index value '" + index + "' not in range [0.." + (this._queryHintList.size() - 1) + "]");
 +        }
 +
-+        this._classMappingList.set(index, vClassMapping);
++        this._queryHintList.set(index, vQueryHint);
 +    }
 +
 +    /**
 +     * 
 +     * 
-+     * @param vClassMappingArray
++     * @param vQueryHintArray
 +     */
-+    public void setClassMapping(
-+            final org.exolab.castor.mapping.xml.ClassMapping[] vClassMappingArray) {
++    public void setQueryHint(
++            final org.exolab.castor.mapping.xml.QueryHint[] vQueryHintArray) {
 +        //-- copy array
-+        _classMappingList.clear();
++        _queryHintList.clear();
 +
-+        for (int i = 0; i < vClassMappingArray.length; i++) {
-+                this._classMappingList.add(vClassMappingArray[i]);
++        for (int i = 0; i < vQueryHintArray.length; i++) {
++                this._queryHintList.add(vQueryHintArray[i]);
 +        }
 +    }
 +
 +    /**
-+     * Sets the value of field 'description'.
++     * Method unmarshal.
 +     * 
-+     * @param description the value of field 'description'.
++     * @param reader
++     * @throws org.exolab.castor.xml.MarshalException if object is
++     * null or if any SAXException is thrown during marshaling
++     * @throws org.exolab.castor.xml.ValidationException if this
++     * object is an invalid instance according to the schema
++     * @return the unmarshaled
++     * org.exolab.castor.mapping.xml.NamedQuery
 +     */
-+    public void setDescription(
-+            final java.lang.String description) {
-+        this._description = description;
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vFieldHandlerDef
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void setFieldHandlerDef(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.FieldHandlerDef vFieldHandlerDef)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._fieldHandlerDefList.size()) {
-+            throw new IndexOutOfBoundsException("setFieldHandlerDef: Index value '" + index + "' not in range [0.." + (this._fieldHandlerDefList.size() - 1) + "]");
-+        }
-+
-+        this._fieldHandlerDefList.set(index, vFieldHandlerDef);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param vFieldHandlerDefArray
-+     */
-+    public void setFieldHandlerDef(
-+            final org.exolab.castor.mapping.xml.FieldHandlerDef[] vFieldHandlerDefArray) {
-+        //-- copy array
-+        _fieldHandlerDefList.clear();
-+
-+        for (int i = 0; i < vFieldHandlerDefArray.length; i++) {
-+                this._fieldHandlerDefList.add(vFieldHandlerDefArray[i]);
-+        }
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vInclude
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void setInclude(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.Include vInclude)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._includeList.size()) {
-+            throw new IndexOutOfBoundsException("setInclude: Index value '" + index + "' not in range [0.." + (this._includeList.size() - 1) + "]");
-+        }
-+
-+        this._includeList.set(index, vInclude);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param vIncludeArray
-+     */
-+    public void setInclude(
-+            final org.exolab.castor.mapping.xml.Include[] vIncludeArray) {
-+        //-- copy array
-+        _includeList.clear();
-+
-+        for (int i = 0; i < vIncludeArray.length; i++) {
-+                this._includeList.add(vIncludeArray[i]);
-+        }
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param index
-+     * @param vKeyGeneratorDef
-+     * @throws java.lang.IndexOutOfBoundsException if the index
-+     * given is outside the bounds of the collection
-+     */
-+    public void setKeyGeneratorDef(
-+            final int index,
-+            final org.exolab.castor.mapping.xml.KeyGeneratorDef vKeyGeneratorDef)
-+    throws java.lang.IndexOutOfBoundsException {
-+        // check bounds for index
-+        if (index < 0 || index >= this._keyGeneratorDefList.size()) {
-+            throw new IndexOutOfBoundsException("setKeyGeneratorDef: Index value '" + index + "' not in range [0.." + (this._keyGeneratorDefList.size() - 1) + "]");
-+        }
-+
-+        this._keyGeneratorDefList.set(index, vKeyGeneratorDef);
-+    }
-+
-+    /**
-+     * 
-+     * 
-+     * @param vKeyGeneratorDefArray
-+     */
-+    public void setKeyGeneratorDef(
-+            final org.exolab.castor.mapping.xml.KeyGeneratorDef[] vKeyGeneratorDefArray) {
-+        //-- copy array
-+        _keyGeneratorDefList.clear();
-+
-+        for (int i = 0; i < vKeyGeneratorDefArray.length; i++) {
-+                this._keyGeneratorDefList.add(vKeyGeneratorDefArray[i]);
-+        }
-+    }
-+
-+    /**
-+     * Method unmarshal.
-+     * 
-+     * @param reader
-+     * @throws org.exolab.castor.xml.MarshalException if object is
-+     * null or if any SAXException is thrown during marshaling
-+     * @throws org.exolab.castor.xml.ValidationException if this
-+     * object is an invalid instance according to the schema
-+     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.MappingRoot
-+     */
-+    public static org.exolab.castor.mapping.xml.MappingRoot unmarshal(
++    public static org.exolab.castor.mapping.xml.NamedQuery unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.MappingRoot) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.MappingRoot.class, reader);
++        return (org.exolab.castor.mapping.xml.NamedQuery) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.NamedQuery.class, reader);
 +    }
 +
 +    /**
@@ -7609,11 +7697,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/Container.java
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/CacheTypeMapping.java
 @@ -0,0 +1,413 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -7621,12 +7709,12 @@ Last-Update: 2010-06-27
 +package org.exolab.castor.mapping.xml;
 +
 +/**
-+ * Class Container.
++ * Class CacheTypeMapping.
 + * 
 + * @version $Revision$ $Date$
 + */
 + at SuppressWarnings("serial")
-+public class Container implements java.io.Serializable {
++public class CacheTypeMapping implements java.io.Serializable {
 +
 +
 +      //--------------------------/
@@ -7634,69 +7722,44 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * Field _name.
-+     */
-+    private java.lang.String _name;
-+
-+    /**
 +     * Field _type.
 +     */
-+    private java.lang.String _type;
-+
-+    /**
-+     * Field _required.
-+     */
-+    private boolean _required = false;
-+
-+    /**
-+     * keeps track of state for field: _required
-+     */
-+    private boolean _has_required;
-+
-+    /**
-+     * Field _direct.
-+     */
-+    private boolean _direct = false;
-+
-+    /**
-+     * keeps track of state for field: _direct
-+     */
-+    private boolean _has_direct;
++    private java.lang.String _type = "count-limited";
 +
 +    /**
-+     * Field _getMethod.
++     * Field _debug.
 +     */
-+    private java.lang.String _getMethod;
++    private boolean _debug = false;
 +
 +    /**
-+     * Field _setMethod.
++     * keeps track of state for field: _debug
 +     */
-+    private java.lang.String _setMethod;
++    private boolean _has_debug;
 +
 +    /**
-+     * Field _createMethod.
++     * Field _capacity.
 +     */
-+    private java.lang.String _createMethod;
++    private long _capacity;
 +
 +    /**
-+     * Field _description.
++     * keeps track of state for field: _capacity
 +     */
-+    private java.lang.String _description;
++    private boolean _has_capacity;
 +
 +    /**
-+     * The 'field' element is used to describe the property of a
-+     * Java object.
-+     *  
++     * Field _paramList.
 +     */
-+    private org.exolab.castor.mapping.xml.FieldMapping _fieldMapping;
++    private java.util.List<org.exolab.castor.mapping.xml.Param> _paramList;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    public Container() {
++    public CacheTypeMapping() {
 +        super();
++        setType("count-limited");
++        this._paramList = new java.util.ArrayList<org.exolab.castor.mapping.xml.Param>();
 +    }
 +
 +
@@ -7705,100 +7768,121 @@ Last-Update: 2010-06-27
 +    //-----------/
 +
 +    /**
++     * 
++     * 
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void deleteDirect(
-+    ) {
-+        this._has_direct= false;
++    public void addParam(
++            final org.exolab.castor.mapping.xml.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        this._paramList.add(vParam);
 +    }
 +
 +    /**
++     * 
++     * 
++     * @param index
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void deleteRequired(
-+    ) {
-+        this._has_required= false;
++    public void addParam(
++            final int index,
++            final org.exolab.castor.mapping.xml.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        this._paramList.add(index, vParam);
 +    }
 +
 +    /**
-+     * Returns the value of field 'createMethod'.
-+     * 
-+     * @return the value of field 'CreateMethod'.
 +     */
-+    public java.lang.String getCreateMethod(
++    public void deleteCapacity(
 +    ) {
-+        return this._createMethod;
++        this._has_capacity= false;
 +    }
 +
 +    /**
-+     * Returns the value of field 'description'.
-+     * 
-+     * @return the value of field 'Description'.
 +     */
-+    public java.lang.String getDescription(
++    public void deleteDebug(
 +    ) {
-+        return this._description;
++        this._has_debug= false;
 +    }
 +
 +    /**
-+     * Returns the value of field 'direct'.
++     * Method enumerateParam.
 +     * 
-+     * @return the value of field 'Direct'.
++     * @return an Enumeration over all possible elements of this
++     * collection
 +     */
-+    public boolean getDirect(
++    public java.util.Enumeration<? extends org.exolab.castor.mapping.xml.Param> enumerateParam(
 +    ) {
-+        return this._direct;
++        return java.util.Collections.enumeration(this._paramList);
 +    }
 +
 +    /**
-+     * Returns the value of field 'fieldMapping'. The field
-+     * 'fieldMapping' has the following description: The 'field'
-+     * element is used to describe the property of a Java object.
-+     *  
++     * Returns the value of field 'capacity'.
 +     * 
-+     * @return the value of field 'FieldMapping'.
++     * @return the value of field 'Capacity'.
 +     */
-+    public org.exolab.castor.mapping.xml.FieldMapping getFieldMapping(
++    public long getCapacity(
 +    ) {
-+        return this._fieldMapping;
++        return this._capacity;
 +    }
 +
 +    /**
-+     * Returns the value of field 'getMethod'.
++     * Returns the value of field 'debug'.
 +     * 
-+     * @return the value of field 'GetMethod'.
++     * @return the value of field 'Debug'.
 +     */
-+    public java.lang.String getGetMethod(
++    public boolean getDebug(
 +    ) {
-+        return this._getMethod;
++        return this._debug;
 +    }
 +
 +    /**
-+     * Returns the value of field 'name'.
++     * Method getParam.
 +     * 
-+     * @return the value of field 'Name'.
++     * @param index
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
++     * @return the value of the org.exolab.castor.mapping.xml.Param
++     * at the given index
 +     */
-+    public java.lang.String getName(
-+    ) {
-+        return this._name;
++    public org.exolab.castor.mapping.xml.Param getParam(
++            final int index)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._paramList.size()) {
++            throw new IndexOutOfBoundsException("getParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
++        }
++
++        return (org.exolab.castor.mapping.xml.Param) _paramList.get(index);
 +    }
 +
 +    /**
-+     * Returns the value of field 'required'.
++     * Method getParam.Returns the contents of the collection in an
++     * Array.  <p>Note:  Just in case the collection contents are
++     * changing in another thread, we pass a 0-length Array of the
++     * correct type into the API call.  This way we <i>know</i>
++     * that the Array returned is of exactly the correct length.
 +     * 
-+     * @return the value of field 'Required'.
++     * @return this collection as an Array
 +     */
-+    public boolean getRequired(
++    public org.exolab.castor.mapping.xml.Param[] getParam(
 +    ) {
-+        return this._required;
++        org.exolab.castor.mapping.xml.Param[] array = new org.exolab.castor.mapping.xml.Param[0];
++        return (org.exolab.castor.mapping.xml.Param[]) this._paramList.toArray(array);
 +    }
 +
 +    /**
-+     * Returns the value of field 'setMethod'.
++     * Method getParamCount.
 +     * 
-+     * @return the value of field 'SetMethod'.
++     * @return the size of this collection
 +     */
-+    public java.lang.String getSetMethod(
++    public int getParamCount(
 +    ) {
-+        return this._setMethod;
++        return this._paramList.size();
 +    }
 +
 +    /**
@@ -7812,43 +7896,33 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Method hasDirect.
-+     * 
-+     * @return true if at least one Direct has been added
-+     */
-+    public boolean hasDirect(
-+    ) {
-+        return this._has_direct;
-+    }
-+
-+    /**
-+     * Method hasRequired.
++     * Method hasCapacity.
 +     * 
-+     * @return true if at least one Required has been added
++     * @return true if at least one Capacity has been added
 +     */
-+    public boolean hasRequired(
++    public boolean hasCapacity(
 +    ) {
-+        return this._has_required;
++        return this._has_capacity;
 +    }
 +
 +    /**
-+     * Returns the value of field 'direct'.
++     * Method hasDebug.
 +     * 
-+     * @return the value of field 'Direct'.
++     * @return true if at least one Debug has been added
 +     */
-+    public boolean isDirect(
++    public boolean hasDebug(
 +    ) {
-+        return this._direct;
++        return this._has_debug;
 +    }
 +
 +    /**
-+     * Returns the value of field 'required'.
++     * Returns the value of field 'debug'.
 +     * 
-+     * @return the value of field 'Required'.
++     * @return the value of field 'Debug'.
 +     */
-+    public boolean isRequired(
++    public boolean isDebug(
 +    ) {
-+        return this._required;
++        return this._debug;
 +    }
 +
 +    /**
@@ -7867,6 +7941,17 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
++     * Method iterateParam.
++     * 
++     * @return an Iterator over all possible elements in this
++     * collection
++     */
++    public java.util.Iterator<? extends org.exolab.castor.mapping.xml.Param> iterateParam(
++    ) {
++        return this._paramList.iterator();
++    }
++
++    /**
 +     * 
 +     * 
 +     * @param out
@@ -7899,88 +7984,91 @@ Last-Update: 2010-06-27
 +    }
 +
 +    /**
-+     * Sets the value of field 'createMethod'.
-+     * 
-+     * @param createMethod the value of field 'createMethod'.
 +     */
-+    public void setCreateMethod(
-+            final java.lang.String createMethod) {
-+        this._createMethod = createMethod;
++    public void removeAllParam(
++    ) {
++        this._paramList.clear();
 +    }
 +
 +    /**
-+     * Sets the value of field 'description'.
++     * Method removeParam.
 +     * 
-+     * @param description the value of field 'description'.
++     * @param vParam
++     * @return true if the object was removed from the collection.
 +     */
-+    public void setDescription(
-+            final java.lang.String description) {
-+        this._description = description;
++    public boolean removeParam(
++            final org.exolab.castor.mapping.xml.Param vParam) {
++        boolean removed = _paramList.remove(vParam);
++        return removed;
 +    }
 +
 +    /**
-+     * Sets the value of field 'direct'.
++     * Method removeParamAt.
 +     * 
-+     * @param direct the value of field 'direct'.
++     * @param index
++     * @return the element removed from the collection
 +     */
-+    public void setDirect(
-+            final boolean direct) {
-+        this._direct = direct;
-+        this._has_direct = true;
++    public org.exolab.castor.mapping.xml.Param removeParamAt(
++            final int index) {
++        java.lang.Object obj = this._paramList.remove(index);
++        return (org.exolab.castor.mapping.xml.Param) obj;
 +    }
 +
 +    /**
-+     * Sets the value of field 'fieldMapping'. The field
-+     * 'fieldMapping' has the following description: The 'field'
-+     * element is used to describe the property of a Java object.
-+     *  
++     * Sets the value of field 'capacity'.
 +     * 
-+     * @param fieldMapping the value of field 'fieldMapping'.
++     * @param capacity the value of field 'capacity'.
 +     */
-+    public void setFieldMapping(
-+            final org.exolab.castor.mapping.xml.FieldMapping fieldMapping) {
-+        this._fieldMapping = fieldMapping;
++    public void setCapacity(
++            final long capacity) {
++        this._capacity = capacity;
++        this._has_capacity = true;
 +    }
 +
 +    /**
-+     * Sets the value of field 'getMethod'.
++     * Sets the value of field 'debug'.
 +     * 
-+     * @param getMethod the value of field 'getMethod'.
++     * @param debug the value of field 'debug'.
 +     */
-+    public void setGetMethod(
-+            final java.lang.String getMethod) {
-+        this._getMethod = getMethod;
++    public void setDebug(
++            final boolean debug) {
++        this._debug = debug;
++        this._has_debug = true;
 +    }
 +
 +    /**
-+     * Sets the value of field 'name'.
 +     * 
-+     * @param name the value of field 'name'.
-+     */
-+    public void setName(
-+            final java.lang.String name) {
-+        this._name = name;
-+    }
-+
-+    /**
-+     * Sets the value of field 'required'.
 +     * 
-+     * @param required the value of field 'required'.
++     * @param index
++     * @param vParam
++     * @throws java.lang.IndexOutOfBoundsException if the index
++     * given is outside the bounds of the collection
 +     */
-+    public void setRequired(
-+            final boolean required) {
-+        this._required = required;
-+        this._has_required = true;
++    public void setParam(
++            final int index,
++            final org.exolab.castor.mapping.xml.Param vParam)
++    throws java.lang.IndexOutOfBoundsException {
++        // check bounds for index
++        if (index < 0 || index >= this._paramList.size()) {
++            throw new IndexOutOfBoundsException("setParam: Index value '" + index + "' not in range [0.." + (this._paramList.size() - 1) + "]");
++        }
++
++        this._paramList.set(index, vParam);
 +    }
 +
 +    /**
-+     * Sets the value of field 'setMethod'.
 +     * 
-+     * @param setMethod the value of field 'setMethod'.
++     * 
++     * @param vParamArray
 +     */
-+    public void setSetMethod(
-+            final java.lang.String setMethod) {
-+        this._setMethod = setMethod;
++    public void setParam(
++            final org.exolab.castor.mapping.xml.Param[] vParamArray) {
++        //-- copy array
++        _paramList.clear();
++
++        for (int i = 0; i < vParamArray.length; i++) {
++                this._paramList.add(vParamArray[i]);
++        }
 +    }
 +
 +    /**
@@ -8002,12 +8090,12 @@ Last-Update: 2010-06-27
 +     * @throws org.exolab.castor.xml.ValidationException if this
 +     * object is an invalid instance according to the schema
 +     * @return the unmarshaled
-+     * org.exolab.castor.mapping.xml.Container
++     * org.exolab.castor.mapping.xml.CacheTypeMapping
 +     */
-+    public static org.exolab.castor.mapping.xml.Container unmarshal(
++    public static org.exolab.castor.mapping.xml.CacheTypeMapping unmarshal(
 +            final java.io.Reader reader)
 +    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-+        return (org.exolab.castor.mapping.xml.Container) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.Container.class, reader);
++        return (org.exolab.castor.mapping.xml.CacheTypeMapping) org.exolab.castor.xml.Unmarshaller.unmarshal(org.exolab.castor.mapping.xml.CacheTypeMapping.class, reader);
 +    }
 +
 +    /**
@@ -8025,24 +8113,29 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/SqlDirtyType.java
-@@ -0,0 +1,152 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/IncludeDescriptor.java
+@@ -0,0 +1,213 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
 +
-+package org.exolab.castor.mapping.xml.types;
++package org.exolab.castor.mapping.xml.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.Include;
 +
 +/**
-+ * Class SqlDirtyType.
++ * Class IncludeDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+ at SuppressWarnings("serial")
-+public class SqlDirtyType implements java.io.Serializable {
++public class IncludeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -8050,311 +8143,215 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * The check type
-+     */
-+    public static final int CHECK_TYPE = 0;
-+
-+    /**
-+     * The instance of the check type
-+     */
-+    public static final SqlDirtyType CHECK = new SqlDirtyType(CHECK_TYPE, "check");
-+
-+    /**
-+     * The ignore type
++     * Field _elementDefinition.
 +     */
-+    public static final int IGNORE_TYPE = 1;
++    private boolean _elementDefinition;
 +
 +    /**
-+     * The instance of the ignore type
++     * Field _nsPrefix.
 +     */
-+    public static final SqlDirtyType IGNORE = new SqlDirtyType(IGNORE_TYPE, "ignore");
++    private java.lang.String _nsPrefix;
 +
 +    /**
-+     * Field _memberTable.
++     * Field _nsURI.
 +     */
-+    private static java.util.Hashtable<Object,Object> _memberTable = init();
++    private java.lang.String _nsURI;
 +
 +    /**
-+     * Field type.
++     * Field _xmlName.
 +     */
-+    private final int type;
++    private java.lang.String _xmlName;
 +
 +    /**
-+     * Field stringValue.
++     * Field _identity.
 +     */
-+    private java.lang.String stringValue = null;
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    private SqlDirtyType(final int type, final java.lang.String value) {
++    public IncludeDescriptor() {
 +        super();
-+        this.type = type;
-+        this.stringValue = value;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method enumerate.Returns an enumeration of all possible
-+     * instances of SqlDirtyType
-+     * 
-+     * @return an Enumeration over all possible instances of
-+     * SqlDirtyType
-+     */
-+    public static java.util.Enumeration<? extends java.lang.Object> enumerate(
-+    ) {
-+        return _memberTable.elements();
-+    }
-+
-+    /**
-+     * Method getType.Returns the type of this SqlDirtyType
-+     * 
-+     * @return the type of this SqlDirtyType
-+     */
-+    public int getType(
-+    ) {
-+        return this.type;
-+    }
-+
-+    /**
-+     * Method init.
-+     * 
-+     * @return the initialized Hashtable for the member table
-+     */
-+    private static java.util.Hashtable<Object,Object> init(
-+    ) {
-+        java.util.Hashtable<Object, Object> members = new java.util.Hashtable<Object, Object>();
-+        members.put("check", CHECK);
-+        members.put("ignore", IGNORE);
-+        return members;
-+    }
-+
-+    /**
-+     * Method readResolve. will be called during deserialization to
-+     * replace the deserialized object with the correct constant
-+     * instance.
-+     * 
-+     * @return this deserialized object
-+     */
-+    private java.lang.Object readResolve(
-+    ) {
-+        return valueOf(this.stringValue);
-+    }
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "include";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
 +
-+    /**
-+     * Method toString.Returns the String representation of this
-+     * SqlDirtyType
-+     * 
-+     * @return the String representation of this SqlDirtyType
-+     */
-+    public java.lang.String toString(
-+    ) {
-+        return this.stringValue;
-+    }
++        //-- _href
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_href", "href", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Include target = (Include) object;
++                return target.getHref();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Include target = (Include) object;
++                    target.setHref( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * Method valueOf.Returns a new SqlDirtyType based on the given
-+     * String value.
-+     * 
-+     * @param string
-+     * @return the SqlDirtyType value of parameter 'string'
-+     */
-+    public static org.exolab.castor.mapping.xml.types.SqlDirtyType valueOf(
-+            final java.lang.String string) {
-+        java.lang.Object obj = null;
-+        if (string != null) {
-+            obj = _memberTable.get(string);
-+        }
-+        if (obj == null) {
-+            String err = "" + string + " is not a valid SqlDirtyType";
-+            throw new IllegalArgumentException(err);
++        //-- validation code for: _href
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
-+        return (SqlDirtyType) obj;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/BindXmlAutoNamingType.java
-@@ -0,0 +1,154 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types;
-+
-+/**
-+ * Class BindXmlAutoNamingType.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class BindXmlAutoNamingType implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * The deriveByClass type
-+     */
-+    public static final int DERIVEBYCLASS_TYPE = 0;
-+
-+    /**
-+     * The instance of the deriveByClass type
-+     */
-+    public static final BindXmlAutoNamingType DERIVEBYCLASS = new BindXmlAutoNamingType(DERIVEBYCLASS_TYPE, "deriveByClass");
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
 +
-+    /**
-+     * The deriveByField type
-+     */
-+    public static final int DERIVEBYFIELD_TYPE = 1;
++    }
 +
-+    /**
-+     * The instance of the deriveByField type
-+     */
-+    public static final BindXmlAutoNamingType DERIVEBYFIELD = new BindXmlAutoNamingType(DERIVEBYFIELD_TYPE, "deriveByField");
 +
-+    /**
-+     * Field _memberTable.
-+     */
-+    private static java.util.Hashtable<Object,Object> _memberTable = init();
++      //-----------/
++     //- Methods -/
++    //-----------/
 +
 +    /**
-+     * Field type.
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
 +     */
-+    private final int type;
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
 +
 +    /**
-+     * Field stringValue.
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
 +     */
-+    private java.lang.String stringValue = null;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    private BindXmlAutoNamingType(final int type, final java.lang.String value) {
-+        super();
-+        this.type = type;
-+        this.stringValue = value;
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
 +    }
 +
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
 +    /**
-+     * Method enumerate.Returns an enumeration of all possible
-+     * instances of BindXmlAutoNamingType
++     * Method getJavaClass.
 +     * 
-+     * @return an Enumeration over all possible instances of
-+     * BindXmlAutoNamingType
++     * @return the Java class represented by this descriptor.
 +     */
-+    public static java.util.Enumeration<? extends java.lang.Object> enumerate(
++    @Override()
++    public java.lang.Class getJavaClass(
 +    ) {
-+        return _memberTable.elements();
++        return org.exolab.castor.mapping.xml.Include.class;
 +    }
 +
 +    /**
-+     * Method getType.Returns the type of this
-+     * BindXmlAutoNamingType
++     * Method getNameSpacePrefix.
 +     * 
-+     * @return the type of this BindXmlAutoNamingType
++     * @return the namespace prefix to use when marshaling as XML.
 +     */
-+    public int getType(
++    @Override()
++    public java.lang.String getNameSpacePrefix(
 +    ) {
-+        return this.type;
++        return _nsPrefix;
 +    }
 +
 +    /**
-+     * Method init.
++     * Method getNameSpaceURI.
 +     * 
-+     * @return the initialized Hashtable for the member table
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
 +     */
-+    private static java.util.Hashtable<Object,Object> init(
++    @Override()
++    public java.lang.String getNameSpaceURI(
 +    ) {
-+        java.util.Hashtable<Object, Object> members = new java.util.Hashtable<Object, Object>();
-+        members.put("deriveByClass", DERIVEBYCLASS);
-+        members.put("deriveByField", DERIVEBYFIELD);
-+        return members;
++        return _nsURI;
 +    }
 +
 +    /**
-+     * Method readResolve. will be called during deserialization to
-+     * replace the deserialized object with the correct constant
-+     * instance.
++     * Method getValidator.
 +     * 
-+     * @return this deserialized object
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
 +     */
-+    private java.lang.Object readResolve(
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
 +    ) {
-+        return valueOf(this.stringValue);
++        return this;
 +    }
 +
 +    /**
-+     * Method toString.Returns the String representation of this
-+     * BindXmlAutoNamingType
++     * Method getXMLName.
 +     * 
-+     * @return the String representation of this
-+     * BindXmlAutoNamingType
++     * @return the XML Name for the Class being described.
 +     */
-+    public java.lang.String toString(
++    @Override()
++    public java.lang.String getXMLName(
 +    ) {
-+        return this.stringValue;
++        return _xmlName;
 +    }
 +
 +    /**
-+     * Method valueOf.Returns a new BindXmlAutoNamingType based on
-+     * the given String value.
++     * Method isElementDefinition.
 +     * 
-+     * @param string
-+     * @return the BindXmlAutoNamingType value of parameter 'string'
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
 +     */
-+    public static org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType valueOf(
-+            final java.lang.String string) {
-+        java.lang.Object obj = null;
-+        if (string != null) {
-+            obj = _memberTable.get(string);
-+        }
-+        if (obj == null) {
-+            String err = "" + string + " is not a valid BindXmlAutoNamingType";
-+            throw new IllegalArgumentException(err);
-+        }
-+        return (BindXmlAutoNamingType) obj;
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
 +    }
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/BindXmlNodeType.java
-@@ -0,0 +1,174 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/FieldMappingDescriptor.java
+@@ -0,0 +1,1031 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
 +
-+package org.exolab.castor.mapping.xml.types;
++package org.exolab.castor.mapping.xml.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.FieldMapping;
 +
 +/**
-+ * Class BindXmlNodeType.
++ * Class FieldMappingDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+ at SuppressWarnings("serial")
-+public class BindXmlNodeType implements java.io.Serializable {
++public class FieldMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -8362,1327 +8359,909 @@ Last-Update: 2010-06-27
 +    //--------------------------/
 +
 +    /**
-+     * The attribute type
-+     */
-+    public static final int ATTRIBUTE_TYPE = 0;
-+
-+    /**
-+     * The instance of the attribute type
-+     */
-+    public static final BindXmlNodeType ATTRIBUTE = new BindXmlNodeType(ATTRIBUTE_TYPE, "attribute");
-+
-+    /**
-+     * The element type
-+     */
-+    public static final int ELEMENT_TYPE = 1;
-+
-+    /**
-+     * The instance of the element type
-+     */
-+    public static final BindXmlNodeType ELEMENT = new BindXmlNodeType(ELEMENT_TYPE, "element");
-+
-+    /**
-+     * The namespace type
-+     */
-+    public static final int NAMESPACE_TYPE = 2;
-+
-+    /**
-+     * The instance of the namespace type
-+     */
-+    public static final BindXmlNodeType NAMESPACE = new BindXmlNodeType(NAMESPACE_TYPE, "namespace");
-+
-+    /**
-+     * The text type
++     * Field _elementDefinition.
 +     */
-+    public static final int TEXT_TYPE = 3;
++    private boolean _elementDefinition;
 +
 +    /**
-+     * The instance of the text type
++     * Field _nsPrefix.
 +     */
-+    public static final BindXmlNodeType TEXT = new BindXmlNodeType(TEXT_TYPE, "text");
++    private java.lang.String _nsPrefix;
 +
 +    /**
-+     * Field _memberTable.
++     * Field _nsURI.
 +     */
-+    private static java.util.Hashtable<Object,Object> _memberTable = init();
++    private java.lang.String _nsURI;
 +
 +    /**
-+     * Field type.
++     * Field _xmlName.
 +     */
-+    private final int type;
++    private java.lang.String _xmlName;
 +
 +    /**
-+     * Field stringValue.
++     * Field _identity.
 +     */
-+    private java.lang.String stringValue = null;
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
 +
 +
 +      //----------------/
 +     //- Constructors -/
 +    //----------------/
 +
-+    private BindXmlNodeType(final int type, final java.lang.String value) {
++    public FieldMappingDescriptor() {
 +        super();
-+        this.type = type;
-+        this.stringValue = value;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "field";
++        _elementDefinition = true;
 +
-+    /**
-+     * Method enumerate.Returns an enumeration of all possible
-+     * instances of BindXmlNodeType
-+     * 
-+     * @return an Enumeration over all possible instances of
-+     * BindXmlNodeType
-+     */
-+    public static java.util.Enumeration<? extends java.lang.Object> enumerate(
-+    ) {
-+        return _memberTable.elements();
-+    }
++        //-- set grouping compositor
++        setCompositorAsSequence();
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
 +
-+    /**
-+     * Method getType.Returns the type of this BindXmlNodeType
-+     * 
-+     * @return the type of this BindXmlNodeType
-+     */
-+    public int getType(
-+    ) {
-+        return this.type;
-+    }
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getName();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setName( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * Method init.
-+     * 
-+     * @return the initialized Hashtable for the member table
-+     */
-+    private static java.util.Hashtable<Object,Object> init(
-+    ) {
-+        java.util.Hashtable<Object, Object> members = new java.util.Hashtable<Object, Object>();
-+        members.put("attribute", ATTRIBUTE);
-+        members.put("element", ELEMENT);
-+        members.put("namespace", NAMESPACE);
-+        members.put("text", TEXT);
-+        return members;
-+    }
-+
-+    /**
-+     * Method readResolve. will be called during deserialization to
-+     * replace the deserialized object with the correct constant
-+     * instance.
-+     * 
-+     * @return this deserialized object
-+     */
-+    private java.lang.Object readResolve(
-+    ) {
-+        return valueOf(this.stringValue);
-+    }
-+
-+    /**
-+     * Method toString.Returns the String representation of this
-+     * BindXmlNodeType
-+     * 
-+     * @return the String representation of this BindXmlNodeType
-+     */
-+    public java.lang.String toString(
-+    ) {
-+        return this.stringValue;
-+    }
-+
-+    /**
-+     * Method valueOf.Returns a new BindXmlNodeType based on the
-+     * given String value.
-+     * 
-+     * @param string
-+     * @return the BindXmlNodeType value of parameter 'string'
-+     */
-+    public static org.exolab.castor.mapping.xml.types.BindXmlNodeType valueOf(
-+            final java.lang.String string) {
-+        java.lang.Object obj = null;
-+        if (string != null) {
-+            obj = _memberTable.get(string);
-+        }
-+        if (obj == null) {
-+            String err = "" + string + " is not a valid BindXmlNodeType";
-+            throw new IllegalArgumentException(err);
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
-+        return (BindXmlNodeType) obj;
-+    }
++        desc.setValidator(fieldValidator);
++        //-- _type
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getType();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setType( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/ClassMappingAccessType.java
-@@ -0,0 +1,176 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
++        //-- validation code for: _type
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _required
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_required", "required", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasRequired()) { return null; }
++                return (target.getRequired() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteRequired();
++                        return;
++                    }
++                    target.setRequired( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+package org.exolab.castor.mapping.xml.types;
++        //-- validation code for: _required
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _transient
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_transient", "transient", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasTransient()) { return null; }
++                return (target.getTransient() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteTransient();
++                        return;
++                    }
++                    target.setTransient( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+/**
-+ * Class ClassMappingAccessType.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class ClassMappingAccessType implements java.io.Serializable {
++        //-- validation code for: _transient
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _nillable
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_nillable", "nillable", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasNillable()) { return null; }
++                return (target.getNillable() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteNillable();
++                        return;
++                    }
++                    target.setNillable( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
++        //-- validation code for: _nillable
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _direct
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_direct", "direct", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasDirect()) { return null; }
++                return (target.getDirect() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteDirect();
++                        return;
++                    }
++                    target.setDirect( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * The read-only type
-+     */
-+    public static final int READ_ONLY_TYPE = 0;
-+
-+    /**
-+     * The instance of the read-only type
-+     */
-+    public static final ClassMappingAccessType READ_ONLY = new ClassMappingAccessType(READ_ONLY_TYPE, "read-only");
-+
-+    /**
-+     * The shared type
-+     */
-+    public static final int SHARED_TYPE = 1;
-+
-+    /**
-+     * The instance of the shared type
-+     */
-+    public static final ClassMappingAccessType SHARED = new ClassMappingAccessType(SHARED_TYPE, "shared");
-+
-+    /**
-+     * The exclusive type
-+     */
-+    public static final int EXCLUSIVE_TYPE = 2;
-+
-+    /**
-+     * The instance of the exclusive type
-+     */
-+    public static final ClassMappingAccessType EXCLUSIVE = new ClassMappingAccessType(EXCLUSIVE_TYPE, "exclusive");
-+
-+    /**
-+     * The db-locked type
-+     */
-+    public static final int DB_LOCKED_TYPE = 3;
-+
-+    /**
-+     * The instance of the db-locked type
-+     */
-+    public static final ClassMappingAccessType DB_LOCKED = new ClassMappingAccessType(DB_LOCKED_TYPE, "db-locked");
-+
-+    /**
-+     * Field _memberTable.
-+     */
-+    private static java.util.Hashtable<Object,Object> _memberTable = init();
-+
-+    /**
-+     * Field type.
-+     */
-+    private final int type;
-+
-+    /**
-+     * Field stringValue.
-+     */
-+    private java.lang.String stringValue = null;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    private ClassMappingAccessType(final int type, final java.lang.String value) {
-+        super();
-+        this.type = type;
-+        this.stringValue = value;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method enumerate.Returns an enumeration of all possible
-+     * instances of ClassMappingAccessType
-+     * 
-+     * @return an Enumeration over all possible instances of
-+     * ClassMappingAccessType
-+     */
-+    public static java.util.Enumeration<? extends java.lang.Object> enumerate(
-+    ) {
-+        return _memberTable.elements();
-+    }
-+
-+    /**
-+     * Method getType.Returns the type of this
-+     * ClassMappingAccessType
-+     * 
-+     * @return the type of this ClassMappingAccessType
-+     */
-+    public int getType(
-+    ) {
-+        return this.type;
-+    }
-+
-+    /**
-+     * Method init.
-+     * 
-+     * @return the initialized Hashtable for the member table
-+     */
-+    private static java.util.Hashtable<Object,Object> init(
-+    ) {
-+        java.util.Hashtable<Object, Object> members = new java.util.Hashtable<Object, Object>();
-+        members.put("read-only", READ_ONLY);
-+        members.put("shared", SHARED);
-+        members.put("exclusive", EXCLUSIVE);
-+        members.put("db-locked", DB_LOCKED);
-+        return members;
-+    }
-+
-+    /**
-+     * Method readResolve. will be called during deserialization to
-+     * replace the deserialized object with the correct constant
-+     * instance.
-+     * 
-+     * @return this deserialized object
-+     */
-+    private java.lang.Object readResolve(
-+    ) {
-+        return valueOf(this.stringValue);
-+    }
-+
-+    /**
-+     * Method toString.Returns the String representation of this
-+     * ClassMappingAccessType
-+     * 
-+     * @return the String representation of this
-+     * ClassMappingAccessType
-+     */
-+    public java.lang.String toString(
-+    ) {
-+        return this.stringValue;
-+    }
-+
-+    /**
-+     * Method valueOf.Returns a new ClassMappingAccessType based on
-+     * the given String value.
-+     * 
-+     * @param string
-+     * @return the ClassMappingAccessType value of parameter 'string
-+     */
-+    public static org.exolab.castor.mapping.xml.types.ClassMappingAccessType valueOf(
-+            final java.lang.String string) {
-+        java.lang.Object obj = null;
-+        if (string != null) {
-+            obj = _memberTable.get(string);
-+        }
-+        if (obj == null) {
-+            String err = "" + string + " is not a valid ClassMappingAccessType";
-+            throw new IllegalArgumentException(err);
++        //-- validation code for: _direct
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
 +        }
-+        return (ClassMappingAccessType) obj;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/.castor.cdr
-@@ -0,0 +1,6 @@
-+#Fri Jun 11 21:09:46 VET 2010
-+org.exolab.castor.mapping.xml.types.SqlDirtyType=org.exolab.castor.mapping.xml.types.descriptors.SqlDirtyTypeDescriptor
-+org.exolab.castor.mapping.xml.types.FieldMappingCollectionType=org.exolab.castor.mapping.xml.types.descriptors.FieldMappingCollectionTypeDescriptor
-+org.exolab.castor.mapping.xml.types.ClassMappingAccessType=org.exolab.castor.mapping.xml.types.descriptors.ClassMappingAccessTypeDescriptor
-+org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType=org.exolab.castor.mapping.xml.types.descriptors.BindXmlAutoNamingTypeDescriptor
-+org.exolab.castor.mapping.xml.types.BindXmlNodeType=org.exolab.castor.mapping.xml.types.descriptors.BindXmlNodeTypeDescriptor
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/FieldMappingCollectionType.java
-@@ -0,0 +1,254 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types;
-+
-+/**
-+ * Class FieldMappingCollectionType.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+ at SuppressWarnings("serial")
-+public class FieldMappingCollectionType implements java.io.Serializable {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * The array type
-+     */
-+    public static final int ARRAY_TYPE = 0;
-+
-+    /**
-+     * The instance of the array type
-+     */
-+    public static final FieldMappingCollectionType ARRAY = new FieldMappingCollectionType(ARRAY_TYPE, "array");
-+
-+    /**
-+     * The vector type
-+     */
-+    public static final int VECTOR_TYPE = 1;
++        desc.setValidator(fieldValidator);
++        //-- _lazy
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_lazy", "lazy", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasLazy()) { return null; }
++                return (target.getLazy() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteLazy();
++                        return;
++                    }
++                    target.setLazy( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * The instance of the vector type
-+     */
-+    public static final FieldMappingCollectionType VECTOR = new FieldMappingCollectionType(VECTOR_TYPE, "vector");
++        //-- validation code for: _lazy
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _container
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_container", "container", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasContainer()) { return null; }
++                return (target.getContainer() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteContainer();
++                        return;
++                    }
++                    target.setContainer( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * The arraylist type
-+     */
-+    public static final int ARRAYLIST_TYPE = 2;
++        //-- validation code for: _container
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _getMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_getMethod", "get-method", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getGetMethod();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setGetMethod( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * The instance of the arraylist type
-+     */
-+    public static final FieldMappingCollectionType ARRAYLIST = new FieldMappingCollectionType(ARRAYLIST_TYPE, "arraylist");
-+
-+    /**
-+     * The hashtable type
-+     */
-+    public static final int HASHTABLE_TYPE = 3;
-+
-+    /**
-+     * The instance of the hashtable type
-+     */
-+    public static final FieldMappingCollectionType HASHTABLE = new FieldMappingCollectionType(HASHTABLE_TYPE, "hashtable");
-+
-+    /**
-+     * The collection type
-+     */
-+    public static final int COLLECTION_TYPE = 4;
-+
-+    /**
-+     * The instance of the collection type
-+     */
-+    public static final FieldMappingCollectionType COLLECTION = new FieldMappingCollectionType(COLLECTION_TYPE, "collection");
-+
-+    /**
-+     * The set type
-+     */
-+    public static final int SET_TYPE = 5;
-+
-+    /**
-+     * The instance of the set type
-+     */
-+    public static final FieldMappingCollectionType SET = new FieldMappingCollectionType(SET_TYPE, "set");
-+
-+    /**
-+     * The map type
-+     */
-+    public static final int MAP_TYPE = 6;
-+
-+    /**
-+     * The instance of the map type
-+     */
-+    public static final FieldMappingCollectionType MAP = new FieldMappingCollectionType(MAP_TYPE, "map");
-+
-+    /**
-+     * The enumerate type
-+     */
-+    public static final int ENUMERATE_TYPE = 7;
-+
-+    /**
-+     * The instance of the enumerate type
-+     */
-+    public static final FieldMappingCollectionType ENUMERATE = new FieldMappingCollectionType(ENUMERATE_TYPE, "enumerate");
-+
-+    /**
-+     * The sortedset type
-+     */
-+    public static final int SORTEDSET_TYPE = 8;
-+
-+    /**
-+     * The instance of the sortedset type
-+     */
-+    public static final FieldMappingCollectionType SORTEDSET = new FieldMappingCollectionType(SORTEDSET_TYPE, "sortedset");
-+
-+    /**
-+     * The iterator type
-+     */
-+    public static final int ITERATOR_TYPE = 9;
-+
-+    /**
-+     * The instance of the iterator type
-+     */
-+    public static final FieldMappingCollectionType ITERATOR = new FieldMappingCollectionType(ITERATOR_TYPE, "iterator");
-+
-+    /**
-+     * The sortedmap type
-+     */
-+    public static final int SORTEDMAP_TYPE = 10;
-+
-+    /**
-+     * The instance of the sortedmap type
-+     */
-+    public static final FieldMappingCollectionType SORTEDMAP = new FieldMappingCollectionType(SORTEDMAP_TYPE, "sortedmap");
-+
-+    /**
-+     * Field _memberTable.
-+     */
-+    private static java.util.Hashtable<Object,Object> _memberTable = init();
-+
-+    /**
-+     * Field type.
-+     */
-+    private final int type;
-+
-+    /**
-+     * Field stringValue.
-+     */
-+    private java.lang.String stringValue = null;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    private FieldMappingCollectionType(final int type, final java.lang.String value) {
-+        super();
-+        this.type = type;
-+        this.stringValue = value;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method enumerate.Returns an enumeration of all possible
-+     * instances of FieldMappingCollectionType
-+     * 
-+     * @return an Enumeration over all possible instances of
-+     * FieldMappingCollectionType
-+     */
-+    public static java.util.Enumeration<? extends java.lang.Object> enumerate(
-+    ) {
-+        return _memberTable.elements();
-+    }
-+
-+    /**
-+     * Method getType.Returns the type of this
-+     * FieldMappingCollectionType
-+     * 
-+     * @return the type of this FieldMappingCollectionType
-+     */
-+    public int getType(
-+    ) {
-+        return this.type;
-+    }
-+
-+    /**
-+     * Method init.
-+     * 
-+     * @return the initialized Hashtable for the member table
-+     */
-+    private static java.util.Hashtable<Object,Object> init(
-+    ) {
-+        java.util.Hashtable<Object, Object> members = new java.util.Hashtable<Object, Object>();
-+        members.put("array", ARRAY);
-+        members.put("vector", VECTOR);
-+        members.put("arraylist", ARRAYLIST);
-+        members.put("hashtable", HASHTABLE);
-+        members.put("collection", COLLECTION);
-+        members.put("set", SET);
-+        members.put("map", MAP);
-+        members.put("enumerate", ENUMERATE);
-+        members.put("sortedset", SORTEDSET);
-+        members.put("iterator", ITERATOR);
-+        members.put("sortedmap", SORTEDMAP);
-+        return members;
-+    }
-+
-+    /**
-+     * Method readResolve. will be called during deserialization to
-+     * replace the deserialized object with the correct constant
-+     * instance.
-+     * 
-+     * @return this deserialized object
-+     */
-+    private java.lang.Object readResolve(
-+    ) {
-+        return valueOf(this.stringValue);
-+    }
-+
-+    /**
-+     * Method toString.Returns the String representation of this
-+     * FieldMappingCollectionType
-+     * 
-+     * @return the String representation of this
-+     * FieldMappingCollectionType
-+     */
-+    public java.lang.String toString(
-+    ) {
-+        return this.stringValue;
-+    }
-+
-+    /**
-+     * Method valueOf.Returns a new FieldMappingCollectionType
-+     * based on the given String value.
-+     * 
-+     * @param string
-+     * @return the FieldMappingCollectionType value of parameter
-+     * 'string'
-+     */
-+    public static org.exolab.castor.mapping.xml.types.FieldMappingCollectionType valueOf(
-+            final java.lang.String string) {
-+        java.lang.Object obj = null;
-+        if (string != null) {
-+            obj = _memberTable.get(string);
-+        }
-+        if (obj == null) {
-+            String err = "" + string + " is not a valid FieldMappingCollectionType";
-+            throw new IllegalArgumentException(err);
++        //-- validation code for: _getMethod
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
-+        return (FieldMappingCollectionType) obj;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/FieldMappingCollectionTypeDescriptor.java
-@@ -0,0 +1,162 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
-+
-+import org.exolab.castor.mapping.xml.types.FieldMappingCollectionType;
-+
-+/**
-+ * Class FieldMappingCollectionTypeDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class FieldMappingCollectionTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
-+
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
-+
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
-+
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public FieldMappingCollectionTypeDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "FieldMappingCollectionType";
-+        _elementDefinition = false;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method getAccessMode.
-+     * 
-+     * @return the access mode specified for this class.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.AccessMode getAccessMode(
-+    ) {
-+        return null;
-+    }
-+
-+    /**
-+     * Method getIdentity.
-+     * 
-+     * @return the identity field, null if this class has no
-+     * identity.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
-+    ) {
-+        return _identity;
-+    }
-+
-+    /**
-+     * Method getJavaClass.
-+     * 
-+     * @return the Java class represented by this descriptor.
-+     */
-+    @Override()
-+    public java.lang.Class getJavaClass(
-+    ) {
-+        return org.exolab.castor.mapping.xml.types.FieldMappingCollectionType.class;
-+    }
-+
-+    /**
-+     * Method getNameSpacePrefix.
-+     * 
-+     * @return the namespace prefix to use when marshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpacePrefix(
-+    ) {
-+        return _nsPrefix;
-+    }
-+
-+    /**
-+     * Method getNameSpaceURI.
-+     * 
-+     * @return the namespace URI used when marshaling and
-+     * unmarshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpaceURI(
-+    ) {
-+        return _nsURI;
-+    }
-+
-+    /**
-+     * Method getValidator.
-+     * 
-+     * @return a specific validator for the class described by this
-+     * ClassDescriptor.
-+     */
-+    @Override()
-+    public org.exolab.castor.xml.TypeValidator getValidator(
-+    ) {
-+        return this;
-+    }
-+
-+    /**
-+     * Method getXMLName.
-+     * 
-+     * @return the XML Name for the Class being described.
-+     */
-+    @Override()
-+    public java.lang.String getXMLName(
-+    ) {
-+        return _xmlName;
-+    }
-+
-+    /**
-+     * Method isElementDefinition.
-+     * 
-+     * @return true if XML schema definition of this Class is that
-+     * of a global
-+     * element or element with anonymous type definition.
-+     */
-+    public boolean isElementDefinition(
-+    ) {
-+        return _elementDefinition;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/ClassMappingAccessTypeDescriptor.java
-@@ -0,0 +1,162 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
-+
-+import org.exolab.castor.mapping.xml.types.ClassMappingAccessType;
-+
-+/**
-+ * Class ClassMappingAccessTypeDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class ClassMappingAccessTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
-+
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
-+
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
-+
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public ClassMappingAccessTypeDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "ClassMappingAccessType";
-+        _elementDefinition = false;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method getAccessMode.
-+     * 
-+     * @return the access mode specified for this class.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.AccessMode getAccessMode(
-+    ) {
-+        return null;
-+    }
-+
-+    /**
-+     * Method getIdentity.
-+     * 
-+     * @return the identity field, null if this class has no
-+     * identity.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
-+    ) {
-+        return _identity;
-+    }
-+
-+    /**
-+     * Method getJavaClass.
-+     * 
-+     * @return the Java class represented by this descriptor.
-+     */
-+    @Override()
-+    public java.lang.Class getJavaClass(
-+    ) {
-+        return org.exolab.castor.mapping.xml.types.ClassMappingAccessType.class;
-+    }
-+
-+    /**
-+     * Method getNameSpacePrefix.
-+     * 
-+     * @return the namespace prefix to use when marshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpacePrefix(
-+    ) {
-+        return _nsPrefix;
-+    }
-+
-+    /**
-+     * Method getNameSpaceURI.
-+     * 
-+     * @return the namespace URI used when marshaling and
-+     * unmarshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpaceURI(
-+    ) {
-+        return _nsURI;
-+    }
-+
-+    /**
-+     * Method getValidator.
-+     * 
-+     * @return a specific validator for the class described by this
-+     * ClassDescriptor.
-+     */
-+    @Override()
-+    public org.exolab.castor.xml.TypeValidator getValidator(
-+    ) {
-+        return this;
-+    }
-+
-+    /**
-+     * Method getXMLName.
-+     * 
-+     * @return the XML Name for the Class being described.
-+     */
-+    @Override()
-+    public java.lang.String getXMLName(
-+    ) {
-+        return _xmlName;
-+    }
-+
-+    /**
-+     * Method isElementDefinition.
-+     * 
-+     * @return true if XML schema definition of this Class is that
-+     * of a global
-+     * element or element with anonymous type definition.
-+     */
-+    public boolean isElementDefinition(
-+    ) {
-+        return _elementDefinition;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/BindXmlNodeTypeDescriptor.java
-@@ -0,0 +1,162 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
-+
-+import org.exolab.castor.mapping.xml.types.BindXmlNodeType;
-+
-+/**
-+ * Class BindXmlNodeTypeDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class BindXmlNodeTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
-+
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
-+
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
-+
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public BindXmlNodeTypeDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "BindXmlNodeType";
-+        _elementDefinition = false;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method getAccessMode.
-+     * 
-+     * @return the access mode specified for this class.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.AccessMode getAccessMode(
-+    ) {
-+        return null;
-+    }
-+
-+    /**
-+     * Method getIdentity.
-+     * 
-+     * @return the identity field, null if this class has no
-+     * identity.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
-+    ) {
-+        return _identity;
-+    }
-+
-+    /**
-+     * Method getJavaClass.
-+     * 
-+     * @return the Java class represented by this descriptor.
-+     */
-+    @Override()
-+    public java.lang.Class getJavaClass(
-+    ) {
-+        return org.exolab.castor.mapping.xml.types.BindXmlNodeType.class;
-+    }
-+
-+    /**
-+     * Method getNameSpacePrefix.
-+     * 
-+     * @return the namespace prefix to use when marshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpacePrefix(
-+    ) {
-+        return _nsPrefix;
-+    }
-+
-+    /**
-+     * Method getNameSpaceURI.
-+     * 
-+     * @return the namespace URI used when marshaling and
-+     * unmarshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpaceURI(
-+    ) {
-+        return _nsURI;
-+    }
-+
-+    /**
-+     * Method getValidator.
-+     * 
-+     * @return a specific validator for the class described by this
-+     * ClassDescriptor.
-+     */
-+    @Override()
-+    public org.exolab.castor.xml.TypeValidator getValidator(
-+    ) {
-+        return this;
-+    }
-+
-+    /**
-+     * Method getXMLName.
-+     * 
-+     * @return the XML Name for the Class being described.
-+     */
-+    @Override()
-+    public java.lang.String getXMLName(
-+    ) {
-+        return _xmlName;
-+    }
-+
-+    /**
-+     * Method isElementDefinition.
-+     * 
-+     * @return true if XML schema definition of this Class is that
-+     * of a global
-+     * element or element with anonymous type definition.
-+     */
-+    public boolean isElementDefinition(
-+    ) {
-+        return _elementDefinition;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/BindXmlAutoNamingTypeDescriptor.java
-@@ -0,0 +1,162 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
-+
-+import org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType;
-+
-+/**
-+ * Class BindXmlAutoNamingTypeDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class BindXmlAutoNamingTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
-+
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
-+
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
-+
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public BindXmlAutoNamingTypeDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "BindXmlAutoNamingType";
-+        _elementDefinition = false;
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method getAccessMode.
-+     * 
-+     * @return the access mode specified for this class.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.AccessMode getAccessMode(
-+    ) {
-+        return null;
-+    }
-+
-+    /**
-+     * Method getIdentity.
-+     * 
-+     * @return the identity field, null if this class has no
-+     * identity.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
-+    ) {
-+        return _identity;
-+    }
-+
-+    /**
-+     * Method getJavaClass.
-+     * 
-+     * @return the Java class represented by this descriptor.
-+     */
-+    @Override()
-+    public java.lang.Class getJavaClass(
-+    ) {
-+        return org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType.class;
-+    }
-+
-+    /**
-+     * Method getNameSpacePrefix.
-+     * 
-+     * @return the namespace prefix to use when marshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpacePrefix(
-+    ) {
-+        return _nsPrefix;
-+    }
-+
-+    /**
-+     * Method getNameSpaceURI.
-+     * 
-+     * @return the namespace URI used when marshaling and
-+     * unmarshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpaceURI(
-+    ) {
-+        return _nsURI;
-+    }
-+
-+    /**
-+     * Method getValidator.
-+     * 
-+     * @return a specific validator for the class described by this
-+     * ClassDescriptor.
-+     */
-+    @Override()
-+    public org.exolab.castor.xml.TypeValidator getValidator(
-+    ) {
-+        return this;
-+    }
-+
-+    /**
-+     * Method getXMLName.
-+     * 
-+     * @return the XML Name for the Class being described.
-+     */
-+    @Override()
-+    public java.lang.String getXMLName(
-+    ) {
-+        return _xmlName;
-+    }
-+
-+    /**
-+     * Method isElementDefinition.
-+     * 
-+     * @return true if XML schema definition of this Class is that
-+     * of a global
-+     * element or element with anonymous type definition.
-+     */
-+    public boolean isElementDefinition(
-+    ) {
-+        return _elementDefinition;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/SqlDirtyTypeDescriptor.java
-@@ -0,0 +1,162 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.types.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
++        desc.setValidator(fieldValidator);
++        //-- _hasMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_hasMethod", "has-method", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getHasMethod();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setHasMethod( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+import org.exolab.castor.mapping.xml.types.SqlDirtyType;
++        //-- validation code for: _hasMethod
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _setMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_setMethod", "set-method", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getSetMethod();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setSetMethod( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+/**
-+ * Class SqlDirtyTypeDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class SqlDirtyTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++        //-- validation code for: _setMethod
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _createMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_createMethod", "create-method", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getCreateMethod();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setCreateMethod( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
++        //-- validation code for: _createMethod
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _handler
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_handler", "handler", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getHandler();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setHandler( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
++        //-- validation code for: _handler
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _collection
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.FieldMappingCollectionType.class, "_collection", "collection", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getCollection();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setCollection( (org.exolab.castor.mapping.xml.types.FieldMappingCollectionType) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.FieldMappingCollectionType.class, handler);
++        desc.setImmutable(true);
++        desc.setSchemaType("FieldMappingCollectionType");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
++        //-- validation code for: _collection
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _comparator
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_comparator", "comparator", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getComparator();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setComparator( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
++        //-- validation code for: _comparator
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _identity
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_identity", "identity", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                if (!target.hasIdentity()) { return null; }
++                return (target.getIdentity() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteIdentity();
++                        return;
++                    }
++                    target.setIdentity( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
++        //-- validation code for: _identity
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
 +
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
++        //-- _description
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_description", "description", org.exolab.castor.xml.NodeType.Element);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getDescription();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setDescription( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++        //-- validation code for: _description
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _sql
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Sql.class, "_sql", "sql", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getSql();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setSql( (org.exolab.castor.mapping.xml.Sql) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("org.exolab.castor.mapping.xml.Sql");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
++        //-- validation code for: _sql
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _bindXml
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.BindXml.class, "_bindXml", "bind-xml", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getBindXml();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setBindXml( (org.exolab.castor.mapping.xml.BindXml) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("org.exolab.castor.mapping.xml.BindXml");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++        //-- validation code for: _bindXml
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _ldap
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Ldap.class, "_ldap", "ldap", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                FieldMapping target = (FieldMapping) object;
++                return target.getLdap();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    FieldMapping target = (FieldMapping) object;
++                    target.setLdap( (org.exolab.castor.mapping.xml.Ldap) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("org.exolab.castor.mapping.xml.Ldap");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+    public SqlDirtyTypeDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "SqlDirtyType";
-+        _elementDefinition = false;
++        //-- validation code for: _ldap
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -9721,7 +9300,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.types.SqlDirtyType.class;
++        return org.exolab.castor.mapping.xml.FieldMapping.class;
 +    }
 +
 +    /**
@@ -9784,11 +9363,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/MappingRootDescriptor.java
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/MappingRootDescriptor.java
 @@ -0,0 +1,411 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -9950,15 +9529,15 @@ Last-Update: 2010-06-27
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _classMappingList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.ClassMapping.class, "_classMappingList", "class", org.exolab.castor.xml.NodeType.Element);
++        //-- _fieldHandlerDefList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.FieldHandlerDef.class, "_fieldHandlerDefList", "field-handler", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
 +                MappingRoot target = (MappingRoot) object;
-+                return target.getClassMapping();
++                return target.getFieldHandlerDef();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
@@ -9966,7 +9545,7 @@ Last-Update: 2010-06-27
 +            {
 +                try {
 +                    MappingRoot target = (MappingRoot) object;
-+                    target.addClassMapping( (org.exolab.castor.mapping.xml.ClassMapping) value);
++                    target.addFieldHandlerDef( (org.exolab.castor.mapping.xml.FieldHandlerDef) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -9974,7 +9553,7 @@ Last-Update: 2010-06-27
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
 +                    MappingRoot target = (MappingRoot) object;
-+                    target.removeAllClassMapping();
++                    target.removeAllFieldHandlerDef();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -9986,28 +9565,28 @@ Last-Update: 2010-06-27
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.ClassMapping");
++        desc.setComponentType("org.exolab.castor.mapping.xml.FieldHandlerDef");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _classMappingList
++        //-- validation code for: _fieldHandlerDefList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _keyGeneratorDefList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.KeyGeneratorDef.class, "_keyGeneratorDefList", "key-generator", org.exolab.castor.xml.NodeType.Element);
++        //-- _classMappingList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.ClassMapping.class, "_classMappingList", "class", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
 +                MappingRoot target = (MappingRoot) object;
-+                return target.getKeyGeneratorDef();
++                return target.getClassMapping();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
@@ -10015,7 +9594,7 @@ Last-Update: 2010-06-27
 +            {
 +                try {
 +                    MappingRoot target = (MappingRoot) object;
-+                    target.addKeyGeneratorDef( (org.exolab.castor.mapping.xml.KeyGeneratorDef) value);
++                    target.addClassMapping( (org.exolab.castor.mapping.xml.ClassMapping) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10023,7 +9602,7 @@ Last-Update: 2010-06-27
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
 +                    MappingRoot target = (MappingRoot) object;
-+                    target.removeAllKeyGeneratorDef();
++                    target.removeAllClassMapping();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10035,28 +9614,28 @@ Last-Update: 2010-06-27
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.KeyGeneratorDef");
++        desc.setComponentType("org.exolab.castor.mapping.xml.ClassMapping");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _keyGeneratorDefList
++        //-- validation code for: _classMappingList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _fieldHandlerDefList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.FieldHandlerDef.class, "_fieldHandlerDefList", "field-handler", org.exolab.castor.xml.NodeType.Element);
++        //-- _keyGeneratorDefList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.KeyGeneratorDef.class, "_keyGeneratorDefList", "key-generator", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
 +                MappingRoot target = (MappingRoot) object;
-+                return target.getFieldHandlerDef();
++                return target.getKeyGeneratorDef();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
@@ -10064,7 +9643,7 @@ Last-Update: 2010-06-27
 +            {
 +                try {
 +                    MappingRoot target = (MappingRoot) object;
-+                    target.addFieldHandlerDef( (org.exolab.castor.mapping.xml.FieldHandlerDef) value);
++                    target.addKeyGeneratorDef( (org.exolab.castor.mapping.xml.KeyGeneratorDef) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10072,7 +9651,7 @@ Last-Update: 2010-06-27
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
 +                    MappingRoot target = (MappingRoot) object;
-+                    target.removeAllFieldHandlerDef();
++                    target.removeAllKeyGeneratorDef();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10084,14 +9663,14 @@ Last-Update: 2010-06-27
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.FieldHandlerDef");
++        desc.setComponentType("org.exolab.castor.mapping.xml.KeyGeneratorDef");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _fieldHandlerDefList
++        //-- validation code for: _keyGeneratorDefList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
@@ -10198,11 +9777,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/QueryHintDescriptor.java
-@@ -0,0 +1,257 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/NamedQueryDescriptor.java
+@@ -0,0 +1,310 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -10213,14 +9792,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.QueryHint;
++import org.exolab.castor.mapping.xml.NamedQuery;
 +
 +/**
-+ * Class QueryHintDescriptor.
++ * Class NamedQueryDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class QueryHintDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class NamedQueryDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -10257,11 +9836,14 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public QueryHintDescriptor() {
++    public NamedQueryDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "query-hint";
++        _xmlName = "named-query";
 +        _elementDefinition = true;
++
++        //-- set grouping compositor
++        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
@@ -10275,7 +9857,7 @@ Last-Update: 2010-06-27
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                QueryHint target = (QueryHint) object;
++                NamedQuery target = (NamedQuery) object;
 +                return target.getName();
 +            }
 +            @Override
@@ -10283,7 +9865,7 @@ Last-Update: 2010-06-27
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    QueryHint target = (QueryHint) object;
++                    NamedQuery target = (NamedQuery) object;
 +                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -10311,24 +9893,26 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _value
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute);
++        //-- initialize element descriptors
++
++        //-- _query
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_query", "query", org.exolab.castor.xml.NodeType.Element);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                QueryHint target = (QueryHint) object;
-+                return target.getValue();
++                NamedQuery target = (NamedQuery) object;
++                return target.getQuery();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    QueryHint target = (QueryHint) object;
-+                    target.setValue( (java.lang.String) value);
++                    NamedQuery target = (NamedQuery) object;
++                    target.setQuery( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10344,8 +9928,9 @@ Last-Update: 2010-06-27
 +        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _value
++        //-- validation code for: _query
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
@@ -10355,8 +9940,55 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
++        //-- _queryHintList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.QueryHint.class, "_queryHintList", "query-hint", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                NamedQuery target = (NamedQuery) object;
++                return target.getQueryHint();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    NamedQuery target = (NamedQuery) object;
++                    target.addQueryHint( (org.exolab.castor.mapping.xml.QueryHint) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    NamedQuery target = (NamedQuery) object;
++                    target.removeAllQueryHint();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.exolab.castor.mapping.xml.QueryHint");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
++        //-- validation code for: _queryHintList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -10395,7 +10027,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.QueryHint.class;
++        return org.exolab.castor.mapping.xml.NamedQuery.class;
 +    }
 +
 +    /**
@@ -10458,11 +10090,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/CacheTypeMappingDescriptor.java
-@@ -0,0 +1,355 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ContainerDescriptor.java
+@@ -0,0 +1,560 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -10473,14 +10105,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.CacheTypeMapping;
++import org.exolab.castor.mapping.xml.Container;
 +
 +/**
-+ * Class CacheTypeMappingDescriptor.
++ * Class ContainerDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class CacheTypeMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class ContainerDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -10517,10 +10149,10 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public CacheTypeMappingDescriptor() {
++    public ContainerDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "cache-type";
++        _xmlName = "container";
 +        _elementDefinition = true;
 +
 +        //-- set grouping compositor
@@ -10530,15 +10162,58 @@ Last-Update: 2010-06-27
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Container target = (Container) object;
++                return target.getName();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Container target = (Container) object;
++                    target.setName( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        desc.setSchemaType("NMTOKEN");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
++        }
++        desc.setValidator(fieldValidator);
 +        //-- _type
 +        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                CacheTypeMapping target = (CacheTypeMapping) object;
++                Container target = (Container) object;
 +                return target.getType();
 +            }
 +            @Override
@@ -10546,7 +10221,7 @@ Last-Update: 2010-06-27
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    Container target = (Container) object;
 +                    target.setType( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -10555,10 +10230,10 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("NMTOKEN");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
@@ -10566,35 +10241,36 @@ Last-Update: 2010-06-27
 +        //-- validation code for: _type
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
 +            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
++            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _debug
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_debug", "debug", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _required
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_required", "required", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                CacheTypeMapping target = (CacheTypeMapping) object;
-+                if (!target.hasDebug()) { return null; }
-+                return (target.getDebug() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                Container target = (Container) object;
++                if (!target.hasRequired()) { return null; }
++                return (target.getRequired() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    Container target = (Container) object;
 +                    // if null, use delete method for optional primitives 
 +                    if (value == null) {
-+                        target.deleteDebug();
++                        target.deleteRequired();
 +                        return;
 +                    }
-+                    target.setDebug( ((java.lang.Boolean) value).booleanValue());
++                    target.setRequired( ((java.lang.Boolean) value).booleanValue());
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10610,37 +10286,119 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _debug
++        //-- validation code for: _required
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _direct
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_direct", "direct", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Container target = (Container) object;
++                if (!target.hasDirect()) { return null; }
++                return (target.getDirect() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Container target = (Container) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteDirect();
++                        return;
++                    }
++                    target.setDirect( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _direct
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _getMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_getMethod", "get-method", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Container target = (Container) object;
++                return target.getGetMethod();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Container target = (Container) object;
++                    target.setGetMethod( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        desc.setSchemaType("NMTOKEN");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _getMethod
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _capacity
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Long.TYPE, "_capacity", "capacity", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _setMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_setMethod", "set-method", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                CacheTypeMapping target = (CacheTypeMapping) object;
-+                if (!target.hasCapacity()) { return null; }
-+                return new java.lang.Long(target.getCapacity());
++                Container target = (Container) object;
++                return target.getSetMethod();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    CacheTypeMapping target = (CacheTypeMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteCapacity();
-+                        return;
-+                    }
-+                    target.setCapacity( ((java.lang.Long) value).longValue());
++                    Container target = (Container) object;
++                    target.setSetMethod( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10648,49 +10406,41 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("integer");
++        desc.setSchemaType("NMTOKEN");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _capacity
++        //-- validation code for: _setMethod
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.LongValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.LongValidator();
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
-+        //-- _paramList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
++        //-- _createMethod
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_createMethod", "create-method", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                CacheTypeMapping target = (CacheTypeMapping) object;
-+                return target.getParam();
++                Container target = (Container) object;
++                return target.getCreateMethod();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    CacheTypeMapping target = (CacheTypeMapping) object;
-+                    target.addParam( (org.exolab.castor.mapping.xml.Param) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    CacheTypeMapping target = (CacheTypeMapping) object;
-+                    target.removeAllParam();
++                    Container target = (Container) object;
++                    target.setCreateMethod( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10698,211 +10448,86 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.Param");
++        desc.setSchemaType("NMTOKEN");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(true);
++        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _paramList
++        //-- validation code for: _createMethod
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method getAccessMode.
-+     * 
-+     * @return the access mode specified for this class.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.AccessMode getAccessMode(
-+    ) {
-+        return null;
-+    }
-+
-+    /**
-+     * Method getIdentity.
-+     * 
-+     * @return the identity field, null if this class has no
-+     * identity.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
-+    ) {
-+        return _identity;
-+    }
-+
-+    /**
-+     * Method getJavaClass.
-+     * 
-+     * @return the Java class represented by this descriptor.
-+     */
-+    @Override()
-+    public java.lang.Class getJavaClass(
-+    ) {
-+        return org.exolab.castor.mapping.xml.CacheTypeMapping.class;
-+    }
-+
-+    /**
-+     * Method getNameSpacePrefix.
-+     * 
-+     * @return the namespace prefix to use when marshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpacePrefix(
-+    ) {
-+        return _nsPrefix;
-+    }
-+
-+    /**
-+     * Method getNameSpaceURI.
-+     * 
-+     * @return the namespace URI used when marshaling and
-+     * unmarshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpaceURI(
-+    ) {
-+        return _nsURI;
-+    }
-+
-+    /**
-+     * Method getValidator.
-+     * 
-+     * @return a specific validator for the class described by this
-+     * ClassDescriptor.
-+     */
-+    @Override()
-+    public org.exolab.castor.xml.TypeValidator getValidator(
-+    ) {
-+        return this;
-+    }
-+
-+    /**
-+     * Method getXMLName.
-+     * 
-+     * @return the XML Name for the Class being described.
-+     */
-+    @Override()
-+    public java.lang.String getXMLName(
-+    ) {
-+        return _xmlName;
-+    }
-+
-+    /**
-+     * Method isElementDefinition.
-+     * 
-+     * @return true if XML schema definition of this Class is that
-+     * of a global
-+     * element or element with anonymous type definition.
-+     */
-+    public boolean isElementDefinition(
-+    ) {
-+        return _elementDefinition;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/IncludeDescriptor.java
-@@ -0,0 +1,213 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
-+
-+import org.exolab.castor.mapping.xml.Include;
-+
-+/**
-+ * Class IncludeDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class IncludeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
-+
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
-+
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
-+
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++        //-- initialize element descriptors
 +
-+    public IncludeDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "include";
-+        _elementDefinition = true;
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
++        //-- _description
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_description", "description", org.exolab.castor.xml.NodeType.Element);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Container target = (Container) object;
++                return target.getDescription();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Container target = (Container) object;
++                    target.setDescription( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- _href
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_href", "href", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
++        //-- validation code for: _description
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _fieldMapping
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.FieldMapping.class, "_fieldMapping", "field", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Include target = (Include) object;
-+                return target.getHref();
++                Container target = (Container) object;
++                return target.getFieldMapping();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Include target = (Include) object;
-+                    target.setHref( (java.lang.String) value);
++                    Container target = (Container) object;
++                    target.setFieldMapping( (org.exolab.castor.mapping.xml.FieldMapping) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -10913,24 +10538,20 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("org.exolab.castor.mapping.xml.FieldMapping");
 +        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _href
++        //-- validation code for: _fieldMapping
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
 +    }
 +
 +
@@ -10969,7 +10590,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.Include.class;
++        return org.exolab.castor.mapping.xml.Container.class;
 +    }
 +
 +    /**
@@ -11032,11 +10653,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/PropertyTypeDescriptor.java
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/PropertyTypeDescriptor.java
 @@ -0,0 +1,262 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -11297,11 +10918,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/LdapDescriptor.java
-@@ -0,0 +1,211 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/NamedNativeQueryDescriptor.java
+@@ -0,0 +1,394 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -11312,14 +10933,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.Ldap;
++import org.exolab.castor.mapping.xml.NamedNativeQuery;
 +
 +/**
-+ * Class LdapDescriptor.
++ * Class NamedNativeQueryDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class LdapDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class NamedNativeQueryDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -11356,11 +10977,14 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public LdapDescriptor() {
++    public NamedNativeQueryDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "ldap";
++        _xmlName = "named-native-query";
 +        _elementDefinition = true;
++
++        //-- set grouping compositor
++        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
@@ -11368,12 +10992,13 @@ Last-Update: 2010-06-27
 +
 +        //-- _name
 +        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Ldap target = (Ldap) object;
++                NamedNativeQuery target = (NamedNativeQuery) object;
 +                return target.getName();
 +            }
 +            @Override
@@ -11381,7 +11006,7 @@ Last-Update: 2010-06-27
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Ldap target = (Ldap) object;
++                    NamedNativeQuery target = (NamedNativeQuery) object;
 +                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -11390,26 +11015,205 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _resultClass
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_resultClass", "result-class", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                NamedNativeQuery target = (NamedNativeQuery) object;
++                return target.getResultClass();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    NamedNativeQuery target = (NamedNativeQuery) object;
++                    target.setResultClass( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _resultClass
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _resultSetMapping
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_resultSetMapping", "result-set-mapping", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                NamedNativeQuery target = (NamedNativeQuery) object;
++                return target.getResultSetMapping();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    NamedNativeQuery target = (NamedNativeQuery) object;
++                    target.setResultSetMapping( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _resultSetMapping
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
++
++        //-- _query
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_query", "query", org.exolab.castor.xml.NodeType.Element);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                NamedNativeQuery target = (NamedNativeQuery) object;
++                return target.getQuery();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    NamedNativeQuery target = (NamedNativeQuery) object;
++                    target.setQuery( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _query
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _queryHintList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.QueryHint.class, "_queryHintList", "query-hint", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                NamedNativeQuery target = (NamedNativeQuery) object;
++                return target.getQueryHint();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    NamedNativeQuery target = (NamedNativeQuery) object;
++                    target.addQueryHint( (org.exolab.castor.mapping.xml.QueryHint) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    NamedNativeQuery target = (NamedNativeQuery) object;
++                    target.removeAllQueryHint();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("NMTOKEN");
++        desc.setSchemaType("list");
++        desc.setComponentType("org.exolab.castor.mapping.xml.QueryHint");
 +        desc.setHandler(handler);
-+        desc.setMultivalued(false);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _queryHintList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
 +    }
 +
 +
@@ -11448,7 +11252,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.Ldap.class;
++        return org.exolab.castor.mapping.xml.NamedNativeQuery.class;
 +    }
 +
 +    /**
@@ -11511,11 +11315,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/MapToDescriptor.java
-@@ -0,0 +1,467 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ParamDescriptor.java
+@@ -0,0 +1,257 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -11526,14 +11330,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.MapTo;
++import org.exolab.castor.mapping.xml.Param;
 +
 +/**
-+ * Class MapToDescriptor.
++ * Class ParamDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class MapToDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class ParamDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -11560,258 +11364,44 @@ Last-Update: 2010-06-27
 +     */
 +    private java.lang.String _xmlName;
 +
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public MapToDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "map-to";
-+        _elementDefinition = true;
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
-+
-+        //-- _table
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_table", "table", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                MapTo target = (MapTo) object;
-+                return target.getTable();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    MapTo target = (MapTo) object;
-+                    target.setTable( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _table
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _xml
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_xml", "xml", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                MapTo target = (MapTo) object;
-+                return target.getXml();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    MapTo target = (MapTo) object;
-+                    target.setXml( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _xml
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _nsUri
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_nsUri", "ns-uri", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                MapTo target = (MapTo) object;
-+                return target.getNsUri();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    MapTo target = (MapTo) object;
-+                    target.setNsUri( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _nsUri
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _nsPrefix
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_nsPrefix", "ns-prefix", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                MapTo target = (MapTo) object;
-+                return target.getNsPrefix();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    MapTo target = (MapTo) object;
-+                    target.setNsPrefix( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _nsPrefix
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _elementDefinition
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_elementDefinition", "element-definition", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                MapTo target = (MapTo) object;
-+                if (!target.hasElementDefinition()) { return null; }
-+                return (target.getElementDefinition() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    MapTo target = (MapTo) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteElementDefinition();
-+                        return;
-+                    }
-+                    target.setElementDefinition( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _elementDefinition
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _ldapDn
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_ldapDn", "ldap-dn", org.exolab.castor.xml.NodeType.Attribute);
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public ParamDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "param";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                MapTo target = (MapTo) object;
-+                return target.getLdapDn();
++                Param target = (Param) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    MapTo target = (MapTo) object;
-+                    target.setLdapDn( (java.lang.String) value);
++                    Param target = (Param) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -11824,11 +11414,13 @@ Last-Update: 2010-06-27
 +        };
 +        desc.setSchemaType("string");
 +        desc.setHandler(handler);
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _ldapDn
++        //-- validation code for: _name
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
 +            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
@@ -11836,24 +11428,24 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _ldapOc
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_ldapOc", "ldap-oc", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _value
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                MapTo target = (MapTo) object;
-+                return target.getLdapOc();
++                Param target = (Param) object;
++                return target.getValue();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    MapTo target = (MapTo) object;
-+                    target.setLdapOc( (java.lang.String) value);
++                    Param target = (Param) object;
++                    target.setValue( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -11866,11 +11458,13 @@ Last-Update: 2010-06-27
 +        };
 +        desc.setSchemaType("string");
 +        desc.setHandler(handler);
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _ldapOc
++        //-- validation code for: _value
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
 +            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
@@ -11918,7 +11512,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.MapTo.class;
++        return org.exolab.castor.mapping.xml.Param.class;
 +    }
 +
 +    /**
@@ -11981,11 +11575,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ContainerDescriptor.java
-@@ -0,0 +1,560 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ClassMappingDescriptor.java
+@@ -0,0 +1,820 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -11996,14 +11590,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.Container;
++import org.exolab.castor.mapping.xml.ClassMapping;
 +
 +/**
-+ * Class ContainerDescriptor.
++ * Class ClassMappingDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class ContainerDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class ClassMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -12040,10 +11634,10 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public ContainerDescriptor() {
++    public ClassMappingDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "container";
++        _xmlName = "class";
 +        _elementDefinition = true;
 +
 +        //-- set grouping compositor
@@ -12055,12 +11649,13 @@ Last-Update: 2010-06-27
 +
 +        //-- _name
 +        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        this._identity = desc;
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
++                ClassMapping target = (ClassMapping) object;
 +                return target.getName();
 +            }
 +            @Override
@@ -12068,7 +11663,7 @@ Last-Update: 2010-06-27
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
++                    ClassMapping target = (ClassMapping) object;
 +                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -12080,7 +11675,7 @@ Last-Update: 2010-06-27
 +                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("NMTOKEN");
++        desc.setSchemaType("ID");
 +        desc.setHandler(handler);
 +        desc.setRequired(true);
 +        desc.setMultivalued(false);
@@ -12090,78 +11685,29 @@ Last-Update: 2010-06-27
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _type
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                Container target = (Container) object;
-+                return target.getType();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    Container target = (Container) object;
-+                    target.setType( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _type
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
++            org.exolab.castor.xml.validators.IdValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.IdValidator();
 +            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _required
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_required", "required", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _extends
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Object.class, "_extends", "extends", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setReference(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
-+                if (!target.hasRequired()) { return null; }
-+                return (target.getRequired() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                ClassMapping target = (ClassMapping) object;
++                return target.getExtends();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteRequired();
-+                        return;
-+                    }
-+                    target.setRequired( ((java.lang.Boolean) value).booleanValue());
++                    ClassMapping target = (ClassMapping) object;
++                    target.setExtends( (java.lang.Object) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12169,45 +11715,40 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.Object();
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("IDREF");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _required
++        //-- validation code for: _extends
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.IdRefValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.IdRefValidator();
 +            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _direct
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_direct", "direct", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _depends
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Object.class, "_depends", "depends", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setReference(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
-+                if (!target.hasDirect()) { return null; }
-+                return (target.getDirect() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                ClassMapping target = (ClassMapping) object;
++                return target.getDepends();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteDirect();
-+                        return;
-+                    }
-+                    target.setDirect( ((java.lang.Boolean) value).booleanValue());
++                    ClassMapping target = (ClassMapping) object;
++                    target.setDepends( (java.lang.Object) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12215,81 +11756,47 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.Object();
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("IDREF");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _direct
++        //-- validation code for: _depends
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.IdRefValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.IdRefValidator();
 +            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _getMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_getMethod", "get-method", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _identity
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_identity", "identity", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
-+                return target.getGetMethod();
++                ClassMapping target = (ClassMapping) object;
++                return target.getIdentity();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
-+                    target.setGetMethod( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.addIdentity( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _getMethod
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _setMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_setMethod", "set-method", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                Container target = (Container) object;
-+                return target.getSetMethod();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
-+                    Container target = (Container) object;
-+                    target.setSetMethod( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.removeAllIdentity();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12300,38 +11807,36 @@ Last-Update: 2010-06-27
 +                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("NMTOKEN");
++        handler = new org.exolab.castor.xml.handlers.CollectionFieldHandler(handler, new org.exolab.castor.xml.validators.NameValidator(org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN));
++        desc.setSchemaType("list");
++        desc.setComponentType("NMTOKEN");
 +        desc.setHandler(handler);
-+        desc.setMultivalued(false);
++        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _setMethod
++        //-- validation code for: _identity
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _createMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_createMethod", "create-method", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setValidator(fieldValidator);
++        //-- _access
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.ClassMappingAccessType.class, "_access", "access", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
-+                return target.getCreateMethod();
++                ClassMapping target = (ClassMapping) object;
++                return target.getAccess();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
-+                    target.setCreateMethod( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setAccess( (org.exolab.castor.mapping.xml.types.ClassMappingAccessType) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12339,44 +11844,39 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("NMTOKEN");
++        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.ClassMappingAccessType.class, handler);
++        desc.setImmutable(true);
++        desc.setSchemaType("ClassMappingAccessType");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _createMethod
++        //-- validation code for: _access
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
-+        //-- _description
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_description", "description", org.exolab.castor.xml.NodeType.Element);
++        //-- _keyGenerator
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_keyGenerator", "key-generator", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
-+                return target.getDescription();
++                ClassMapping target = (ClassMapping) object;
++                return target.getKeyGenerator();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
-+                    target.setDescription( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setKeyGenerator( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12391,9 +11891,8 @@ Last-Update: 2010-06-27
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _description
++        //-- validation code for: _keyGenerator
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
@@ -12402,23 +11901,29 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _fieldMapping
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.FieldMapping.class, "_fieldMapping", "field", org.exolab.castor.xml.NodeType.Element);
++        //-- _autoComplete
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_autoComplete", "auto-complete", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                Container target = (Container) object;
-+                return target.getFieldMapping();
++                ClassMapping target = (ClassMapping) object;
++                if (!target.hasAutoComplete()) { return null; }
++                return (target.getAutoComplete() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    Container target = (Container) object;
-+                    target.setFieldMapping( (org.exolab.castor.mapping.xml.FieldMapping) value);
++                    ClassMapping target = (ClassMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteAutoComplete();
++                        return;
++                    }
++                    target.setAutoComplete( ((java.lang.Boolean) value).booleanValue());
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12429,211 +11934,83 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.FieldMapping");
++        desc.setSchemaType("boolean");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _fieldMapping
++        //-- validation code for: _autoComplete
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+    }
-+
-+
-+      //-----------/
-+     //- Methods -/
-+    //-----------/
-+
-+    /**
-+     * Method getAccessMode.
-+     * 
-+     * @return the access mode specified for this class.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.AccessMode getAccessMode(
-+    ) {
-+        return null;
-+    }
-+
-+    /**
-+     * Method getIdentity.
-+     * 
-+     * @return the identity field, null if this class has no
-+     * identity.
-+     */
-+    @Override()
-+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
-+    ) {
-+        return _identity;
-+    }
-+
-+    /**
-+     * Method getJavaClass.
-+     * 
-+     * @return the Java class represented by this descriptor.
-+     */
-+    @Override()
-+    public java.lang.Class getJavaClass(
-+    ) {
-+        return org.exolab.castor.mapping.xml.Container.class;
-+    }
-+
-+    /**
-+     * Method getNameSpacePrefix.
-+     * 
-+     * @return the namespace prefix to use when marshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpacePrefix(
-+    ) {
-+        return _nsPrefix;
-+    }
-+
-+    /**
-+     * Method getNameSpaceURI.
-+     * 
-+     * @return the namespace URI used when marshaling and
-+     * unmarshaling as XML.
-+     */
-+    @Override()
-+    public java.lang.String getNameSpaceURI(
-+    ) {
-+        return _nsURI;
-+    }
-+
-+    /**
-+     * Method getValidator.
-+     * 
-+     * @return a specific validator for the class described by this
-+     * ClassDescriptor.
-+     */
-+    @Override()
-+    public org.exolab.castor.xml.TypeValidator getValidator(
-+    ) {
-+        return this;
-+    }
-+
-+    /**
-+     * Method getXMLName.
-+     * 
-+     * @return the XML Name for the Class being described.
-+     */
-+    @Override()
-+    public java.lang.String getXMLName(
-+    ) {
-+        return _xmlName;
-+    }
-+
-+    /**
-+     * Method isElementDefinition.
-+     * 
-+     * @return true if XML schema definition of this Class is that
-+     * of a global
-+     * element or element with anonymous type definition.
-+     */
-+    public boolean isElementDefinition(
-+    ) {
-+        return _elementDefinition;
-+    }
-+
-+}
---- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/NamedNativeQueryDescriptor.java
-@@ -0,0 +1,394 @@
-+/*
-+ * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
-+ * Schema.
-+ * $Id$
-+ */
-+
-+package org.exolab.castor.mapping.xml.descriptors;
-+
-+  //---------------------------------/
-+ //- Imported classes and packages -/
-+//---------------------------------/
-+
-+import org.exolab.castor.mapping.xml.NamedNativeQuery;
-+
-+/**
-+ * Class NamedNativeQueryDescriptor.
-+ * 
-+ * @version $Revision$ $Date$
-+ */
-+public class NamedNativeQueryDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
-+
-+
-+      //--------------------------/
-+     //- Class/Member Variables -/
-+    //--------------------------/
-+
-+    /**
-+     * Field _elementDefinition.
-+     */
-+    private boolean _elementDefinition;
-+
-+    /**
-+     * Field _nsPrefix.
-+     */
-+    private java.lang.String _nsPrefix;
-+
-+    /**
-+     * Field _nsURI.
-+     */
-+    private java.lang.String _nsURI;
-+
-+    /**
-+     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public NamedNativeQueryDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "named-native-query";
-+        _elementDefinition = true;
-+
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
++        //-- _verifyConstructable
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_verifyConstructable", "verify-constructable", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                ClassMapping target = (ClassMapping) object;
++                if (!target.hasVerifyConstructable()) { return null; }
++                return (target.getVerifyConstructable() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    ClassMapping target = (ClassMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteVerifyConstructable();
++                        return;
++                    }
++                    target.setVerifyConstructable( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        //-- validation code for: _verifyConstructable
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _version
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_version", "version", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedNativeQuery target = (NamedNativeQuery) object;
-+                return target.getName();
++                ClassMapping target = (ClassMapping) object;
++                return target.getVersion();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedNativeQuery target = (NamedNativeQuery) object;
-+                    target.setName( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setVersion( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12646,13 +12023,11 @@ Last-Update: 2010-06-27
 +        };
 +        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _version
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
 +            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
@@ -12660,24 +12035,26 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _resultClass
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_resultClass", "result-class", org.exolab.castor.xml.NodeType.Attribute);
++        //-- initialize element descriptors
++
++        //-- _description
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_description", "description", org.exolab.castor.xml.NodeType.Element);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedNativeQuery target = (NamedNativeQuery) object;
-+                return target.getResultClass();
++                ClassMapping target = (ClassMapping) object;
++                return target.getDescription();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedNativeQuery target = (NamedNativeQuery) object;
-+                    target.setResultClass( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setDescription( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12692,8 +12069,9 @@ Last-Update: 2010-06-27
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _resultClass
++        //-- validation code for: _description
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
@@ -12702,24 +12080,23 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _resultSetMapping
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_resultSetMapping", "result-set-mapping", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
++        //-- _cacheTypeMapping
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.CacheTypeMapping.class, "_cacheTypeMapping", "cache-type", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedNativeQuery target = (NamedNativeQuery) object;
-+                return target.getResultSetMapping();
++                ClassMapping target = (ClassMapping) object;
++                return target.getCacheTypeMapping();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedNativeQuery target = (NamedNativeQuery) object;
-+                    target.setResultSetMapping( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setCacheTypeMapping( (org.exolab.castor.mapping.xml.CacheTypeMapping) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12730,40 +12107,35 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("org.exolab.castor.mapping.xml.CacheTypeMapping");
 +        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _resultSetMapping
++        //-- validation code for: _cacheTypeMapping
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
-+        //-- _query
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_query", "query", org.exolab.castor.xml.NodeType.Element);
-+        desc.setImmutable(true);
++        //-- _mapTo
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.MapTo.class, "_mapTo", "map-to", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedNativeQuery target = (NamedNativeQuery) object;
-+                return target.getQuery();
++                ClassMapping target = (ClassMapping) object;
++                return target.getMapTo();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedNativeQuery target = (NamedNativeQuery) object;
-+                    target.setQuery( (java.lang.String) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.setMapTo( (org.exolab.castor.mapping.xml.MapTo) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12774,48 +12146,43 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("org.exolab.castor.mapping.xml.MapTo");
 +        desc.setHandler(handler);
-+        desc.setRequired(true);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _query
++        //-- validation code for: _mapTo
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _queryHintList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.QueryHint.class, "_queryHintList", "query-hint", org.exolab.castor.xml.NodeType.Element);
++        //-- _namedQueryList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.NamedQuery.class, "_namedQueryList", "named-query", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedNativeQuery target = (NamedNativeQuery) object;
-+                return target.getQueryHint();
++                ClassMapping target = (ClassMapping) object;
++                return target.getNamedQuery();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedNativeQuery target = (NamedNativeQuery) object;
-+                    target.addQueryHint( (org.exolab.castor.mapping.xml.QueryHint) value);
++                    ClassMapping target = (ClassMapping) object;
++                    target.addNamedQuery( (org.exolab.castor.mapping.xml.NamedQuery) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
-+                    NamedNativeQuery target = (NamedNativeQuery) object;
-+                    target.removeAllQueryHint();
++                    ClassMapping target = (ClassMapping) object;
++                    target.removeAllNamedQuery();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -12827,19 +12194,109 @@ Last-Update: 2010-06-27
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.QueryHint");
++        desc.setComponentType("org.exolab.castor.mapping.xml.NamedQuery");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _queryHintList
++        //-- validation code for: _namedQueryList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _namedNativeQueryList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.NamedNativeQuery.class, "_namedNativeQueryList", "named-native-query", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                ClassMapping target = (ClassMapping) object;
++                return target.getNamedNativeQuery();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    ClassMapping target = (ClassMapping) object;
++                    target.addNamedNativeQuery( (org.exolab.castor.mapping.xml.NamedNativeQuery) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    ClassMapping target = (ClassMapping) object;
++                    target.removeAllNamedNativeQuery();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.exolab.castor.mapping.xml.NamedNativeQuery");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _namedNativeQueryList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
 +        }
 +        desc.setValidator(fieldValidator);
++        //-- _classChoice
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.ClassChoice.class, "_classChoice", "-error-if-this-is-used-", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                ClassMapping target = (ClassMapping) object;
++                return target.getClassChoice();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    ClassMapping target = (ClassMapping) object;
++                    target.setClassChoice( (org.exolab.castor.mapping.xml.ClassChoice) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new org.exolab.castor.mapping.xml.ClassChoice();
++            }
++        };
++        desc.setSchemaType("org.exolab.castor.mapping.xml.ClassChoice");
++        desc.setHandler(handler);
++        desc.setContainer(true);
++        desc.setClassDescriptor(new org.exolab.castor.mapping.xml.descriptors.ClassChoiceDescriptor());
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _classChoice
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -12878,7 +12335,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.NamedNativeQuery.class;
++        return org.exolab.castor.mapping.xml.ClassMapping.class;
 +    }
 +
 +    /**
@@ -12941,11 +12398,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/SqlDescriptor.java
-@@ -0,0 +1,480 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/SqlDescriptor.java
+@@ -0,0 +1,522 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -13163,10 +12620,51 @@ Last-Update: 2010-06-27
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    Sql target = (Sql) object;
++                    target.removeAllManyKey();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        handler = new org.exolab.castor.xml.handlers.CollectionFieldHandler(handler, new org.exolab.castor.xml.validators.NameValidator(org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN));
++        desc.setSchemaType("list");
++        desc.setComponentType("NMTOKEN");
++        desc.setHandler(handler);
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _manyKey
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _cascading
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_cascading", "cascading", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                Sql target = (Sql) object;
++                return target.getCascading();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
 +                try {
 +                    Sql target = (Sql) object;
-+                    target.removeAllManyKey();
++                    target.setCascading( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -13174,20 +12672,21 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
++                return null;
 +            }
 +        };
-+        handler = new org.exolab.castor.xml.handlers.CollectionFieldHandler(handler, new org.exolab.castor.xml.validators.NameValidator(org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN));
-+        desc.setSchemaType("list");
-+        desc.setComponentType("NMTOKEN");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setMultivalued(true);
++        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _manyKey
++        //-- validation code for: _cascading
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
 +        //-- _readOnly
@@ -13424,11 +12923,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/KeyGeneratorDefDescriptor.java
-@@ -0,0 +1,306 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/FieldHandlerDefDescriptor.java
+@@ -0,0 +1,308 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -13439,14 +12938,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.KeyGeneratorDef;
++import org.exolab.castor.mapping.xml.FieldHandlerDef;
 +
 +/**
-+ * Class KeyGeneratorDefDescriptor.
++ * Class FieldHandlerDefDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class KeyGeneratorDefDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class FieldHandlerDefDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -13483,10 +12982,10 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public KeyGeneratorDefDescriptor() {
++    public FieldHandlerDefDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "key-generator";
++        _xmlName = "field-handler";
 +        _elementDefinition = true;
 +
 +        //-- set grouping compositor
@@ -13504,7 +13003,7 @@ Last-Update: 2010-06-27
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                KeyGeneratorDef target = (KeyGeneratorDef) object;
++                FieldHandlerDef target = (FieldHandlerDef) object;
 +                return target.getName();
 +            }
 +            @Override
@@ -13512,7 +13011,7 @@ Last-Update: 2010-06-27
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    FieldHandlerDef target = (FieldHandlerDef) object;
 +                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -13539,24 +13038,24 @@ Last-Update: 2010-06-27
 +            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _alias
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_alias", "alias", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _clazz
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_clazz", "class", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                KeyGeneratorDef target = (KeyGeneratorDef) object;
-+                return target.getAlias();
++                FieldHandlerDef target = (FieldHandlerDef) object;
++                return target.getClazz();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    KeyGeneratorDef target = (KeyGeneratorDef) object;
-+                    target.setAlias( (java.lang.String) value);
++                    FieldHandlerDef target = (FieldHandlerDef) object;
++                    target.setClazz( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -13569,11 +13068,13 @@ Last-Update: 2010-06-27
 +        };
 +        desc.setSchemaType("string");
 +        desc.setHandler(handler);
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _alias
++        //-- validation code for: _clazz
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
 +            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
@@ -13590,7 +13091,7 @@ Last-Update: 2010-06-27
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                KeyGeneratorDef target = (KeyGeneratorDef) object;
++                FieldHandlerDef target = (FieldHandlerDef) object;
 +                return target.getParam();
 +            }
 +            @Override
@@ -13598,7 +13099,7 @@ Last-Update: 2010-06-27
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    FieldHandlerDef target = (FieldHandlerDef) object;
 +                    target.addParam( (org.exolab.castor.mapping.xml.Param) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -13606,7 +13107,7 @@ Last-Update: 2010-06-27
 +            }
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
-+                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    FieldHandlerDef target = (FieldHandlerDef) object;
 +                    target.removeAllParam();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
@@ -13670,7 +13171,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.KeyGeneratorDef.class;
++        return org.exolab.castor.mapping.xml.FieldHandlerDef.class;
 +    }
 +
 +    /**
@@ -13733,11 +13234,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ClassMappingDescriptor.java
-@@ -0,0 +1,820 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/CacheTypeMappingDescriptor.java
+@@ -0,0 +1,355 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -13748,14 +13249,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.ClassMapping;
++import org.exolab.castor.mapping.xml.CacheTypeMapping;
 +
 +/**
-+ * Class ClassMappingDescriptor.
++ * Class CacheTypeMappingDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class ClassMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class CacheTypeMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -13792,10 +13293,10 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public ClassMappingDescriptor() {
++    public CacheTypeMappingDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "class";
++        _xmlName = "cache-type";
 +        _elementDefinition = true;
 +
 +        //-- set grouping compositor
@@ -13805,24 +13306,24 @@ Last-Update: 2010-06-27
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
-+        this._identity = desc;
++        //-- _type
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getName();
++                CacheTypeMapping target = (CacheTypeMapping) object;
++                return target.getType();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setName( (java.lang.String) value);
++                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    target.setType( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -13830,42 +13331,46 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("ID");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _type
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.IdValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.IdValidator();
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _extends
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Object.class, "_extends", "extends", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setReference(true);
++        //-- _debug
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_debug", "debug", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getExtends();
++                CacheTypeMapping target = (CacheTypeMapping) object;
++                if (!target.hasDebug()) { return null; }
++                return (target.getDebug() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setExtends( (java.lang.Object) value);
++                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteDebug();
++                        return;
++                    }
++                    target.setDebug( ((java.lang.Boolean) value).booleanValue());
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -13873,40 +13378,45 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.Object();
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("IDREF");
++        desc.setSchemaType("boolean");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _extends
++        //-- validation code for: _debug
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.IdRefValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.IdRefValidator();
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
 +            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _depends
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Object.class, "_depends", "depends", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setReference(true);
++        //-- _capacity
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Long.TYPE, "_capacity", "capacity", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getDepends();
++                CacheTypeMapping target = (CacheTypeMapping) object;
++                if (!target.hasCapacity()) { return null; }
++                return new java.lang.Long(target.getCapacity());
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setDepends( (java.lang.Object) value);
++                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteCapacity();
++                        return;
++                    }
++                    target.setCapacity( ((java.lang.Long) value).longValue());
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -13914,127 +13424,49 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.Object();
++                return null;
 +            }
 +        };
-+        desc.setSchemaType("IDREF");
++        desc.setSchemaType("integer");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _depends
++        //-- validation code for: _capacity
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.IdRefValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.IdRefValidator();
++            org.exolab.castor.xml.validators.LongValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.LongValidator();
 +            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _identity
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_identity", "identity", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getIdentity();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.addIdentity( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.removeAllIdentity();
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        handler = new org.exolab.castor.xml.handlers.CollectionFieldHandler(handler, new org.exolab.castor.xml.validators.NameValidator(org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN));
-+        desc.setSchemaType("list");
-+        desc.setComponentType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(true);
-+        addFieldDescriptor(desc);
++        //-- initialize element descriptors
 +
-+        //-- validation code for: _identity
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _access
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.ClassMappingAccessType.class, "_access", "access", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _paramList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getAccess();
++                CacheTypeMapping target = (CacheTypeMapping) object;
++                return target.getParam();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setAccess( (org.exolab.castor.mapping.xml.types.ClassMappingAccessType) value);
++                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    target.addParam( (org.exolab.castor.mapping.xml.Param) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.ClassMappingAccessType.class, handler);
-+        desc.setImmutable(true);
-+        desc.setSchemaType("ClassMappingAccessType");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _access
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _keyGenerator
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_keyGenerator", "key-generator", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getKeyGenerator();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setKeyGenerator( (java.lang.String) value);
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    CacheTypeMapping target = (CacheTypeMapping) object;
++                    target.removeAllParam();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14045,43 +13477,207 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("list");
++        desc.setComponentType("org.exolab.castor.mapping.xml.Param");
 +        desc.setHandler(handler);
-+        desc.setMultivalued(false);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+        //-- validation code for: _keyGenerator
++        //-- validation code for: _paramList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _autoComplete
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_autoComplete", "auto-complete", org.exolab.castor.xml.NodeType.Attribute);
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
++     */
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
++
++    /**
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
++     */
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
++    }
++
++    /**
++     * Method getJavaClass.
++     * 
++     * @return the Java class represented by this descriptor.
++     */
++    @Override()
++    public java.lang.Class getJavaClass(
++    ) {
++        return org.exolab.castor.mapping.xml.CacheTypeMapping.class;
++    }
++
++    /**
++     * Method getNameSpacePrefix.
++     * 
++     * @return the namespace prefix to use when marshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpacePrefix(
++    ) {
++        return _nsPrefix;
++    }
++
++    /**
++     * Method getNameSpaceURI.
++     * 
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
++    }
++
++    /**
++     * Method getValidator.
++     * 
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
++     */
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
++    }
++
++    /**
++     * Method getXMLName.
++     * 
++     * @return the XML Name for the Class being described.
++     */
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
++    }
++
++    /**
++     * Method isElementDefinition.
++     * 
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
++     */
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/MapToDescriptor.java
+@@ -0,0 +1,467 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.MapTo;
++
++/**
++ * Class MapToDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class MapToDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
++
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
++
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
++
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
++
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public MapToDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "map-to";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _table
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_table", "table", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                if (!target.hasAutoComplete()) { return null; }
-+                return (target.getAutoComplete() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                MapTo target = (MapTo) object;
++                return target.getTable();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteAutoComplete();
-+                        return;
-+                    }
-+                    target.setAutoComplete( ((java.lang.Boolean) value).booleanValue());
++                    MapTo target = (MapTo) object;
++                    target.setTable( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14089,45 +13685,42 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("NMTOKEN");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _autoComplete
++        //-- validation code for: _table
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _verifyConstructable
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_verifyConstructable", "verify-constructable", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _xml
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_xml", "xml", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                if (!target.hasVerifyConstructable()) { return null; }
-+                return (target.getVerifyConstructable() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                MapTo target = (MapTo) object;
++                return target.getXml();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteVerifyConstructable();
-+                        return;
-+                    }
-+                    target.setVerifyConstructable( ((java.lang.Boolean) value).booleanValue());
++                    MapTo target = (MapTo) object;
++                    target.setXml( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14138,37 +13731,38 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _verifyConstructable
++        //-- validation code for: _xml
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _version
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_version", "version", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _nsUri
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_nsUri", "ns-uri", org.exolab.castor.xml.NodeType.Attribute);
 +        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getVersion();
++                MapTo target = (MapTo) object;
++                return target.getNsUri();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setVersion( (java.lang.String) value);
++                    MapTo target = (MapTo) object;
++                    target.setNsUri( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14184,7 +13778,7 @@ Last-Update: 2010-06-27
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _version
++        //-- validation code for: _nsUri
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
 +            org.exolab.castor.xml.validators.StringValidator typeValidator;
@@ -14193,26 +13787,23 @@ Last-Update: 2010-06-27
 +            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
-+        //-- _description
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_description", "description", org.exolab.castor.xml.NodeType.Element);
-+        desc.setImmutable(true);
++        //-- _nsPrefix
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_nsPrefix", "ns-prefix", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getDescription();
++                MapTo target = (MapTo) object;
++                return target.getNsPrefix();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setDescription( (java.lang.String) value);
++                    MapTo target = (MapTo) object;
++                    target.setNsPrefix( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14220,41 +13811,47 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("NMTOKEN");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _description
++        //-- validation code for: _nsPrefix
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
 +            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
++            typeValidator.addPattern("[\\w-._:]+");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _cacheTypeMapping
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.CacheTypeMapping.class, "_cacheTypeMapping", "cache-type", org.exolab.castor.xml.NodeType.Element);
++        //-- _elementDefinition
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_elementDefinition", "element-definition", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getCacheTypeMapping();
++                MapTo target = (MapTo) object;
++                if (!target.hasElementDefinition()) { return null; }
++                return (target.getElementDefinition() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setCacheTypeMapping( (org.exolab.castor.mapping.xml.CacheTypeMapping) value);
++                    MapTo target = (MapTo) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteElementDefinition();
++                        return;
++                    }
++                    target.setElementDefinition( ((java.lang.Boolean) value).booleanValue());
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14265,35 +13862,37 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.CacheTypeMapping");
++        desc.setSchemaType("boolean");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _cacheTypeMapping
++        //-- validation code for: _elementDefinition
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _mapTo
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.MapTo.class, "_mapTo", "map-to", org.exolab.castor.xml.NodeType.Element);
++        //-- _ldapDn
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_ldapDn", "ldap-dn", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getMapTo();
++                MapTo target = (MapTo) object;
++                return target.getLdapDn();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setMapTo( (org.exolab.castor.mapping.xml.MapTo) value);
++                    MapTo target = (MapTo) object;
++                    target.setLdapDn( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14304,43 +13903,38 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.MapTo");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _mapTo
++        //-- validation code for: _ldapDn
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _namedQueryList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.NamedQuery.class, "_namedQueryList", "named-query", org.exolab.castor.xml.NodeType.Element);
++        //-- _ldapOc
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_ldapOc", "ldap-oc", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getNamedQuery();
++                MapTo target = (MapTo) object;
++                return target.getLdapOc();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.addNamedQuery( (org.exolab.castor.mapping.xml.NamedQuery) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.removeAllNamedQuery();
++                    MapTo target = (MapTo) object;
++                    target.setLdapOc( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14351,110 +13945,187 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.NamedQuery");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(true);
++        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _namedQueryList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _namedNativeQueryList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.NamedNativeQuery.class, "_namedNativeQueryList", "named-native-query", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getNamedNativeQuery();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.addNamedNativeQuery( (org.exolab.castor.mapping.xml.NamedNativeQuery) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.removeAllNamedNativeQuery();
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.NamedNativeQuery");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(true);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++        //-- validation code for: _ldapOc
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
++
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
++     */
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
++
++    /**
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
++     */
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
++    }
++
++    /**
++     * Method getJavaClass.
++     * 
++     * @return the Java class represented by this descriptor.
++     */
++    @Override()
++    public java.lang.Class getJavaClass(
++    ) {
++        return org.exolab.castor.mapping.xml.MapTo.class;
++    }
++
++    /**
++     * Method getNameSpacePrefix.
++     * 
++     * @return the namespace prefix to use when marshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpacePrefix(
++    ) {
++        return _nsPrefix;
++    }
++
++    /**
++     * Method getNameSpaceURI.
++     * 
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
++    }
++
++    /**
++     * Method getValidator.
++     * 
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
++     */
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
++    }
++
++    /**
++     * Method getXMLName.
++     * 
++     * @return the XML Name for the Class being described.
++     */
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
++    }
++
++    /**
++     * Method isElementDefinition.
++     * 
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
++     */
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/PropertyDescriptor.java
+@@ -0,0 +1,165 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.Property;
++
++/**
++ * Class PropertyDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class PropertyDescriptor extends org.exolab.castor.mapping.xml.descriptors.PropertyTypeDescriptor {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
++
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
++
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
 +
-+        //-- validation code for: _namedNativeQueryList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _classChoice
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.ClassChoice.class, "_classChoice", "-error-if-this-is-used-", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                ClassMapping target = (ClassMapping) object;
-+                return target.getClassChoice();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    ClassMapping target = (ClassMapping) object;
-+                    target.setClassChoice( (org.exolab.castor.mapping.xml.ClassChoice) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new org.exolab.castor.mapping.xml.ClassChoice();
-+            }
-+        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.ClassChoice");
-+        desc.setHandler(handler);
-+        desc.setContainer(true);
-+        desc.setClassDescriptor(new org.exolab.castor.mapping.xml.descriptors.ClassChoiceDescriptor());
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
 +
-+        //-- validation code for: _classChoice
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public PropertyDescriptor() {
++        super();
++        setExtendsWithoutFlatten(new org.exolab.castor.mapping.xml.descriptors.PropertyTypeDescriptor());
++        _xmlName = "property";
++        _elementDefinition = true;
 +    }
 +
 +
@@ -14482,6 +14153,9 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
 +    ) {
++        if (_identity == null) {
++            return super.getIdentity();
++        }
 +        return _identity;
 +    }
 +
@@ -14493,7 +14167,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.ClassMapping.class;
++        return org.exolab.castor.mapping.xml.Property.class;
 +    }
 +
 +    /**
@@ -14556,11 +14230,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ClassChoiceDescriptor.java
-@@ -0,0 +1,269 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/KeyGeneratorDefDescriptor.java
+@@ -0,0 +1,306 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -14571,14 +14245,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.ClassChoice;
++import org.exolab.castor.mapping.xml.KeyGeneratorDef;
 +
 +/**
-+ * Class ClassChoiceDescriptor.
++ * Class KeyGeneratorDefDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class ClassChoiceDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class KeyGeneratorDefDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -14615,45 +14289,80 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public ClassChoiceDescriptor() {
++    public KeyGeneratorDefDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _elementDefinition = false;
++        _xmlName = "key-generator";
++        _elementDefinition = true;
 +
 +        //-- set grouping compositor
-+        setCompositorAsChoice();
++        setCompositorAsSequence();
 +        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
 +        org.exolab.castor.mapping.FieldHandler             handler        = null;
 +        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
 +        //-- initialize attribute descriptors
 +
-+        //-- initialize element descriptors
-+
-+        //-- _fieldMappingList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.FieldMapping.class, "_fieldMappingList", "field", org.exolab.castor.xml.NodeType.Element);
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        this._identity = desc;
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassChoice target = (ClassChoice) object;
-+                return target.getFieldMapping();
++                KeyGeneratorDef target = (KeyGeneratorDef) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassChoice target = (ClassChoice) object;
-+                    target.addFieldMapping( (org.exolab.castor.mapping.xml.FieldMapping) value);
++                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        desc.setSchemaType("ID");
++        desc.setHandler(handler);
++        desc.setRequired(true);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
++        { //-- local scope
++            org.exolab.castor.xml.validators.IdValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.IdValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _alias
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_alias", "alias", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                KeyGeneratorDef target = (KeyGeneratorDef) object;
++                return target.getAlias();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
 +                try {
-+                    ClassChoice target = (ClassChoice) object;
-+                    target.removeAllFieldMapping();
++                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    target.setAlias( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14664,45 +14373,47 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.FieldMapping");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(true);
++        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _fieldMappingList
++        //-- validation code for: _alias
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _containerList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Container.class, "_containerList", "container", org.exolab.castor.xml.NodeType.Element);
++        //-- initialize element descriptors
++
++        //-- _paramList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                ClassChoice target = (ClassChoice) object;
-+                return target.getContainer();
++                KeyGeneratorDef target = (KeyGeneratorDef) object;
++                return target.getParam();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    ClassChoice target = (ClassChoice) object;
-+                    target.addContainer( (org.exolab.castor.mapping.xml.Container) value);
++                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    target.addParam( (org.exolab.castor.mapping.xml.Param) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
-+                    ClassChoice target = (ClassChoice) object;
-+                    target.removeAllContainer();
++                    KeyGeneratorDef target = (KeyGeneratorDef) object;
++                    target.removeAllParam();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -14714,14 +14425,14 @@ Last-Update: 2010-06-27
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.Container");
++        desc.setComponentType("org.exolab.castor.mapping.xml.Param");
 +        desc.setHandler(handler);
 +        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _containerList
++        //-- validation code for: _paramList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
@@ -14765,7 +14476,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.ClassChoice.class;
++        return org.exolab.castor.mapping.xml.KeyGeneratorDef.class;
 +    }
 +
 +    /**
@@ -14828,11 +14539,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/PropertyDescriptor.java
-@@ -0,0 +1,165 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ClassChoiceDescriptor.java
+@@ -0,0 +1,269 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -14843,14 +14554,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.Property;
++import org.exolab.castor.mapping.xml.ClassChoice;
 +
 +/**
-+ * Class PropertyDescriptor.
++ * Class ClassChoiceDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class PropertyDescriptor extends org.exolab.castor.mapping.xml.descriptors.PropertyTypeDescriptor {
++public class ClassChoiceDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -14883,15 +14594,122 @@ Last-Update: 2010-06-27
 +    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
 +
 +
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public ClassChoiceDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _elementDefinition = false;
++
++        //-- set grouping compositor
++        setCompositorAsChoice();
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- initialize element descriptors
++
++        //-- _fieldMappingList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.FieldMapping.class, "_fieldMappingList", "field", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                ClassChoice target = (ClassChoice) object;
++                return target.getFieldMapping();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    ClassChoice target = (ClassChoice) object;
++                    target.addFieldMapping( (org.exolab.castor.mapping.xml.FieldMapping) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    ClassChoice target = (ClassChoice) object;
++                    target.removeAllFieldMapping();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.exolab.castor.mapping.xml.FieldMapping");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
 +
-+    public PropertyDescriptor() {
-+        super();
-+        setExtendsWithoutFlatten(new org.exolab.castor.mapping.xml.descriptors.PropertyTypeDescriptor());
-+        _xmlName = "property";
-+        _elementDefinition = true;
++        //-- validation code for: _fieldMappingList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _containerList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Container.class, "_containerList", "container", org.exolab.castor.xml.NodeType.Element);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                ClassChoice target = (ClassChoice) object;
++                return target.getContainer();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    ClassChoice target = (ClassChoice) object;
++                    target.addContainer( (org.exolab.castor.mapping.xml.Container) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
++                try {
++                    ClassChoice target = (ClassChoice) object;
++                    target.removeAllContainer();
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("list");
++        desc.setComponentType("org.exolab.castor.mapping.xml.Container");
++        desc.setHandler(handler);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
++        desc.setMultivalued(true);
++        addFieldDescriptor(desc);
++        addSequenceElement(desc);
++
++        //-- validation code for: _containerList
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(0);
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
 +    }
 +
 +
@@ -14919,9 +14737,6 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
 +    ) {
-+        if (_identity == null) {
-+            return super.getIdentity();
-+        }
 +        return _identity;
 +    }
 +
@@ -14933,7 +14748,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.Property.class;
++        return org.exolab.castor.mapping.xml.ClassChoice.class;
 +    }
 +
 +    /**
@@ -14996,11 +14811,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/NamedQueryDescriptor.java
-@@ -0,0 +1,310 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/BindXmlDescriptor.java
+@@ -0,0 +1,639 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -15011,14 +14826,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.NamedQuery;
++import org.exolab.castor.mapping.xml.BindXml;
 +
 +/**
-+ * Class NamedQueryDescriptor.
++ * Class BindXmlDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class NamedQueryDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class BindXmlDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -15045,47 +14860,386 @@ Last-Update: 2010-06-27
 +     */
 +    private java.lang.String _xmlName;
 +
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public BindXmlDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "bind-xml";
++        _elementDefinition = true;
++
++        //-- set grouping compositor
++        setCompositorAsSequence();
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setSchemaType("QName");
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getName();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setName( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        desc.setSchemaType("QName");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_QNAME);
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _type
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getType();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setType( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        desc.setSchemaType("NMTOKEN");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _type
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _autoNaming
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType.class, "_autoNaming", "auto-naming", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getAutoNaming();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setAutoNaming( (org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType.class, handler);
++        desc.setImmutable(true);
++        desc.setSchemaType("BindXmlAutoNamingType");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
++
++        //-- validation code for: _autoNaming
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _location
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_location", "location", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getLocation();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setLocation( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
++        //-- validation code for: _location
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _matches
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_matches", "matches", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getMatches();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setMatches( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("string");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
++        //-- validation code for: _matches
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _reference
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_reference", "reference", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                if (!target.hasReference()) { return null; }
++                return (target.getReference() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteReference();
++                        return;
++                    }
++                    target.setReference( ((java.lang.Boolean) value).booleanValue());
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        desc.setSchemaType("boolean");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+    public NamedQueryDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "named-query";
-+        _elementDefinition = true;
++        //-- validation code for: _reference
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            fieldValidator.setValidator(typeValidator);
++        }
++        desc.setValidator(fieldValidator);
++        //-- _node
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.BindXmlNodeType.class, "_node", "node", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getNode();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setNode( (org.exolab.castor.mapping.xml.types.BindXmlNodeType) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return null;
++            }
++        };
++        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.BindXmlNodeType.class, handler);
++        desc.setImmutable(true);
++        desc.setSchemaType("BindXmlNodeType");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
++        //-- validation code for: _node
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++        }
++        desc.setValidator(fieldValidator);
++        //-- _QNamePrefix
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_QNamePrefix", "QName-prefix", org.exolab.castor.xml.NodeType.Attribute);
++        handler = new org.exolab.castor.xml.XMLFieldHandler() {
++            @Override
++            public java.lang.Object getValue( java.lang.Object object ) 
++                throws IllegalStateException
++            {
++                BindXml target = (BindXml) object;
++                return target.getQNamePrefix();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    BindXml target = (BindXml) object;
++                    target.setQNamePrefix( (java.lang.String) value);
++                } catch (java.lang.Exception ex) {
++                    throw new IllegalStateException(ex.toString());
++                }
++            }
++            @Override
++            @SuppressWarnings("unused")
++            public java.lang.Object newInstance(java.lang.Object parent) {
++                return new java.lang.String();
++            }
++        };
++        desc.setSchemaType("NMTOKEN");
++        desc.setHandler(handler);
++        desc.setMultivalued(false);
++        addFieldDescriptor(desc);
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
++        //-- validation code for: _QNamePrefix
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
++        }
++        desc.setValidator(fieldValidator);
++        //-- _transient
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_transient", "transient", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedQuery target = (NamedQuery) object;
-+                return target.getName();
++                BindXml target = (BindXml) object;
++                if (!target.hasTransient()) { return null; }
++                return (target.getTransient() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedQuery target = (NamedQuery) object;
-+                    target.setName( (java.lang.String) value);
++                    BindXml target = (BindXml) object;
++                    // if null, use delete method for optional primitives 
++                    if (value == null) {
++                        target.deleteTransient();
++                        return;
++                    }
++                    target.setTransient( ((java.lang.Boolean) value).booleanValue());
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -15096,42 +15250,38 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("boolean");
 +        desc.setHandler(handler);
-+        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _name
++        //-- validation code for: _transient
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
++            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
 +            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
 +        //-- initialize element descriptors
 +
-+        //-- _query
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_query", "query", org.exolab.castor.xml.NodeType.Element);
-+        desc.setImmutable(true);
++        //-- _classMapping
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.ClassMapping.class, "_classMapping", "class", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedQuery target = (NamedQuery) object;
-+                return target.getQuery();
++                BindXml target = (BindXml) object;
++                return target.getClassMapping();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedQuery target = (NamedQuery) object;
-+                    target.setQuery( (java.lang.String) value);
++                    BindXml target = (BindXml) object;
++                    target.setClassMapping( (org.exolab.castor.mapping.xml.ClassMapping) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -15142,48 +15292,43 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("string");
++        desc.setSchemaType("org.exolab.castor.mapping.xml.ClassMapping");
 +        desc.setHandler(handler);
-+        desc.setRequired(true);
++        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _query
++        //-- validation code for: _classMapping
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _queryHintList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.QueryHint.class, "_queryHintList", "query-hint", org.exolab.castor.xml.NodeType.Element);
++        //-- _propertyList
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Property.class, "_propertyList", "property", org.exolab.castor.xml.NodeType.Element);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                NamedQuery target = (NamedQuery) object;
-+                return target.getQueryHint();
++                BindXml target = (BindXml) object;
++                return target.getProperty();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    NamedQuery target = (NamedQuery) object;
-+                    target.addQueryHint( (org.exolab.castor.mapping.xml.QueryHint) value);
++                    BindXml target = (BindXml) object;
++                    target.addProperty( (org.exolab.castor.mapping.xml.Property) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
 +            }
 +            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
 +                try {
-+                    NamedQuery target = (NamedQuery) object;
-+                    target.removeAllQueryHint();
++                    BindXml target = (BindXml) object;
++                    target.removeAllProperty();
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -15195,14 +15340,13 @@ Last-Update: 2010-06-27
 +            }
 +        };
 +        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.QueryHint");
++        desc.setComponentType("org.exolab.castor.mapping.xml.Property");
 +        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
 +        desc.setMultivalued(true);
 +        addFieldDescriptor(desc);
 +        addSequenceElement(desc);
 +
-+        //-- validation code for: _queryHintList
++        //-- validation code for: _propertyList
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
 +        fieldValidator.setMinOccurs(0);
 +        { //-- local scope
@@ -15246,7 +15390,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.NamedQuery.class;
++        return org.exolab.castor.mapping.xml.BindXml.class;
 +    }
 +
 +    /**
@@ -15309,11 +15453,11 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/FieldMappingDescriptor.java
-@@ -0,0 +1,1031 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/QueryHintDescriptor.java
+@@ -0,0 +1,257 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
@@ -15324,14 +15468,14 @@ Last-Update: 2010-06-27
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.FieldMapping;
++import org.exolab.castor.mapping.xml.QueryHint;
 +
 +/**
-+ * Class FieldMappingDescriptor.
++ * Class QueryHintDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class FieldMappingDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class QueryHintDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -15368,220 +15512,34 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public FieldMappingDescriptor() {
++    public QueryHintDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "field";
-+        _elementDefinition = true;
-+
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
-+
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getName();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setName( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _name
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _type
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getType();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setType( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _type
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _required
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_required", "required", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasRequired()) { return null; }
-+                return (target.getRequired() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteRequired();
-+                        return;
-+                    }
-+                    target.setRequired( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _required
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _transient
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_transient", "transient", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasTransient()) { return null; }
-+                return (target.getTransient() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteTransient();
-+                        return;
-+                    }
-+                    target.setTransient( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _transient
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _nillable
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_nillable", "nillable", org.exolab.castor.xml.NodeType.Attribute);
++        _xmlName = "query-hint";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasNillable()) { return null; }
-+                return (target.getNillable() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                QueryHint target = (QueryHint) object;
++                return target.getName();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteNillable();
-+                        return;
-+                    }
-+                    target.setNillable( ((java.lang.Boolean) value).booleanValue());
++                    QueryHint target = (QueryHint) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -15592,42 +15550,40 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _nillable
++        //-- validation code for: _name
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _direct
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_direct", "direct", org.exolab.castor.xml.NodeType.Attribute);
++        //-- _value
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute);
++        desc.setImmutable(true);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasDirect()) { return null; }
-+                return (target.getDirect() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
++                QueryHint target = (QueryHint) object;
++                return target.getValue();
 +            }
 +            @Override
 +            public void setValue( java.lang.Object object, java.lang.Object value) 
 +                throws IllegalStateException, IllegalArgumentException
 +            {
 +                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteDirect();
-+                        return;
-+                    }
-+                    target.setDirect( ((java.lang.Boolean) value).booleanValue());
++                    QueryHint target = (QueryHint) object;
++                    target.setValue( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -15638,42 +15594,211 @@ Last-Update: 2010-06-27
 +                return null;
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("string");
 +        desc.setHandler(handler);
++        desc.setRequired(true);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _direct
++        //-- validation code for: _value
 +        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        fieldValidator.setMinOccurs(1);
 +        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
++            org.exolab.castor.xml.validators.StringValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
 +            fieldValidator.setValidator(typeValidator);
++            typeValidator.setWhiteSpace("preserve");
 +        }
 +        desc.setValidator(fieldValidator);
-+        //-- _lazy
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_lazy", "lazy", org.exolab.castor.xml.NodeType.Attribute);
++        //-- initialize element descriptors
++
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
++     */
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
++
++    /**
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
++     */
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
++    }
++
++    /**
++     * Method getJavaClass.
++     * 
++     * @return the Java class represented by this descriptor.
++     */
++    @Override()
++    public java.lang.Class getJavaClass(
++    ) {
++        return org.exolab.castor.mapping.xml.QueryHint.class;
++    }
++
++    /**
++     * Method getNameSpacePrefix.
++     * 
++     * @return the namespace prefix to use when marshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpacePrefix(
++    ) {
++        return _nsPrefix;
++    }
++
++    /**
++     * Method getNameSpaceURI.
++     * 
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
++    }
++
++    /**
++     * Method getValidator.
++     * 
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
++     */
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
++    }
++
++    /**
++     * Method getXMLName.
++     * 
++     * @return the XML Name for the Class being described.
++     */
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
++    }
++
++    /**
++     * Method isElementDefinition.
++     * 
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
++     */
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/LdapDescriptor.java
+@@ -0,0 +1,211 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.Ldap;
++
++/**
++ * Class LdapDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class LdapDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
++
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
++
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
++
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
++
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public LdapDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "ldap";
++        _elementDefinition = true;
++        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
++        org.exolab.castor.mapping.FieldHandler             handler        = null;
++        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
++        //-- initialize attribute descriptors
++
++        //-- _name
++        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
 +        handler = new org.exolab.castor.xml.XMLFieldHandler() {
 +            @Override
 +            public java.lang.Object getValue( java.lang.Object object ) 
 +                throws IllegalStateException
 +            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasLazy()) { return null; }
-+                return (target.getLazy() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteLazy();
-+                        return;
-+                    }
-+                    target.setLazy( ((java.lang.Boolean) value).booleanValue());
++                Ldap target = (Ldap) object;
++                return target.getName();
++            }
++            @Override
++            public void setValue( java.lang.Object object, java.lang.Object value) 
++                throws IllegalStateException, IllegalArgumentException
++            {
++                try {
++                    Ldap target = (Ldap) object;
++                    target.setName( (java.lang.String) value);
 +                } catch (java.lang.Exception ex) {
 +                    throw new IllegalStateException(ex.toString());
 +                }
@@ -15681,567 +15806,822 @@ Last-Update: 2010-06-27
 +            @Override
 +            @SuppressWarnings("unused")
 +            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
++                return new java.lang.String();
 +            }
 +        };
-+        desc.setSchemaType("boolean");
++        desc.setSchemaType("NMTOKEN");
 +        desc.setHandler(handler);
 +        desc.setMultivalued(false);
 +        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _lazy
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _container
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_container", "container", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasContainer()) { return null; }
-+                return (target.getContainer() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteContainer();
-+                        return;
-+                    }
-+                    target.setContainer( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++        //-- validation code for: _name
++        fieldValidator = new org.exolab.castor.xml.FieldValidator();
++        { //-- local scope
++            org.exolab.castor.xml.validators.NameValidator typeValidator;
++            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
++                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
++            fieldValidator.setValidator(typeValidator);
++            typeValidator.addPattern("[\\w-._:]+");
++        }
++        desc.setValidator(fieldValidator);
++        //-- initialize element descriptors
++
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
++     */
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
++
++    /**
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
++     */
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
++    }
++
++    /**
++     * Method getJavaClass.
++     * 
++     * @return the Java class represented by this descriptor.
++     */
++    @Override()
++    public java.lang.Class getJavaClass(
++    ) {
++        return org.exolab.castor.mapping.xml.Ldap.class;
++    }
++
++    /**
++     * Method getNameSpacePrefix.
++     * 
++     * @return the namespace prefix to use when marshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpacePrefix(
++    ) {
++        return _nsPrefix;
++    }
++
++    /**
++     * Method getNameSpaceURI.
++     * 
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
++    }
++
++    /**
++     * Method getValidator.
++     * 
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
++     */
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
++    }
++
++    /**
++     * Method getXMLName.
++     * 
++     * @return the XML Name for the Class being described.
++     */
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
++    }
++
++    /**
++     * Method isElementDefinition.
++     * 
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
++     */
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/.castor.cdr
+@@ -0,0 +1,6 @@
++#Sun Jan 22 02:11:58 UTC 2012
++org.exolab.castor.mapping.xml.types.SqlDirtyType=org.exolab.castor.mapping.xml.types.descriptors.SqlDirtyTypeDescriptor
++org.exolab.castor.mapping.xml.types.FieldMappingCollectionType=org.exolab.castor.mapping.xml.types.descriptors.FieldMappingCollectionTypeDescriptor
++org.exolab.castor.mapping.xml.types.ClassMappingAccessType=org.exolab.castor.mapping.xml.types.descriptors.ClassMappingAccessTypeDescriptor
++org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType=org.exolab.castor.mapping.xml.types.descriptors.BindXmlAutoNamingTypeDescriptor
++org.exolab.castor.mapping.xml.types.BindXmlNodeType=org.exolab.castor.mapping.xml.types.descriptors.BindXmlNodeTypeDescriptor
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/SqlDirtyType.java
+@@ -0,0 +1,111 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.types;
++
++/**
++ * Enumeration SqlDirtyType.
++ * 
++ * @version $Revision$ $Date$
++ */
++public enum SqlDirtyType {
++
++
++      //------------------/
++     //- Enum Constants -/
++    //------------------/
++
++    /**
++     * Constant CHECK
++     */
++    CHECK("check"),
++    /**
++     * Constant IGNORE
++     */
++    IGNORE("ignore");
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field value.
++     */
++    private final java.lang.String value;
++
++    /**
++     * Field enumConstants.
++     */
++    private static final java.util.Map<java.lang.String, SqlDirtyType> enumConstants = new java.util.HashMap<java.lang.String, SqlDirtyType>();
++
++
++    static {
++        for (SqlDirtyType c: SqlDirtyType.values()) {
++            SqlDirtyType.enumConstants.put(c.value, c);
++        }
++
++    };
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    private SqlDirtyType(final java.lang.String value) {
++        this.value = value;
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method fromValue.
++     * 
++     * @param value
++     * @return the constant for this value
++     */
++    public static org.exolab.castor.mapping.xml.types.SqlDirtyType fromValue(
++            final java.lang.String value) {
++        SqlDirtyType c = SqlDirtyType.enumConstants.get(value);
++        if (c != null) {
++            return c;
++        }
++        throw new IllegalArgumentException(value);
++    }
++
++    /**
++     * 
++     * 
++     * @param value
++     */
++    public void setValue(
++            final java.lang.String value) {
++    }
++
++    /**
++     * Method toString.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String toString(
++    ) {
++        return this.value;
++    }
++
++    /**
++     * Method value.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String value(
++    ) {
++        return this.value;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/FieldMappingCollectionType.java
+@@ -0,0 +1,147 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.types;
++
++/**
++ * Enumeration FieldMappingCollectionType.
++ * 
++ * @version $Revision$ $Date$
++ */
++public enum FieldMappingCollectionType {
++
++
++      //------------------/
++     //- Enum Constants -/
++    //------------------/
++
++    /**
++     * Constant ARRAY
++     */
++    ARRAY("array"),
++    /**
++     * Constant VECTOR
++     */
++    VECTOR("vector"),
++    /**
++     * Constant ARRAYLIST
++     */
++    ARRAYLIST("arraylist"),
++    /**
++     * Constant HASHTABLE
++     */
++    HASHTABLE("hashtable"),
++    /**
++     * Constant COLLECTION
++     */
++    COLLECTION("collection"),
++    /**
++     * Constant SET
++     */
++    SET("set"),
++    /**
++     * Constant MAP
++     */
++    MAP("map"),
++    /**
++     * Constant ENUMERATE
++     */
++    ENUMERATE("enumerate"),
++    /**
++     * Constant SORTEDSET
++     */
++    SORTEDSET("sortedset"),
++    /**
++     * Constant ITERATOR
++     */
++    ITERATOR("iterator"),
++    /**
++     * Constant SORTEDMAP
++     */
++    SORTEDMAP("sortedmap");
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field value.
++     */
++    private final java.lang.String value;
++
++    /**
++     * Field enumConstants.
++     */
++    private static final java.util.Map<java.lang.String, FieldMappingCollectionType> enumConstants = new java.util.HashMap<java.lang.String, FieldMappingCollectionType>();
++
 +
-+        //-- validation code for: _container
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
++    static {
++        for (FieldMappingCollectionType c: FieldMappingCollectionType.values()) {
++            FieldMappingCollectionType.enumConstants.put(c.value, c);
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _getMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_getMethod", "get-method", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getGetMethod();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setGetMethod( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _getMethod
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _hasMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_hasMethod", "has-method", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getHasMethod();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setHasMethod( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++    };
 +
-+        //-- validation code for: _hasMethod
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _setMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_setMethod", "set-method", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getSetMethod();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setSetMethod( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _setMethod
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _createMethod
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_createMethod", "create-method", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getCreateMethod();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setCreateMethod( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++      //----------------/
++     //- Constructors -/
++    //----------------/
 +
-+        //-- validation code for: _createMethod
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _handler
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_handler", "handler", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getHandler();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setHandler( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++    private FieldMappingCollectionType(final java.lang.String value) {
++        this.value = value;
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
 +
-+        //-- validation code for: _handler
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
++    /**
++     * Method fromValue.
++     * 
++     * @param value
++     * @return the constant for this value
++     */
++    public static org.exolab.castor.mapping.xml.types.FieldMappingCollectionType fromValue(
++            final java.lang.String value) {
++        FieldMappingCollectionType c = FieldMappingCollectionType.enumConstants.get(value);
++        if (c != null) {
++            return c;
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _collection
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.FieldMappingCollectionType.class, "_collection", "collection", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getCollection();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setCollection( (org.exolab.castor.mapping.xml.types.FieldMappingCollectionType) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.FieldMappingCollectionType.class, handler);
-+        desc.setImmutable(true);
-+        desc.setSchemaType("FieldMappingCollectionType");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++        throw new IllegalArgumentException(value);
++    }
 +
-+        //-- validation code for: _collection
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
++    /**
++     * 
++     * 
++     * @param value
++     */
++    public void setValue(
++            final java.lang.String value) {
++    }
++
++    /**
++     * Method toString.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String toString(
++    ) {
++        return this.value;
++    }
++
++    /**
++     * Method value.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String value(
++    ) {
++        return this.value;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/ClassMappingAccessType.java
+@@ -0,0 +1,119 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.types;
++
++/**
++ * Enumeration ClassMappingAccessType.
++ * 
++ * @version $Revision$ $Date$
++ */
++public enum ClassMappingAccessType {
++
++
++      //------------------/
++     //- Enum Constants -/
++    //------------------/
++
++    /**
++     * Constant READ_ONLY
++     */
++    READ_ONLY("read-only"),
++    /**
++     * Constant SHARED
++     */
++    SHARED("shared"),
++    /**
++     * Constant EXCLUSIVE
++     */
++    EXCLUSIVE("exclusive"),
++    /**
++     * Constant DB_LOCKED
++     */
++    DB_LOCKED("db-locked");
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field value.
++     */
++    private final java.lang.String value;
++
++    /**
++     * Field enumConstants.
++     */
++    private static final java.util.Map<java.lang.String, ClassMappingAccessType> enumConstants = new java.util.HashMap<java.lang.String, ClassMappingAccessType>();
++
++
++    static {
++        for (ClassMappingAccessType c: ClassMappingAccessType.values()) {
++            ClassMappingAccessType.enumConstants.put(c.value, c);
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _comparator
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_comparator", "comparator", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getComparator();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setComparator( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _comparator
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
++    };
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    private ClassMappingAccessType(final java.lang.String value) {
++        this.value = value;
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method fromValue.
++     * 
++     * @param value
++     * @return the constant for this value
++     */
++    public static org.exolab.castor.mapping.xml.types.ClassMappingAccessType fromValue(
++            final java.lang.String value) {
++        ClassMappingAccessType c = ClassMappingAccessType.enumConstants.get(value);
++        if (c != null) {
++            return c;
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _identity
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_identity", "identity", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                if (!target.hasIdentity()) { return null; }
-+                return (target.getIdentity() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteIdentity();
-+                        return;
-+                    }
-+                    target.setIdentity( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++        throw new IllegalArgumentException(value);
++    }
++
++    /**
++     * 
++     * 
++     * @param value
++     */
++    public void setValue(
++            final java.lang.String value) {
++    }
++
++    /**
++     * Method toString.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String toString(
++    ) {
++        return this.value;
++    }
++
++    /**
++     * Method value.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String value(
++    ) {
++        return this.value;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/BindXmlAutoNamingType.java
+@@ -0,0 +1,111 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.types;
++
++/**
++ * Enumeration BindXmlAutoNamingType.
++ * 
++ * @version $Revision$ $Date$
++ */
++public enum BindXmlAutoNamingType {
++
++
++      //------------------/
++     //- Enum Constants -/
++    //------------------/
++
++    /**
++     * Constant DERIVEBYCLASS
++     */
++    DERIVEBYCLASS("deriveByClass"),
++    /**
++     * Constant DERIVEBYFIELD
++     */
++    DERIVEBYFIELD("deriveByField");
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field value.
++     */
++    private final java.lang.String value;
++
++    /**
++     * Field enumConstants.
++     */
++    private static final java.util.Map<java.lang.String, BindXmlAutoNamingType> enumConstants = new java.util.HashMap<java.lang.String, BindXmlAutoNamingType>();
 +
-+        //-- validation code for: _identity
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
++
++    static {
++        for (BindXmlAutoNamingType c: BindXmlAutoNamingType.values()) {
++            BindXmlAutoNamingType.enumConstants.put(c.value, c);
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
 +
-+        //-- _description
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_description", "description", org.exolab.castor.xml.NodeType.Element);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getDescription();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setDescription( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++    };
 +
-+        //-- validation code for: _description
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    private BindXmlAutoNamingType(final java.lang.String value) {
++        this.value = value;
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method fromValue.
++     * 
++     * @param value
++     * @return the constant for this value
++     */
++    public static org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType fromValue(
++            final java.lang.String value) {
++        BindXmlAutoNamingType c = BindXmlAutoNamingType.enumConstants.get(value);
++        if (c != null) {
++            return c;
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _sql
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Sql.class, "_sql", "sql", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getSql();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setSql( (org.exolab.castor.mapping.xml.Sql) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.Sql");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++        throw new IllegalArgumentException(value);
++    }
 +
-+        //-- validation code for: _sql
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
++    /**
++     * 
++     * 
++     * @param value
++     */
++    public void setValue(
++            final java.lang.String value) {
++    }
++
++    /**
++     * Method toString.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String toString(
++    ) {
++        return this.value;
++    }
++
++    /**
++     * Method value.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String value(
++    ) {
++        return this.value;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/BindXmlNodeType.java
+@@ -0,0 +1,119 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.types;
++
++/**
++ * Enumeration BindXmlNodeType.
++ * 
++ * @version $Revision$ $Date$
++ */
++public enum BindXmlNodeType {
++
++
++      //------------------/
++     //- Enum Constants -/
++    //------------------/
++
++    /**
++     * Constant ATTRIBUTE
++     */
++    ATTRIBUTE("attribute"),
++    /**
++     * Constant ELEMENT
++     */
++    ELEMENT("element"),
++    /**
++     * Constant NAMESPACE
++     */
++    NAMESPACE("namespace"),
++    /**
++     * Constant TEXT
++     */
++    TEXT("text");
++
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field value.
++     */
++    private final java.lang.String value;
++
++    /**
++     * Field enumConstants.
++     */
++    private static final java.util.Map<java.lang.String, BindXmlNodeType> enumConstants = new java.util.HashMap<java.lang.String, BindXmlNodeType>();
++
++
++    static {
++        for (BindXmlNodeType c: BindXmlNodeType.values()) {
++            BindXmlNodeType.enumConstants.put(c.value, c);
 +        }
-+        desc.setValidator(fieldValidator);
-+        //-- _bindXml
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.BindXml.class, "_bindXml", "bind-xml", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getBindXml();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setBindXml( (org.exolab.castor.mapping.xml.BindXml) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.BindXml");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
 +
-+        //-- validation code for: _bindXml
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _ldap
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Ldap.class, "_ldap", "ldap", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldMapping target = (FieldMapping) object;
-+                return target.getLdap();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldMapping target = (FieldMapping) object;
-+                    target.setLdap( (org.exolab.castor.mapping.xml.Ldap) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.Ldap");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++    };
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    private BindXmlNodeType(final java.lang.String value) {
++        this.value = value;
++    }
++
++
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method fromValue.
++     * 
++     * @param value
++     * @return the constant for this value
++     */
++    public static org.exolab.castor.mapping.xml.types.BindXmlNodeType fromValue(
++            final java.lang.String value) {
++        BindXmlNodeType c = BindXmlNodeType.enumConstants.get(value);
++        if (c != null) {
++            return c;
++        }
++        throw new IllegalArgumentException(value);
++    }
++
++    /**
++     * 
++     * 
++     * @param value
++     */
++    public void setValue(
++            final java.lang.String value) {
++    }
++
++    /**
++     * Method toString.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String toString(
++    ) {
++        return this.value;
++    }
++
++    /**
++     * Method value.
++     * 
++     * @return the value of this constant
++     */
++    public java.lang.String value(
++    ) {
++        return this.value;
++    }
++
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/BindXmlAutoNamingTypeDescriptor.java
+@@ -0,0 +1,162 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
++
++package org.exolab.castor.mapping.xml.types.descriptors;
++
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType;
++
++/**
++ * Class BindXmlAutoNamingTypeDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class BindXmlAutoNamingTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++
 +
-+        //-- validation code for: _ldap
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
++
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
++
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
++
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
++
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
++
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public BindXmlAutoNamingTypeDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "BindXmlAutoNamingType";
++        _elementDefinition = false;
 +    }
 +
 +
@@ -16280,7 +16660,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.FieldMapping.class;
++        return org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType.class;
 +    }
 +
 +    /**
@@ -16343,29 +16723,29 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/FieldHandlerDefDescriptor.java
-@@ -0,0 +1,308 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/SqlDirtyTypeDescriptor.java
+@@ -0,0 +1,162 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
 +
-+package org.exolab.castor.mapping.xml.descriptors;
++package org.exolab.castor.mapping.xml.types.descriptors;
 +
 +  //---------------------------------/
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.FieldHandlerDef;
++import org.exolab.castor.mapping.xml.types.SqlDirtyType;
 +
 +/**
-+ * Class FieldHandlerDefDescriptor.
++ * Class SqlDirtyTypeDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class FieldHandlerDefDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class SqlDirtyTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -16389,170 +16769,24 @@ Last-Update: 2010-06-27
 +
 +    /**
 +     * Field _xmlName.
-+     */
-+    private java.lang.String _xmlName;
-+
-+    /**
-+     * Field _identity.
-+     */
-+    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
-+
-+
-+      //----------------/
-+     //- Constructors -/
-+    //----------------/
-+
-+    public FieldHandlerDefDescriptor() {
-+        super();
-+        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "field-handler";
-+        _elementDefinition = true;
-+
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
-+
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
-+        this._identity = desc;
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldHandlerDef target = (FieldHandlerDef) object;
-+                return target.getName();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldHandlerDef target = (FieldHandlerDef) object;
-+                    target.setName( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("ID");
-+        desc.setHandler(handler);
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _name
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.IdValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.IdValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _clazz
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_clazz", "class", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldHandlerDef target = (FieldHandlerDef) object;
-+                return target.getClazz();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldHandlerDef target = (FieldHandlerDef) object;
-+                    target.setClazz( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _clazz
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
-+        //-- _paramList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Param.class, "_paramList", "param", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                FieldHandlerDef target = (FieldHandlerDef) object;
-+                return target.getParam();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    FieldHandlerDef target = (FieldHandlerDef) object;
-+                    target.addParam( (org.exolab.castor.mapping.xml.Param) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    FieldHandlerDef target = (FieldHandlerDef) object;
-+                    target.removeAllParam();
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.Param");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(true);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++     */
++    private java.lang.String _xmlName;
 +
-+        //-- validation code for: _paramList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public SqlDirtyTypeDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "SqlDirtyType";
++        _elementDefinition = false;
 +    }
 +
 +
@@ -16591,7 +16825,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.FieldHandlerDef.class;
++        return org.exolab.castor.mapping.xml.types.SqlDirtyType.class;
 +    }
 +
 +    /**
@@ -16654,29 +16888,29 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/ParamDescriptor.java
-@@ -0,0 +1,257 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/ClassMappingAccessTypeDescriptor.java
+@@ -0,0 +1,162 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
 +
-+package org.exolab.castor.mapping.xml.descriptors;
++package org.exolab.castor.mapping.xml.types.descriptors;
 +
 +  //---------------------------------/
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.Param;
++import org.exolab.castor.mapping.xml.types.ClassMappingAccessType;
 +
 +/**
-+ * Class ParamDescriptor.
++ * Class ClassMappingAccessTypeDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class ParamDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class ClassMappingAccessTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -16713,106 +16947,11 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public ParamDescriptor() {
++    public ClassMappingAccessTypeDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "param";
-+        _elementDefinition = true;
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
-+
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                Param target = (Param) object;
-+                return target.getName();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    Param target = (Param) object;
-+                    target.setName( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _name
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _value
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_value", "value", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                Param target = (Param) object;
-+                return target.getValue();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    Param target = (Param) object;
-+                    target.setValue( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setRequired(true);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+
-+        //-- validation code for: _value
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(1);
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
-+
++        _xmlName = "ClassMappingAccessType";
++        _elementDefinition = false;
 +    }
 +
 +
@@ -16851,7 +16990,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.Param.class;
++        return org.exolab.castor.mapping.xml.types.ClassMappingAccessType.class;
 +    }
 +
 +    /**
@@ -16914,29 +17053,29 @@ Last-Update: 2010-06-27
 +
 +}
 --- /dev/null
-+++ castor-1.3.1/xml/src/main/java/org/exolab/castor/mapping/xml/descriptors/BindXmlDescriptor.java
-@@ -0,0 +1,639 @@
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/FieldMappingCollectionTypeDescriptor.java
+@@ -0,0 +1,162 @@
 +/*
 + * This class was automatically generated with 
-+ * <a href="http://www.castor.org">Castor 1.3.0.1</a>, using an XML
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
 + * Schema.
 + * $Id$
 + */
 +
-+package org.exolab.castor.mapping.xml.descriptors;
++package org.exolab.castor.mapping.xml.types.descriptors;
 +
 +  //---------------------------------/
 + //- Imported classes and packages -/
 +//---------------------------------/
 +
-+import org.exolab.castor.mapping.xml.BindXml;
++import org.exolab.castor.mapping.xml.types.FieldMappingCollectionType;
 +
 +/**
-+ * Class BindXmlDescriptor.
++ * Class FieldMappingCollectionTypeDescriptor.
 + * 
 + * @version $Revision$ $Date$
 + */
-+public class BindXmlDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
++public class FieldMappingCollectionTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
 +
 +      //--------------------------/
@@ -16973,488 +17112,176 @@ Last-Update: 2010-06-27
 +     //- Constructors -/
 +    //----------------/
 +
-+    public BindXmlDescriptor() {
++    public FieldMappingCollectionTypeDescriptor() {
 +        super();
 +        _nsURI = "http://castor.exolab.org/";
-+        _xmlName = "bind-xml";
-+        _elementDefinition = true;
++        _xmlName = "FieldMappingCollectionType";
++        _elementDefinition = false;
++    }
 +
-+        //-- set grouping compositor
-+        setCompositorAsSequence();
-+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
-+        org.exolab.castor.mapping.FieldHandler             handler        = null;
-+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
-+        //-- initialize attribute descriptors
 +
-+        //-- _name
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_name", "name", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setSchemaType("QName");
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getName();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setName( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("QName");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++      //-----------/
++     //- Methods -/
++    //-----------/
++
++    /**
++     * Method getAccessMode.
++     * 
++     * @return the access mode specified for this class.
++     */
++    @Override()
++    public org.exolab.castor.mapping.AccessMode getAccessMode(
++    ) {
++        return null;
++    }
++
++    /**
++     * Method getIdentity.
++     * 
++     * @return the identity field, null if this class has no
++     * identity.
++     */
++    @Override()
++    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
++    ) {
++        return _identity;
++    }
++
++    /**
++     * Method getJavaClass.
++     * 
++     * @return the Java class represented by this descriptor.
++     */
++    @Override()
++    public java.lang.Class getJavaClass(
++    ) {
++        return org.exolab.castor.mapping.xml.types.FieldMappingCollectionType.class;
++    }
++
++    /**
++     * Method getNameSpacePrefix.
++     * 
++     * @return the namespace prefix to use when marshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpacePrefix(
++    ) {
++        return _nsPrefix;
++    }
++
++    /**
++     * Method getNameSpaceURI.
++     * 
++     * @return the namespace URI used when marshaling and
++     * unmarshaling as XML.
++     */
++    @Override()
++    public java.lang.String getNameSpaceURI(
++    ) {
++        return _nsURI;
++    }
++
++    /**
++     * Method getValidator.
++     * 
++     * @return a specific validator for the class described by this
++     * ClassDescriptor.
++     */
++    @Override()
++    public org.exolab.castor.xml.TypeValidator getValidator(
++    ) {
++        return this;
++    }
 +
-+        //-- validation code for: _name
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_QNAME);
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _type
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_type", "type", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getType();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setType( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++    /**
++     * Method getXMLName.
++     * 
++     * @return the XML Name for the Class being described.
++     */
++    @Override()
++    public java.lang.String getXMLName(
++    ) {
++        return _xmlName;
++    }
 +
-+        //-- validation code for: _type
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _autoNaming
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType.class, "_autoNaming", "auto-naming", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getAutoNaming();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setAutoNaming( (org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.BindXmlAutoNamingType.class, handler);
-+        desc.setImmutable(true);
-+        desc.setSchemaType("BindXmlAutoNamingType");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++    /**
++     * Method isElementDefinition.
++     * 
++     * @return true if XML schema definition of this Class is that
++     * of a global
++     * element or element with anonymous type definition.
++     */
++    public boolean isElementDefinition(
++    ) {
++        return _elementDefinition;
++    }
 +
-+        //-- validation code for: _autoNaming
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _location
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_location", "location", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getLocation();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setLocation( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++}
+--- /dev/null
++++ castor-1.3.2/xml/src/main/java/org/exolab/castor/mapping/xml/types/descriptors/BindXmlNodeTypeDescriptor.java
+@@ -0,0 +1,162 @@
++/*
++ * This class was automatically generated with 
++ * <a href="http://www.castor.org">Castor 1.3.1</a>, using an XML
++ * Schema.
++ * $Id$
++ */
 +
-+        //-- validation code for: _location
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _matches
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_matches", "matches", org.exolab.castor.xml.NodeType.Attribute);
-+        desc.setImmutable(true);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getMatches();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setMatches( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("string");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++package org.exolab.castor.mapping.xml.types.descriptors;
 +
-+        //-- validation code for: _matches
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.StringValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.setWhiteSpace("preserve");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _reference
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_reference", "reference", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                if (!target.hasReference()) { return null; }
-+                return (target.getReference() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteReference();
-+                        return;
-+                    }
-+                    target.setReference( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++  //---------------------------------/
++ //- Imported classes and packages -/
++//---------------------------------/
++
++import org.exolab.castor.mapping.xml.types.BindXmlNodeType;
++
++/**
++ * Class BindXmlNodeTypeDescriptor.
++ * 
++ * @version $Revision$ $Date$
++ */
++public class BindXmlNodeTypeDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
 +
-+        //-- validation code for: _reference
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _node
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.types.BindXmlNodeType.class, "_node", "node", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getNode();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setNode( (org.exolab.castor.mapping.xml.types.BindXmlNodeType) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        handler = new org.exolab.castor.xml.handlers.EnumFieldHandler(org.exolab.castor.mapping.xml.types.BindXmlNodeType.class, handler);
-+        desc.setImmutable(true);
-+        desc.setSchemaType("BindXmlNodeType");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
 +
-+        //-- validation code for: _node
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _QNamePrefix
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_QNamePrefix", "QName-prefix", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getQNamePrefix();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setQNamePrefix( (java.lang.String) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return new java.lang.String();
-+            }
-+        };
-+        desc.setSchemaType("NMTOKEN");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++      //--------------------------/
++     //- Class/Member Variables -/
++    //--------------------------/
 +
-+        //-- validation code for: _QNamePrefix
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.NameValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.NameValidator(
-+                org.exolab.castor.xml.XMLConstants.NAME_TYPE_NMTOKEN);
-+            fieldValidator.setValidator(typeValidator);
-+            typeValidator.addPattern("[\\w-._:]+");
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _transient
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_transient", "transient", org.exolab.castor.xml.NodeType.Attribute);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                if (!target.hasTransient()) { return null; }
-+                return (target.getTransient() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    // if null, use delete method for optional primitives 
-+                    if (value == null) {
-+                        target.deleteTransient();
-+                        return;
-+                    }
-+                    target.setTransient( ((java.lang.Boolean) value).booleanValue());
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("boolean");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
++    /**
++     * Field _elementDefinition.
++     */
++    private boolean _elementDefinition;
 +
-+        //-- validation code for: _transient
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
-+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
-+            fieldValidator.setValidator(typeValidator);
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- initialize element descriptors
++    /**
++     * Field _nsPrefix.
++     */
++    private java.lang.String _nsPrefix;
 +
-+        //-- _classMapping
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.ClassMapping.class, "_classMapping", "class", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getClassMapping();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.setClassMapping( (org.exolab.castor.mapping.xml.ClassMapping) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("org.exolab.castor.mapping.xml.ClassMapping");
-+        desc.setHandler(handler);
-+        desc.setNameSpaceURI("http://castor.exolab.org/");
-+        desc.setMultivalued(false);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++    /**
++     * Field _nsURI.
++     */
++    private java.lang.String _nsURI;
 +
-+        //-- validation code for: _classMapping
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
-+        //-- _propertyList
-+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(org.exolab.castor.mapping.xml.Property.class, "_propertyList", "property", org.exolab.castor.xml.NodeType.Element);
-+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
-+            @Override
-+            public java.lang.Object getValue( java.lang.Object object ) 
-+                throws IllegalStateException
-+            {
-+                BindXml target = (BindXml) object;
-+                return target.getProperty();
-+            }
-+            @Override
-+            public void setValue( java.lang.Object object, java.lang.Object value) 
-+                throws IllegalStateException, IllegalArgumentException
-+            {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.addProperty( (org.exolab.castor.mapping.xml.Property) value);
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            public void resetValue(Object object) throws IllegalStateException, IllegalArgumentException {
-+                try {
-+                    BindXml target = (BindXml) object;
-+                    target.removeAllProperty();
-+                } catch (java.lang.Exception ex) {
-+                    throw new IllegalStateException(ex.toString());
-+                }
-+            }
-+            @Override
-+            @SuppressWarnings("unused")
-+            public java.lang.Object newInstance(java.lang.Object parent) {
-+                return null;
-+            }
-+        };
-+        desc.setSchemaType("list");
-+        desc.setComponentType("org.exolab.castor.mapping.xml.Property");
-+        desc.setHandler(handler);
-+        desc.setMultivalued(true);
-+        addFieldDescriptor(desc);
-+        addSequenceElement(desc);
++    /**
++     * Field _xmlName.
++     */
++    private java.lang.String _xmlName;
 +
-+        //-- validation code for: _propertyList
-+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
-+        fieldValidator.setMinOccurs(0);
-+        { //-- local scope
-+        }
-+        desc.setValidator(fieldValidator);
++    /**
++     * Field _identity.
++     */
++    private org.exolab.castor.xml.XMLFieldDescriptor _identity;
++
++
++      //----------------/
++     //- Constructors -/
++    //----------------/
++
++    public BindXmlNodeTypeDescriptor() {
++        super();
++        _nsURI = "http://castor.exolab.org/";
++        _xmlName = "BindXmlNodeType";
++        _elementDefinition = false;
 +    }
 +
 +
@@ -17493,7 +17320,7 @@ Last-Update: 2010-06-27
 +    @Override()
 +    public java.lang.Class getJavaClass(
 +    ) {
-+        return org.exolab.castor.mapping.xml.BindXml.class;
++        return org.exolab.castor.mapping.xml.types.BindXmlNodeType.class;
 +    }
 +
 +    /**
diff --git a/debian/patches/fix_debian_build.diff b/debian/patches/fix_debian_build.diff
index 943d3bf..853868c 100644
--- a/debian/patches/fix_debian_build.diff
+++ b/debian/patches/fix_debian_build.diff
@@ -140,7 +140,7 @@ index e189839..414e770 100644
  
      <target name="prepare.core" unless="prepare.executed">
 diff --git a/cpa/build.xml b/cpa/build.xml
-index 2b32ea2..11d4f1f 100644
+index 2b32ea2..d481e01 100644
 --- a/cpa/build.xml
 +++ b/cpa/build.xml
 @@ -1,5 +1,4 @@
@@ -150,7 +150,12 @@ index 2b32ea2..11d4f1f 100644
  
      <property environment="env" />
      <property name="source"               value="${basedir}/src"/>
-@@ -13,12 +12,14 @@
+@@ -9,16 +8,18 @@
+     <property name="main.jjtree"          value="${source}/main/jjtree"/>
+     <property name="jjtree.target"        value="${target}/generated-sources/jjtree"/>
+     <property name="javacc.target"        value="${target}/generated-sources/javacc"/>
+-    <property name="javacc.home"          value="${basedir}/../lib" />
++    <property name="javacc.home"          value="/usr/share/java" />
      <property name="build"                value="${basedir}/build"/>
      <property name="castor.target"        value="${basedir}/target/generated-sources/castor"/>
      <property name="classes"              value="${build}/classes"/>
@@ -166,6 +171,53 @@ index 2b32ea2..11d4f1f 100644
  
      <path id="build.classpath">
      	<!-- inter-module dependencies -->
+@@ -28,6 +29,7 @@
+         <pathelement location="${basedir}/../schema/build/classes"/>
+         <pathelement location="${basedir}/../anttask/build/classes"/>
+         <pathelement location="${basedir}/../codegen/build/classes"/>
++        <fileset dir="/" includesfile="${basedir}/../debian/classpath-debian"/>
+     	
+     	<!-- third-party libs -->
+ <!--    	
+@@ -41,10 +43,12 @@
+ 
+ 	<target name="derive.cpa.libs">
+ 		<mkdir dir="${basedir}/lib" />  	
++	    <!--
+ 	    <copy todir="${basedir}/lib" verbose="true">
+ 	      <fileset refid="dependency.fileset"/>
+ 	      <mapper type="flatten"/>
+ 	    </copy>
++	    -->
+ 	</target>	
+ 
+     <target name="prepare.cpa" unless="prepare.cpa.executed">
+@@ -97,6 +101,17 @@
+     </target>
+ 
+     <target name="compile.cpa" depends="gen.parser, derive.cpa.libs" description="Compile Castor JDO">
++        <javac destdir="${classes}" 
++               debug="on" encoding="ISO-8859-1" deprecation="false">
++            <src path="${javacc.target}"/>
++            <src path="${castor.target}"/>
++            <src path="${main.java}"/>
++            <classpath refid="build.classpath"/>
++        	<classpath>
++        		<fileset dir="${basedir}/lib"/>
++        	</classpath>
++        </javac>
++        <!--
+         <javac srcdir="${javacc.target}" destdir="${classes}" 
+                debug="on" encoding="ISO-8859-1" deprecation="false">
+             <classpath refid="build.classpath"/>
+@@ -118,6 +133,7 @@
+         		<fileset dir="${basedir}/lib"/>
+         	</classpath>
+         </javac>
++        -->
+         <copy todir="${classes}">
+             <fileset dir="${main.resources}">
+                 <include name="**"/>
 diff --git a/ddlgen/build.xml b/ddlgen/build.xml
 index 4876ce4..2963db7 100644
 --- a/ddlgen/build.xml
@@ -332,7 +384,7 @@ index 7aa2944..dfc379f 100644
  
      <target name="prepare.schema" depends="derive.libs" unless="prepare.executed">
 diff --git a/src/build.xml b/src/build.xml
-index 6316674..f2e2258 100644
+index 6316674..a7babdf 100644
 --- a/src/build.xml
 +++ b/src/build.xml
 @@ -2,8 +2,7 @@
@@ -456,7 +508,20 @@ index 6316674..f2e2258 100644
          	<classpath>
          	   <fileset dir="${basedir}/newlib"/>
          	</classpath>
-@@ -599,6 +617,7 @@
+@@ -416,12 +434,10 @@
+             <property name="release" value="${release}"/>
+         </ant>
+     	<!-- build Castor JDO -->
+-<!--
+     	<ant antfile="${basedir}/cpa/build.xml" target="compile.cpa" inheritAll="false">
+             <property name="version" value="${version}"/>
+             <property name="release" value="${release}"/>
+         </ant>
+--->
+     	<!-- build examples -->
+ <!--
+         <ant antfile="${basedir}/examples/build.xml" target="compile.examples" inheritAll="false">
+@@ -599,6 +615,7 @@
                <include name="${archive.name}.jar" />
            </fileset>
        </copy>
@@ -464,7 +529,7 @@ index 6316674..f2e2258 100644
        <copy todir="target/lib">
            <fileset dir="${lib}">
                <include name="commons-logging.jar" />
-@@ -608,6 +627,7 @@
+@@ -608,6 +625,7 @@
                <include name="derby-10.1.2.1.jar" />
            </fileset>
        </copy>
@@ -472,7 +537,7 @@ index 6316674..f2e2258 100644
        <zip zipfile="${dist}/${archive.name}-examples.zip" basedir="target" includes="**"/>
      </target>
  
-@@ -639,7 +659,8 @@
+@@ -639,7 +657,8 @@
          <replace file="${classes}/MANIFEST.MF" token="$$RELEASE$$" value="${release}"/>
  
          <!-- create Castor XML Only Jar -->
@@ -482,7 +547,21 @@ index 6316674..f2e2258 100644
               manifest="${classes}/MANIFEST.MF"
               includes="LICENSE,LICENSE.APACHE2,README,
                         org/castor/messages.properties,
-@@ -917,9 +938,11 @@
+@@ -680,13 +699,11 @@
+             <property name="release" value="${release}"/>
+         </ant>
+         <!-- create JAR for JDO, calling module build file recursively -->
+-<!--
+         <ant antfile="${basedir}/cpa/build.xml" target="jar.cpa" inheritAll="false">
+             <property name="project" value="${project}"/>
+             <property name="version" value="${version}"/>
+             <property name="release" value="${release}"/>
+         </ant>
+--->
+         <!-- create JAR for XML code generator, calling module build file recursively -->
+         <ant antfile="${basedir}/codegen/build.xml" target="jar.codegen" inheritAll="false">
+             <property name="project" value="${project}"/>
+@@ -917,9 +934,11 @@
          <copy todir="${build}/${archive.name}/src">
            <fileset dir="${source}" />
          </copy>
@@ -494,7 +573,7 @@ index 6316674..f2e2258 100644
          <copy todir="${build}/${archive.name}/bin">
            <fileset dir="./bin" includes="*.sh,*.bat"/>
          </copy>
-@@ -1098,9 +1121,11 @@
+@@ -1098,9 +1117,11 @@
                  <include name="${archive.name}-core.jar"/>
          	</fileset>
          </copy>
diff --git a/debian/rules b/debian/rules
index 78bb96b..4bdd255 100755
--- a/debian/rules
+++ b/debian/rules
@@ -22,9 +22,9 @@ override_dh_install:
 	mh_installjar -plibcastor-core-java -l core/pom.xml \
 		dist/castor-core-$(VERSION).jar
 	# JDO module
-#	mh_installpom -plibcastor-jdo-java --no-parent cpa/pom.xml
-#	mh_installjar -plibcastor-jdo-java -l cpa/pom.xml \
-#		dist/castor-jdo-$(VERSION).jar
+	mh_installpom -plibcastor-jdo-java --no-parent cpa/pom.xml
+	mh_installjar -plibcastor-jdo-java -l cpa/pom.xml \
+		dist/castor-jdo-$(VERSION).jar
 	# Codegen module
 	mh_installpom -plibcastor-codegen-java --no-parent codegen/pom.xml
 	mh_installjar -plibcastor-codegen-java -l codegen/pom.xml \
@@ -46,12 +46,6 @@ override_dh_auto_clean:
 	-cd src && ant distclean
 	mh_clean
 
-override_jh_manifest:
-	# Failure of jh_manifest are ignored because it is failing intermittently,
-	# so it is not clear if manifest templates from upstream are broken or if
-	# this is just a bug in javahelper. By now, I'm ignoring any failure.
-	-jh_manifest -v
-
 get-orig-source:
 	cd $(dir $(firstword $(MAKEFILE_LIST)))../ && \
 	uscan \

-- 
Castor: open source data binding framework written in Java



More information about the pkg-java-commits mailing list