portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dlest...@apache.org
Subject cvs commit: jakarta-jetspeed-2/components/registry/src/test repository_internal.xml OJB.properties repository.dtd
Date Thu, 18 Mar 2004 06:10:05 GMT
dlestrat    2004/03/17 22:10:05

  Modified:    components/registry/src/test repository_internal.xml
                        OJB.properties repository.dtd
  Log:
  Migrating to OJB RC5.
  
  Revision  Changes    Path
  1.3       +66 -4     jakarta-jetspeed-2/components/registry/src/test/repository_internal.xml
  
  Index: repository_internal.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/registry/src/test/repository_internal.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- repository_internal.xml	4 Mar 2004 21:22:06 -0000	1.2
  +++ repository_internal.xml	18 Mar 2004 06:10:05 -0000	1.3
  @@ -2,10 +2,14 @@
   
   <!-- The OJB HIGH/LOW SequenceManagerTable -->
      <class-descriptor
  -   	  class="org.apache.ojb.broker.util.sequence.HighLowSequence"
  -   	  table="OJB_HL_SEQ"
  +      class="org.apache.ojb.broker.util.sequence.HighLowSequence"
  +      table="OJB_HL_SEQ"
      >
  -      <field-descriptor
  +
  +       <object-cache class="org.apache.ojb.broker.cache.ObjectCacheEmptyImpl">
  +       </object-cache>
  +
  +       <field-descriptor
            name="tableName"
            column="TABLENAME"
            jdbc-type="VARCHAR"
  @@ -20,7 +24,7 @@
         <field-descriptor
            name="maxKey"
            column="MAX_KEY"
  -         jdbc-type="INTEGER"
  +         jdbc-type="BIGINT"
         />
         <field-descriptor
            name="grabSize"
  @@ -144,6 +148,63 @@
         />
      </class-descriptor>
   
  +   <!-- THIS IS THE OJB DLIST IMPLEMENTATION, DO NOT EDIT-->
  +   <!-- alternative implementation of DList -->
  +   <class-descriptor
  +   	  class="org.apache.ojb.odmg.collections.DListImpl_2"
  +   	  table="OJB_DLIST"
  +   >
  +      <field-descriptor
  +         name="id"
  +         column="ID"
  +         jdbc-type="INTEGER"
  +         primarykey="true"
  +         autoincrement="true"
  +      />
  +      <field-descriptor
  +         name="size"
  +         column="SIZE_"
  +         jdbc-type="INTEGER"
  +      />
  +      <collection-descriptor
  +         name="elements"
  +         element-class-ref="org.apache.ojb.odmg.collections.DListEntry_2"
  +         auto-retrieve = "true"
  +      >
  +         <inverse-foreignkey field-ref="dlistId"/>
  +      </collection-descriptor>
  +   </class-descriptor>
  +
  +<!-- THIS IS THE OJB DLIST ENTRY IMPLEMENTATION, DO NOT EDIT-->
  +   <class-descriptor
  +      class="org.apache.ojb.odmg.collections.DListEntry_2"
  +      table="OJB_DLIST_ENTRIES"
  +   >
  +      <field-descriptor
  +         name="id"
  +         column="ID"
  +         jdbc-type="INTEGER"
  +         primarykey="true"
  +         autoincrement="true"
  +      />
  +      <field-descriptor
  +         name="dlistId"
  +         column="DLIST_ID"
  +         jdbc-type="INTEGER"
  +      />
  +      <field-descriptor
  +         name="position"
  +         column="POSITION_"
  +         jdbc-type="INTEGER"
  +      />
  +      <field-descriptor
  +         name="oid"
  +         column="OID_"
  +         jdbc-type="LONGVARBINARY"
  +         conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion"
  +      />
  +   </class-descriptor>
  +
      <!-- THIS IS THE OJB DBAG IMPLEMENTATION, DO NOT EDIT-->
      <class-descriptor
      	  class="org.apache.ojb.odmg.collections.DBagImpl"
  @@ -280,6 +341,7 @@
            conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion"
         />
      </class-descriptor>
  +
   
   
      <!-- END OF OJB INTERNAL MAPPINGS-->
  
  
  
  1.3       +79 -21    jakarta-jetspeed-2/components/registry/src/test/OJB.properties
  
  Index: OJB.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/registry/src/test/OJB.properties,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- OJB.properties	4 Mar 2004 21:22:06 -0000	1.2
  +++ OJB.properties	18 Mar 2004 06:10:05 -0000	1.3
  @@ -2,6 +2,7 @@
   # Version: 1.0
   # (c) 2001, 2002, 2003 Apache Software Foundation
   # Author: Thomas Mahler and many others
  +# @version $Id$
   #
   #----------------------------------------------------------------------------------------
   # repository file settings
  @@ -31,15 +32,23 @@
   # The PersistenceBrokerFactoryClass entry decides which concrete
   # PersistenceBrokerFactory implemention is to be used.
   PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
  +# If in managed environment *only* the PB-api was used it's recommended to use this factory
  +# to enable the PersistenceBroker instances to participate in the JTA transaction. This makes
  +# e.g. PBStateListener work properly in managed environments.
  +#PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl
  +#
   #
   # The PersistenceBrokerClass entry decides which concrete PersistenceBroker
   # implementation is to be served by the PersistenceBrokerFactory.
   # This is the singlevm implementation:
   PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl
   #
  +# This is an implementation that uses Prevayler (prevayler.sf.net) as the persistent storage.
  +# Using this implementation OJB works as a simple OODBMS
  +#PersistenceBrokerClass=org.apache.ojb.broker.prevayler.PBPrevaylerImpl
   #
   #----------------------------------------------------------------------------------------
  -# PersistenceBrokerFactory pool
  +# PersistenceBroker pool
   #----------------------------------------------------------------------------------------
   # PersistenceBroker pool configuration
   # This pool uses the jakarta-commons-pool api.
  @@ -159,13 +168,27 @@
   #----------------------------------------------------------------------------------------
   # Object cache
   #----------------------------------------------------------------------------------------
  -# The ObjectCacheClass entry tells OJB which concrete instance Cache
  -# implementation is to be used.
  +# The ObjectCacheClass entry tells OJB which concrete ObjectCache
  +# implementation is to be used as standard cache.
  +# Its also possible to override this entry adding object-cache elements
  +# on jdbc-connection-descriptor level and
  +# per class-descriptor in repository file. More info see documentation.
  +#
   ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheDefaultImpl
   #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheEmptyImpl
   #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCachePerBrokerImpl
  -#ObjectCacheClass=org.apache.ojb.broker.cache.MetaObjectCacheJCSImpl
  -#ObjectCacheClass=org.apache.ojb.broker.cache.MetaObjectCachePerClassImpl
  +#ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheJCSPerClassImpl
  +#ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCachePerClassImpl
  +#
  +#
  +# This property is only relevant if the per class-descriptor object-cache
  +# declaration was used in conjunction with metadata runtime changes.
  +# If set 'flase' the class name of the object is used
  +# to find a per class ObjectCache implementation.
  +# If set 'true' the ObjectCacheDescriptor instance is used as key to
  +# find a per class ObjectCache, this enables to use different ObjectCache
  +# instances for the same class.
  +descriptorBasedCaches=false
   #
   #
   # Use CacheFilters to do filter operations before caching methods were
  @@ -191,12 +214,16 @@
   # The LockMapClass entry tells OJB which concrete LockMap
   # implementation is to be used.
   # If OJB is running on multiple concurrent clients it is recommended
  -# to use the PersistentLockMapImpl. It guarantees to provide
  -# Lockamanagement across multiple JVMs.
  +# to use the RemoteLockMapImpl. It guarantees to provide
  +# Lockmanagement across multiple JVMs. 
  +# This Implemenation relies on a Servlet based Lockserver. To use it you have to
  +# deploy the ojb-lockserver.war into a Servlet engine.
  +# and you have to set the Property LockServletUrl to point to this servlet.
  +# (see LockServletUrl section below).
   # If OJB is running in a single JVM (e.g. in a desktop app, or in a servlet
   # engine) it is save to use the InMemoryLockMapImpl. Using it will result
   # in a large performance gain.
  -# LockMapClass=org.apache.ojb.odmg.locking.PersistentLockMapImpl
  +#LockMapClass=org.apache.ojb.odmg.locking.RemoteLockMapImpl
   LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl
   #
   # The LockTimeout entry defines the maximum time in milliseconds
  @@ -213,6 +240,13 @@
   ImplicitLocking=true
   #ImplicitLocking=false
   #
  +#
  +# The LockServletUrl entry points to the Lockserver servlet.
  +# This Servlet is addressed by all distributed JVMs if the RemoteLockMapImpl
  +# is used.
  +LockServletUrl=http://127.0.0.1:8080/ojb-lockserver
  +#
  +#
   # The LockAssociations entry defines the behaviour for the OJB
   # implicit locking feature. If set to WRITE (default) acquiring a write-
   # lock on a given object x implies write locks on all objects associated
  @@ -251,10 +285,14 @@
   DEFAULT.LogLevel=WARN
   # Logger for PersistenceBrokerImpl class
   org.apache.ojb.broker.core.PersistenceBrokerImpl.LogLevel=WARN
  -# Logger for PersistenceBrokerFactory class
  -org.apache.ojb.broker.PersistenceBrokerFactory.LogLevel=WARN
  +# Logger for PersistenceBrokerFactory class PersistenceBrokerFactoryDefaultImpl
  +org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=WARN
   # Logger for RepositoryXmlHandler, useful for debugging parsing of repository.xml!
  +# persistence capable object metadata
   org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=WARN
  +# Logger for ConnectionDescriptorXmlHandler, useful for debugging parsing of repository.xml!
  +# connection specific metadata
  +org.apache.ojb.broker.metadata.ConnectionDescriptorXmlHandler.LogLevel=WARN
   # Logger for JdbcAccess, useful for debugging JDBC related problems
   org.apache.ojb.broker.accesslayer.JdbcAccessImpl.LogLevel=WARN
   # Logger for RsIterator, useful for debugging problems with Object materialization
  @@ -265,15 +303,15 @@
   org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN
   # Logger for RepositoryPersistor
   org.apache.ojb.broker.metadata.RepositoryPersistor.LogLevel=WARN
  -# Logger for PersistenceBrokerFactoryDefaultImpl
  -org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=WARN
  -# Logger for ConnectionFactory
  -org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.LogLevel=ERROR
  +# Logger for ConnectionFactory base class
  +org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.LogLevel=WARN
  +# Logger for ConnectionManager
  +org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.LogLevel=WARN
   #
   # Special Logger categories used in test suite and tutorials
   #
   # Logger for the ODMG Implementation
  -ODMG.LogLevel=WARN
  +ODMG.LogLevel=DEBUG
   # Logger for the JDO RI Implementation
   JDO.LogLevel=DEBUG
   # Logger for the performance tests
  @@ -290,13 +328,13 @@
   # The OqlCollectionClass entry defines the collection type returned
   # from OQL queries. By default this value is set to DListImpl.
   # This will be good for most situations as DList allows maximum flexibility
  -# in a ODMG environment.
  +# in a ODMG environment. See also section 'ODMG settings'.
   # Using DLists for large resultsets may be bad for application performance.
   # For these scenarios you can use ArrayLists or Vectors.
   # Important note: the collections class to be used MUST implement the
   # interface org.apache.ojb.broker.ManageableCollection.
   #
  -OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl
  +OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl_2
   # OqlCollectionClass=org.apache.ojb.broker.util.collections.ManageableArrayList
   # OqlCollectionClass=org.apache.ojb.broker.util.ManageableVector
   #
  @@ -306,6 +344,30 @@
   #
   #
   #----------------------------------------------------------------------------------------
  +# ODMG settings
  +#----------------------------------------------------------------------------------------
  +# Used ODMG collection implementation classes
  +# (e.g. when do a Implementation#newDlist() call)
  +#
  +# org.odmg.DList implementation class
  +DListClass=org.apache.ojb.odmg.collections.DListImpl_2
  +#DListClass=org.apache.ojb.odmg.collections.DListImpl
  +#
  +# org.odmg.DArray implementation class
  +DArrayClass=org.apache.ojb.odmg.collections.DListImpl_2
  +#DArrayClass=org.apache.ojb.odmg.collections.DListImpl
  +#
  +# org.odmg.DMap implementation class
  +DMapClass=org.apache.ojb.odmg.collections.DMapImpl
  +#
  +# org.odmg.DBag implementation class
  +DBagClass=org.apache.ojb.odmg.collections.DBagImpl
  +#
  +# org.odmg.DSet implementation class
  +DSetClass=org.apache.ojb.odmg.collections.DSetImpl
  +#
  +#
  +#----------------------------------------------------------------------------------------
   # Meta data / mapping settings
   #----------------------------------------------------------------------------------------
   # The PersistentFieldClass property defines the implementation class
  @@ -335,10 +397,6 @@
   #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldIntrospectorImpl
   #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDynaBeanAccessImpl
   #
  -# outdated deprecated versions:
  -#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldMaxPerformanceImpl
  -#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentNestedFieldMaxPerformanceImpl
  -#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldPropertyImpl
   #
   #----------------------------------------------------------------------------------------
   # Component Intercepting for Profiling and Tracing
  
  
  
  1.2       +927 -731  jakarta-jetspeed-2/components/registry/src/test/repository.dtd
  
  Index: repository.dtd
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/registry/src/test/repository.dtd,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- repository.dtd	24 Feb 2004 00:41:21 -0000	1.1
  +++ repository.dtd	18 Mar 2004 06:10:05 -0000	1.2
  @@ -1,731 +1,927 @@
  -<!--
  -	ObJectRelationalBridge - Bridging Java objects and relational dabatases
  -	This DTD describes the grammar of the Descriptor repository
  -	Author: Thomas Mahler, (c) 2000, 2001, 2002, 2003
  -  -->
  -
  -<!--
  -	The descriptor-repository is the root element of a
  -    repository.xml file.
  -	It consists of one jdbc-connection-descriptor and at least one
  -	class-descriptor element.
  -
  -	The attribute element allows to add custom attributes.
  -
  -    The jdbc-connection-descriptor element specifies the default jdbc
  -	connection for the repository.
  -
  -	class-descriptor elements specify o/r mapping information for
  -	persistent classes.
  -  -->
  -<!ELEMENT descriptor-repository (documentation?, attribute*, jdbc-connection-descriptor*, class-descriptor*)>
  -
  -<!--
  -	The version attribute is used to bind a repository.xml
  -    file to a given version of this dtd. This will help to
  -    avoid versions conflicts.
  -
  -    The isolation attribute defines the default isolation level for
  -    class-descriptor on ODMG api level that do not define a
  -    specific isolation level (this does NOT touch the jdbc-level
  -    of the connection).
  -  -->
  -<!ATTLIST descriptor-repository
  -	version (1.0) #REQUIRED
  -	isolation-level (read-uncommitted | read-committed | repeatable-read |
  -	                 serializable | optimistic) "read-uncommitted"
  ->
  -
  -<!--
  -	The documentation element can be used to store arbitrary
  -	information on all repository entries.
  --->
  -<!ELEMENT documentation (#PCDATA)>
  -
  -<!ELEMENT database-repository (jdbc-connection-descriptor*)>
  -
  -<!--
  -	The attribute element allows to add custom attributes.
  -
  -    The jdbc-connection-descriptor element specifies the a jdbc
  -	connection for the repository.
  -
  -	A connection-pool element may be used to define connection pool
  -	properties for the specified JDBC connection.
  -
  -    A sequence-manager element may be used to
  -    define which sequence manager implementation should be used within
  -    the defined connection.
  -  -->
  -<!ELEMENT jdbc-connection-descriptor (documentation?, attribute*, connection-pool?, sequence-manager?)>
  -
  -
  -<!--
  -    The jcdAlias attribute is a shortcut name for the defined connection
  -    descriptor. OJB use jcdAlias as key for the defined connections.
  -
  -    The default-connection attribute used to define if this connection
  -    should used as default connection with OJB. You could define only
  -    one connection as default connection. It is also possible to set
  -    the default connection at runtime using
  -    PersistenceBrokerFactory#setDefaultKey(...) method.
  -    If set 'true' you could use on PB-api a shortcut-method of the
  -    PersistenceBrokerFactory to lookup PersistenceBroker instances.
  -
  -    The platform attribute is used to define the specific RDBMS
  -    Platform. This attribute corresponds to a
  -	org.apache.ojb.broker.platforms.PlatformXXXImpl class.
  -
  -	The jdbc-level attribute is used to specify the Jdbc compliance
  -	level of the used Jdbc driver.
  -
  -    The eager-release attribute was adopt to solve a problem occured when
  -    using OJB within JBoss (>=3.0). Only use within JBoss.
  -
  -    The batch-mode attribute allow to set batch mode modus global
  -    from the used connection. It is also possible to change
  -    batch mode at runtime, using the
  -    PB.serviceConnectionManager.setBatchMode(...) method.
  -
  -    The useAutoCommit attribute allow to set how OJB uses
  -    the autoCommit state of the used connections. The default mode
  -    was 1. When using mode 0 or 2 with the PB-api, you must use PB
  -    transaction demarcation.
  -    0 - OJB ignores the autoCommit setting of the connection and do not
  -        try to change it. This mode could be helpfully if the
  -        connection don't let you set the autoCommit state
  -        (e.g. using datasources from application server).
  -    1 - set autoCommit explicit 'true' when connection was created
  -        and temporary set to 'false' when necessary (default mode).
  -    2 - set autoCommit explicit 'false' when connection was created.
  -
  -    If the ignoreAutoCommitExceptions attribute is set 'true', all
  -    exceptions caused by setting autocommit state, will be ignored.
  -    Default mode 'false'.
  -
  -	If a jndi-datasource-name for JNDI based lookup of Jdbc
  -    connections is specified, the four attributes driver, protocol,
  -    subprotocol, dbalias used for Jdbc DriverManager based construction
  -    of Jdbc Connections must not be declared.
  -
  -    The username and password attributes are used as credentials
  -    for obtaining a jdbc connections.
  -    If users don't want to keep this information the
  -    repository.xml file, they could pass user/password
  -    using PBKey.java to obtain a PersistenceBroker
  -  -->
  -<!ATTLIST jdbc-connection-descriptor
  -	jcd-alias CDATA #REQUIRED
  -    default-connection (true | false) "false"
  -    platform (Db2 | Hsqldb | Informix | MsAccess | MsSQLServer |
  -	          MySQL | Oracle | PostgreSQL | Sybase | SybaseASE|
  -              SybaseASA | Sapdb | Firebird | Axion | NonstopSql ) "Hsqldb"
  -	jdbc-level (1.0 | 2.0 | 3.0) "1.0"
  -	eager-release (true | false) "false"
  -    batch-mode (true | false) "false"
  -    useAutoCommit (0 | 1 | 2) "1"
  -    ignoreAutoCommitExceptions (true | false) "false"
  -
  -	jndi-datasource-name CDATA #IMPLIED
  -
  -	driver CDATA #IMPLIED
  -	protocol CDATA #IMPLIED
  -	subprotocol CDATA #IMPLIED
  -	dbalias CDATA #IMPLIED
  -
  -	username CDATA #IMPLIED
  -	password CDATA #IMPLIED
  ->
  -
  -
  -<!--
  -	The connection-pool element specifies the connection pooling
  -	parameter.
  --->
  -<!ELEMENT connection-pool (documentation?)>
  -
  -
  -<!--
  -	maxActive
  -	maximum number of connections that can be borrowed from the
  -	pool at one time. When non-positive, there is no limit.
  -
  -	maxIdle
  -	controls the maximum number of connections that can sit idle in the
  -	pool at any time. When non-positive, there is no limit
  -
  -	maxWait
  -	max time block to get connection instance from pool, after that exception is thrown.
  -	When non-positive, block till last judgement
  -
  -	whenExhaustedAction
  -	0 - fail when pool is exhausted
  -	1 - block when pool is exhausted
  -	2 - grow when pool is exhausted
  -
  -	testOnBorrow
  -	The pool will attempt to validate each object before it is returned from the pool
  -
  -	testOnReturn
  -	The pool will attempt to validate each object before it is returned to the pool
  -
  -	testWhileIdle
  -	Indicates whether or not idle objects should be validated.
  -	Objects that fail to validate will be dropped from the pool
  -
  -	timeBetweenEvictionRunsMillis
  -	indicates how long the eviction thread should sleep before "runs" of examining
  -	idle objects. When non-positive, no eviction thread will be launched.
  -
  -	minEvictableIdleTimeMillis
  -	specifies the minimum amount of time that a connection may sit idle
  -	in the pool before it is eligable for eviction due to idle time.
  -	When non-positive, no connection will be dropped from the pool due
  -	to idle time alone (depends on timeBetweenEvictionRunsMillis > 0)
  -
  -	numTestsPerEvictionRun
  -	The number of connections to examine during each run of the
  -	idle object evictor thread (if any)
  -
  -    validationQuery
  -    Here you could specify a validation query used by pool to test a
  -    obtained connection (e.g. "select 1 from dual"), else a default query was
  -    used - if defined in the platform class for your database.
  -
  -    logAbandoned
  -    Only supported when using
  -    org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCPImpl
  -    ConnectionFactory implementation.
  -    Flag to log stack traces for application code which abandoned
  -    a Statement or Connection. Defaults to false. Logging of
  -    abandoned Statements and Connections adds overhead for
  -    every Connection open or new Statement because a
  -    stack trace has to be generated.
  -
  -    removeAbandoned/removeAbandonedTimeout
  -    Only supported when using
  -    org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCPImpl
  -    ConnectionFactory implementation.
  -    Flag to remove abandoned connections if they exceed the
  -    removeAbandonedTimeout. Set to true or false, default false.
  -    If set to true a connection is considered abandoned and
  -    eligible for removal if it has been idle longer than the
  -    removeAbandonedTimeout. Setting this to true can recover
  -    db connections from poorly written applications which
  -    fail to close a connection.
  -
  --->
  -<!ATTLIST connection-pool
  -    maxActive                       CDATA #IMPLIED
  -    maxIdle                         CDATA #IMPLIED
  -    maxWait                         CDATA #IMPLIED
  -    minEvictableIdleTimeMillis      CDATA #IMPLIED
  -    numTestsPerEvictionRun          CDATA #IMPLIED
  -    testOnBorrow                    (true|false) #IMPLIED
  -    testOnReturn                    (true|false) #IMPLIED
  -    testWhileIdle                   (true|false) #IMPLIED
  -    timeBetweenEvictionRunsMillis   CDATA #IMPLIED
  -    whenExhaustedAction             (0|1|2) #IMPLIED
  -    validationQuery                 CDATA #IMPLIED
  -
  -    logAbandoned                    (true|false) #IMPLIED
  -    removeAbandoned                 (true|false) #IMPLIED
  -    removeAbandonedTimeout          CDATA #IMPLIED
  ->
  -
  -
  -
  -<!--
  -	The sequence-manager element specifies the sequence
  -    manager implementation used for key generation. All
  -    sequence manager implementations shipped with OJB
  -    you will find under org.apache.ojb.broker.util.sequence
  -    If no sequence-manager is defined, OJB use a default one.
  -    For configuration examples please consult documentation.
  -
  -    Use the attribute element to pass implementation specific
  -    properties. This depends on the used implementation class.
  --->
  -<!ELEMENT sequence-manager (documentation?, attribute*)>
  -
  -<!--
  -    The className attribute represents the full qualified class name
  -    of the desired sequence manager implementation - it is mandatory
  -    when using the sequence-manager element.
  -    All sequence manager implementations you find will under
  -    org.apache.ojb.broker.util.sequence package named as SequenceManagerXXXImpl.
  -    For configuration examples please consult documentation.
  --->
  -<!ATTLIST sequence-manager
  -    className                       CDATA #REQUIRED
  ->
  -
  -
  -
  -<!--
  -	For interfaces or abstract classes a class-descriptor holds a sequence of
  -	extent-class elements.
  -
  -	For concrete classes it must have field-descriptors that describe primitive
  -	typed instance variables.
  -	References to other persistent entity classes are specified by
  -	reference-descriptor elements.
  -	Collections or arrays attributes that contain other persistent entity
  -	classes are specified by collection-descriptor elements
  -
  -	Concrete base classes, may specify a sequence of extent-class elements,
  -	naming the derived classes.
  -
  -	A class-descriptor may contain user defined custom attribute elements.
  -
  -  -->
  -<!ELEMENT class-descriptor
  -	((documentation?, extent-class+, attribute*) |
  -	(documentation?, extent-class*, field-descriptor+,
  -	 reference-descriptor*, collection-descriptor*,
  -     index-descriptor*, attribute*))>
  -
  -
  -<!--
  -	The class attribute contains the full qualified name of the specified class.
  -	As this attribute is of type ID there can only be one class-descriptor per
  -	class.
  -
  -	The isolation-level attribute specifies the transactional isolation to be
  -	used for this class on ODMG api level (this does NOT touch the jdbc-level
  -    of the connection).
  -
  -	If the proxy attribute is set, proxies are used for all loading operations
  -	of instances of this class. If set to "dynamic", dynamic proxies are used.
  -	If set to another value this value is interpreted as the full-qualified
  -	name of the proxy class to use.
  -
  -	The schema attribute may contain the database schema owning the table
  -	mapped to this class.
  -
  -	The table attribute specifies the table name this class is mapped to.
  -
  -	The row-reader attribute may contain a full qualified class name.
  -	This class will be used as the RowReader implementation used to
  -	materialize instances of the persistent class.
  -
  -	The accept-locks attribute specifies whether implicit locking should
  -	propagate to this class.  Currently relevant for the ODMG layer only.
  -
  -	The optional initialization-method specifies a no-argument instance
  -	method that is invoked after reading an instnace from a database row.
  -	It can be used to do initialization and validations.
  -
  -	The optional factory-method specifies a static no-argument method
  -	(specified by the factory-class attribute)
  -	that is to be used instead of a no argument constructor.
  -	If either factory-class or factory-method is specified, the other
  -	is mandatory.
  -	
  -	The refresh attribute can be set to true to force OJB to refresh
  -	instances when loaded from cache. It's set to false by default.
  -
  -  -->
  -<!ATTLIST class-descriptor
  -	class ID #REQUIRED
  -	isolation-level (read-uncommitted | read-committed | repeatable-read |
  -	                 serializable | optimistic) "read-uncommitted"
  -	proxy CDATA #IMPLIED
  -	schema CDATA #IMPLIED
  -	table CDATA #IMPLIED
  -	row-reader CDATA #IMPLIED
  -    extends IDREF #IMPLIED
  -	accept-locks (true | false) "true"
  -	initialization-method CDATA #IMPLIED
  -	factory-class CDATA #IMPLIED
  -	factory-method CDATA #IMPLIED
  -	refresh (true | false) "false"
  ->
  -
  -
  -<!--
  -	An extent-class element is used to specify an implementing class or a
  -	derived class that belongs to the extent of all instances of the interface
  -	or base class.
  -  -->
  -<!ELEMENT extent-class (documentation?)>
  -<!--
  -	The class-ref attribute must contain a fully qualified classname.
  -	The repository file must contain a class-descriptor for this class.
  -  -->
  -<!ATTLIST extent-class
  -	class-ref IDREF #REQUIRED
  ->
  -
  -<!--
  -  A field descriptor contains mapping info for a primitive typed
  -  attribute of a persistent class.
  -
  -  A field descriptor may contain custom attribute elements.
  -  -->
  -<!ELEMENT field-descriptor (documentation?, attribute*)>
  -<!--
  -	<b>The id attribute is optional.</b> If not specified, OJB internally
  -	sorts field-descriptors according to their order of appearance in the
  -	repository file.
  -	If a different sort order is intended the id attribute may be used to
  -	hold a unique number identifying the decriptors position in the sequence of
  -	field-descriptors.
  -	The order of the numbers for the field-descriptors must correspond to
  -	the order of columns in the mapped table.
  -
  -	The name attribute holds the name of the persistent classes attribute.
  -	If the PersistentFieldDefaultImpl is used there must be an attribute
  -	in the persistent class with this name.
  -	If the PersistentFieldPropertyImpl is used there must be a JavaBeans
  -	compliant property of this name.
  -
  -	The table attribute may specify a table different from the mapped
  -	table for the persistent class. (currently not implemented).
  -
  -	The column attribute specifies the column the persistent classes field
  -	is mapped to.
  -
  -	The jdbc-type attribute specifies the JDBC type of the column.
  -
  -	The primarykey specifies if the column is a primary key column.
  -
  -	The nullable attribute specifies if the column may contain null values.
  -
  -	The indexed attribute specifies if there is an index on this column
  -
  -	The autoincrement attribute specifies if the values for the persistent
  -	attribute are automatically generated by OJB.
  -
  -    The sequence-name attribute can be used to state explicitly a sequence
  -    name used by the sequence manager implementations. Check the docs/javadocs
  -    of the used sequence manager implementation to get information if this
  -    is a mandatory attribute. OJB standard sequence manager implementations
  -    build a sequence name by its own, if the attribute was not set.
  -
  -	The locking attribute is set to true if the persistent attribute is
  -	used for optimistic locking. can only be set for TIMESTAMP and INTEGER
  -	columns.
  -
  -	The updatelock attribute is set to false if the persistent attribute is
  -	used for optimistic locking AND the dbms should update the lock column
  -    itself. The default is true which means that when locking is true then
  -    OJB will update the locking fields. Can only be set for TIMESTAMP and INTEGER
  -	columns.
  -
  -	The default-fetch attribute specifies whether the persistent attribute
  -	belongs to the JDO default fetch group.
  -
  -	The conversion attribute contains a fully qualified class name.
  -	This class must implement the interface
  -	org.apache.ojb.accesslayer.conversions.FieldConversion.
  -	A FieldConversion can be used to implement conversions between Java-
  -	attributes and database columns.
  -
  -	The length attribute can be used to specify a length setting, if
  -	required by the jdbc-type of the underlying database column.
  -
  -	The precision attribute can be used to specify a precision setting, if
  -	required by the jdbc-type of the underlying database column.
  -
  -	The scale attribute can be used to specify a scale setting, if
  -	required by the jdbc-type of the underlying database column.
  -
  -	The access attribute specifies the accessibility of the field.
  -	"readonly" marks fields that are not to modified. "readwrite" marks
  -	fields that may be read and written to. "anonymous" marks anonymous fields.
  -	An anonymous field has a database representation (column) but no
  -	corresponding Java attribute. Hence the name of such a field does not
  -	refer to a Java attribute of the class, but is used as a unique
  -	identifier only.
  -
  -  -->
  -<!ATTLIST field-descriptor
  -	id CDATA #IMPLIED
  -	name CDATA #REQUIRED
  -	table CDATA #IMPLIED
  -	column CDATA #REQUIRED
  -	jdbc-type (BIT | TINYINT | SMALLINT | INTEGER | BIGINT | DOUBLE |
  -	           FLOAT | REAL | NUMERIC | DECIMAL | CHAR | VARCHAR |
  -	           LONGVARCHAR | DATE | TIME | TIMESTAMP | BINARY |
  -	           VARBINARY | LONGVARBINARY | CLOB | BLOB) #REQUIRED
  -	primarykey (true | false) "false"
  -	nullable (true | false) "true"
  -	indexed (true | false) "false"
  -	autoincrement (true | false) "false"
  -    sequence-name CDATA #IMPLIED
  -	locking (true | false) "false"
  -	update-lock (true | false) "true"
  -	default-fetch (true | false) "false"
  -	conversion CDATA #IMPLIED
  -	length CDATA #IMPLIED
  -	precision CDATA #IMPLIED
  -	scale CDATA #IMPLIED
  -	access (readonly | readwrite | anonymous) "readwrite"
  ->
  -
  -
  -<!--
  -  An attribute element allows arbitrary name/value pairs to
  -  be represented in the repository.
  -  -->
  -<!ELEMENT attribute (documentation?)>
  -
  -<!--
  -	The attribute-name identifies the name of the attribute.
  -	The attribute-value identifies the value of the attribute.
  --->
  -<!ATTLIST attribute
  -	attribute-name CDATA #REQUIRED
  -	attribute-value CDATA #REQUIRED
  ->
  -
  -<!--
  -    A reference-descriptor contains mapping info for an attribute of a
  -    persistent class that is not primitive but references another
  -    persistent entity Object.
  -
  -    A foreignkey element contains information on foreign key columns that
  -    implement the association on the database level.
  -
  -    A reference-decriptor may contain user defined attribute elements.
  -  -->
  -<!ELEMENT reference-descriptor (documentation?, foreignkey+, attribute*)>
  -<!--
  -	The name attribute holds the name of the persistent classes attribute.
  -	If the PersistentFieldDefaultImpl is used there must be an attribute
  -	in the persistent class with this name.
  -	If the PersistentFieldPropertyImpl is used there must be a JavaBeans
  -	compliant property of this name.
  -
  -	The class-ref attribute contains a fully qualified class name.
  -	This class is the Object type of the persistent reference attribute.
  -	As this is an IDREF there must be a class-descriptor for this class
  -	in the repository too.
  -
  -	The proxy attribute can be set to true to specify that proxy based
  -	lazy loading should be used for this attribute.
  -
  -	The refresh attribute can be set to true to force OJB to refresh
  -	object references on instance loading.
  -
  -	The auto-retrieve attribute specifies whether OJB automatically retrieves
  -	this reference attribute on loading the persistent object.
  -	If set to false the reference attribute is set to null. In this case the
  -	user is responsible to fill the reference attribute.
  -
  -	The auto-update attribute specifies whether OJB automatically stores
  -	this reference attribute on storing the persistent object.
  -	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  -
  -	The auto-delete attribute specifies whether OJB automatically deletes
  -	this reference attribute on deleting the persistent object.
  -	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  -
  -	The otm-dependent attribute specifies whether the OTM layer automatically
  -    creates the referred object or deletes it if the reference field is set to null.
  -    Also otm-dependent references behave as if auto-update and auto-delete
  -    were set to true, but the auto-update and auto-delete attributes themself
  -    must be always set to false for use with OTM layer.
  -
  -  -->
  -<!ATTLIST reference-descriptor
  -	name CDATA #REQUIRED
  -	class-ref IDREF #REQUIRED
  -
  -	proxy (true | false) "false"
  -	refresh (true | false) "false"
  -
  -	auto-retrieve (true | false) "true"
  -	auto-update (true | false) "false"
  -	auto-delete (true | false) "false"
  -	otm-dependent (true | false) "false"
  ->
  -
  -<!--
  -    A foreignkey element contains information on a foreign-key persistent
  -    attribute that implement the association on the database level.
  -  -->
  -<!ELEMENT foreignkey (documentation?)>
  -<!--
  -	The field-id-ref contains the id attribute of the field-descriptor
  -	used as a foreign key.
  -  -->
  -<!ATTLIST foreignkey
  -	field-id-ref CDATA #IMPLIED
  -	field-ref CDATA #IMPLIED
  ->
  -
  -
  -<!--
  -    A collection-descriptor contains mapping info for a Collection- or
  -    Array-attribute of a  persistent class that contains persistent
  -    entity Objects.
  -
  -    The inverse-foreignkey elements contains information on foreign-key
  -    attributes that implement the association on the database level.
  -
  -    The fk-pointing-to-this-class and fk-pointing-to-element-class elements
  -    are only needed if the Collection or array implements a m:n association.
  -    In this case they contain information on the foreign-key columns of
  -    the intermediary table.
  -
  -    A collection-descriptor may contain user defined attribute elements.
  -  -->
  -<!ELEMENT collection-descriptor (
  -    documentation?,
  -    orderby*,
  -    inverse-foreignkey*,
  -	fk-pointing-to-this-class*,
  -	fk-pointing-to-element-class*,
  -	query-customizer?,
  -	attribute*)>
  -
  -
  -<!--
  -	The name attribute holds the name of the persistent classes attribute.
  -	If the PersistentFieldDefaultImpl is used there must be an attribute
  -	in the persistent class with this name.
  -	If the PersistentFieldPropertyImpl is used there must be a JavaBeans
  -	compliant property of this name.
  -
  -	The collection-class may hold a fully qualified class name.
  -	This class must be the Java type of the Collection attribute.
  -	This attribute must only specified if the attribute type is not
  -	a java.util.Collection (or subclass) or Array type.
  -
  -	The element-class-ref attribute contains a fully qualified class name.
  -	This class is the Object type of the elements of persistent collection
  -	or Array attribute.
  -	As this is an IDREF there must be a class-descriptor for this class
  -	in the repository too.
  -
  -	The orderby attribute may specify a field of the element class.
  -	The Collection or Array will be sorted according to the specified attribute.
  -	The sort attribute may be used to specify ascending or descending order for
  -	this operation.
  -
  -	The indirection-table must specify the name of an intermediary table,
  -	if the persistent collection attribute implements a m:n association.
  -
  -	The proxy attribute can be set to true to specify that proxy based
  -	lazy loading should be used for this attribute.
  -
  -	The refresh attribute can be set to true to force OJB to refresh
  -	object and collection references on instance loading.
  -
  -	The auto-retrieve attribute specifies whether OJB automatically retrieves
  -	this attribute on loading the persistent object.
  -	If set to false the persistent attribute is set to null. In this case the
  -	user is responsible to fill the persistent attribute.
  -
  -	The auto-update attribute specifies whether OJB automatically stores
  -	this reference attribute on storing the persistent object.
  -	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  -
  -	The auto-delete attribute specifies whether OJB automatically deletes
  -	this reference attribute on deleting the persistent object.
  -	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  -
  -	The otm-dependent attribute specifies whether the OTM layer automatically
  -    creates collection elements that were included into the collectionelements
  -    and deletes collection elements that were excluded from the collection.
  -    Also otm-dependent references behave as if auto-update and auto-delete
  -    were set to true, but the auto-update and auto-delete attributes themself
  -    must be always set to false for use with OTM layer.
  -
  -	
  -  -->
  -<!ATTLIST collection-descriptor
  -	name CDATA #IMPLIED
  -	collection-class CDATA #IMPLIED
  -	element-class-ref IDREF #REQUIRED
  -	orderby CDATA #IMPLIED
  -	sort (ASC | DESC) "ASC"
  -
  -	indirection-table CDATA #IMPLIED
  -
  -	proxy (true | false) "false"
  -	refresh (true | false) "false"
  -
  -	auto-retrieve (true | false) "true"
  -	auto-update (true | false) "false"
  -	auto-delete (true | false) "false"
  -	otm-dependent (true | false) "false"
  ->
  -
  -<!--
  -	an OrderBy elemnent contains an attribute name and a sort order
  -  -->
  -<!ELEMENT orderby (documentation?)>
  -<!ATTLIST orderby
  -	name CDATA #REQUIRED
  -	sort (ASC | DESC) "ASC"
  ->
  -
  -<!--
  -    A inverse-foreignkey element contains information on a foreign-key
  -    persistent attribute that implement the association on the database level.
  -  -->
  -<!ELEMENT inverse-foreignkey (documentation?)>
  -<!--
  -	The field-id-ref contains the id attribute of the field-descriptor
  -	in the class of the collection elements that is used as a foreign key.
  -  -->
  -<!ATTLIST inverse-foreignkey
  -	field-id-ref CDATA #IMPLIED
  -	field-ref CDATA #IMPLIED
  ->
  -
  -<!--
  -    A fk-pointing-to-this-class element contains information on a foreign-key
  -    column of an intermediary table in a m:n scenario.
  -  -->
  -<!ELEMENT fk-pointing-to-this-class (documentation?)>
  -<!--
  -	The column attribute specifies the foreign-key column in the intermediary
  -	table that points to the class holding the collection.
  -  -->
  -<!ATTLIST fk-pointing-to-this-class
  -	column CDATA #REQUIRED
  ->
  -
  -<!--
  -    A fk-pointing-to-element-class element contains information on a foreign-key
  -    column of an intermediary table in a m:n scenario.
  -  -->
  -<!ELEMENT fk-pointing-to-element-class (documentation?)>
  -<!--
  -	The column attribute specifies the foreign-key column in the intermediary
  -	table that points to the class of the collection elements.
  -  -->
  -<!ATTLIST fk-pointing-to-element-class
  -	column CDATA #REQUIRED
  ->
  -
  -
  -<!--
  -	a queryEnhancer element to enhance the 1:n query
  -  -->
  -<!ELEMENT query-customizer (
  -	documentation?,
  -	attribute*)>
  -<!ATTLIST query-customizer
  -	class CDATA #REQUIRED
  ->
  -
  -<!--
  -    An index-descriptor describes an index by listing its columns.  It may be
  -    unique or not.
  --->
  -<!ELEMENT index-descriptor (documentation?, index-column+)>
  -<!ATTLIST index-descriptor
  -    name CDATA #REQUIRED
  -    unique (true | false) "false">
  -
  -<!--
  -    An index-column is just the name of a column in an index.
  --->
  -<!ELEMENT index-column (documentation?)>
  -<!ATTLIST index-column
  -    name CDATA #REQUIRED>
  +<!-- @version $Id$ -->
  +<!--
  +	ObJectRelationalBridge - Bridging Java objects and relational dabatases
  +	This DTD describes the grammar of the Descriptor repository
  +	Author: Thomas Mahler, (c) 2000, 2001, 2002, 2003
  +  -->
  +
  +<!--
  +	The descriptor-repository is the root element of a
  +    repository.xml file.
  +	It consists of one jdbc-connection-descriptor and at least one
  +	class-descriptor element.
  +
  +	The attribute element allows to add custom attributes.
  +
  +    The jdbc-connection-descriptor element specifies the default jdbc
  +	connection for the repository.
  +
  +	class-descriptor elements specify o/r mapping information for
  +	persistent classes.
  +  -->
  +<!ELEMENT descriptor-repository (documentation?, attribute*,
  +        jdbc-connection-descriptor*, class-descriptor*)>
  +
  +<!--
  +	The version attribute is used to bind a repository.xml
  +    file to a given version of this dtd. This will help to
  +    avoid versions conflicts.
  +
  +    The isolation attribute defines the default isolation level for
  +    class-descriptor on ODMG api level that do not define a
  +    specific isolation level (this does NOT touch the jdbc-level
  +    of the connection).
  +  -->
  +<!ATTLIST descriptor-repository
  +	version (1.0) #REQUIRED
  +	isolation-level (read-uncommitted | read-committed | repeatable-read |
  +	                 serializable | optimistic) "read-uncommitted"
  +	proxy-prefetching-limit CDATA "50"
  +>
  +
  +<!--
  +	The documentation element can be used to store arbitrary
  +	information on all repository entries.
  +-->
  +<!ELEMENT documentation (#PCDATA)>
  +
  +<!--
  +	The attribute element allows to add custom attributes.
  +
  +    The jdbc-connection-descriptor element specifies the a jdbc
  +	connection for the repository.
  +
  +    The object-cache element specifies the object-cache implementation
  +    class associated with this class.
  +
  +	A connection-pool element may be used to define connection pool
  +	properties for the specified JDBC connection.
  +
  +    A sequence-manager element may be used to
  +    define which sequence manager implementation should be used within
  +    the defined connection.
  +  -->
  +<!ELEMENT jdbc-connection-descriptor (documentation?, attribute*,
  +                object-cache?, connection-pool?, sequence-manager?)>
  +
  +<!--
  +    The jcdAlias attribute is a shortcut name for the defined connection
  +    descriptor. OJB use jcdAlias as key for the defined connections.
  +
  +    The default-connection attribute used to define if this connection
  +    should used as default connection with OJB. You could define only
  +    one connection as default connection. It is also possible to set
  +    the default connection at runtime using
  +    PersistenceBrokerFactory#setDefaultKey(...) method.
  +    If set 'true' you could use on PB-api a shortcut-method of the
  +    PersistenceBrokerFactory to lookup PersistenceBroker instances.
  +
  +    The platform attribute is used to define the specific RDBMS
  +    Platform. This attribute corresponds to a
  +	org.apache.ojb.broker.platforms.PlatformXXXImpl class.
  +
  +	The jdbc-level attribute is used to specify the Jdbc compliance
  +	level of the used Jdbc driver.
  +
  +    The eager-release attribute was adopt to solve a problem occured when
  +    using OJB within JBoss (3.0 <= version < 3.2.2, seems to be fixed in jboss 3.2.2).
  +    Only use within JBoss.
  +
  +    The batch-mode attribute allow to enable JDBC connection batch support
  +    (if supported by used database), 'true' value allows to enable per-session
  +    batch mode, whereas 'false' prohibits it.
  +    PB.serviceConnectionManager.setBatchMode(...) method can be used
  +    to switch on/off batch modus, if batch-mode was enabled. On PB.close()
  +    OJB switch off batch modus, thus you have to do '...setBatchMode(true)' on each
  +    obtained PB instance.
  +
  +    The useAutoCommit attribute allow to set how OJB uses
  +    the autoCommit state of the used connections. The default mode
  +    was 1. When using mode 0 or 2 with the PB-api, you must use PB
  +    transaction demarcation.
  +    0 - OJB ignores the autoCommit setting of the connection and do not
  +        try to change it. This mode could be helpfully if the
  +        connection don't let you set the autoCommit state
  +        (e.g. using datasources from application server).
  +    1 - set autoCommit explicit 'true' when connection was created
  +        and temporary set to 'false' when necessary (default mode).
  +    2 - set autoCommit explicit 'false' when connection was created.
  +
  +    If the ignoreAutoCommitExceptions attribute is set 'true', all
  +    exceptions caused by setting autocommit state, will be ignored.
  +    Default mode 'false'.
  +
  +	If a jndi-datasource-name for JNDI based lookup of Jdbc
  +    connections is specified, the four attributes driver, protocol,
  +    subprotocol, dbalias used for Jdbc DriverManager based construction
  +    of Jdbc Connections must not be declared.
  +
  +    The username and password attributes are used as credentials
  +    for obtaining a jdbc connections.
  +    If users don't want to keep this information the
  +    repository.xml file, they could pass user/password
  +    using PBKey.java to obtain a PersistenceBroker
  +  -->
  +<!ATTLIST jdbc-connection-descriptor
  +	jcd-alias CDATA #REQUIRED
  +    default-connection (true | false) "false"
  +    platform (Db2 | Hsqldb | Informix | MsAccess | MsSQLServer |
  +	          MySQL | Oracle | PostgreSQL | Sybase | SybaseASE |
  +              SybaseASA | Sapdb | Firebird | Axion | NonstopSql |
  +              Oracle9i | MaxDB ) "Hsqldb"
  +	jdbc-level (1.0 | 2.0 | 3.0) "1.0"
  +	eager-release (true | false) "false"
  +    batch-mode (true | false) "false"
  +    useAutoCommit (0 | 1 | 2) "1"
  +    ignoreAutoCommitExceptions (true | false) "false"
  +
  +	jndi-datasource-name CDATA #IMPLIED
  +
  +	driver CDATA #IMPLIED
  +	protocol CDATA #IMPLIED
  +	subprotocol CDATA #IMPLIED
  +	dbalias CDATA #IMPLIED
  +
  +	username CDATA #IMPLIED
  +	password CDATA #IMPLIED
  +>
  +
  +
  +<!--
  +    The object-cache element can be used to specify the ObjectCache
  +    implementation used by OJB. There are three levels of
  +    declaration:
  +        1. in OJB.properties file, to declare the standard (default)
  +        ObjectCache implementation.
  +        2. on jdbc-connection-descriptor level, to declare ObjectCache implementation
  +        on a per connection/user level
  +        3. on class-descriptor level, to declare ObjectCache implementation
  +        on a per class level
  +
  +    The priority of the declared object-cache elements are:
  +    per class > per jdbc descriptor > standard
  +
  +    E.g. if you declare ObjectCache 'cacheDef' as standard, set
  +    ObjectCache 'cacheA' in class-descriptor for class A and class B
  +    does not declare an object-cache element. Then OJB use cacheA as ObjectCache
  +    for class A and cacheDef for class B
  +-->
  +<!ELEMENT object-cache (documentation?, attribute*)>
  +
  +<!--
  +    Attribute 'class' specifies the full qualified class name of
  +    the used ObjectCache implementation.
  +-->
  +<!ATTLIST object-cache
  +    class                          CDATA #REQUIRED
  +>
  +
  +
  +<!--
  +	The connection-pool element specifies the connection pooling
  +	parameter.
  +-->
  +<!ELEMENT connection-pool (documentation?)>
  +
  +
  +<!--
  +	maxActive
  +	maximum number of connections that can be borrowed from the
  +	pool at one time. When non-positive, there is no limit.
  +
  +	maxIdle
  +	controls the maximum number of connections that can sit idle in the
  +	pool at any time. When non-positive, there is no limit
  +
  +	maxWait
  +	max time block to get connection instance from pool, after that exception is thrown.
  +	When non-positive, block till last judgement
  +
  +	whenExhaustedAction
  +	0 - fail when pool is exhausted
  +	1 - block when pool is exhausted
  +	2 - grow when pool is exhausted
  +
  +	testOnBorrow
  +	The pool will attempt to validate each object before it is returned from the pool
  +
  +	testOnReturn
  +	The pool will attempt to validate each object before it is returned to the pool
  +
  +	testWhileIdle
  +	Indicates whether or not idle objects should be validated.
  +	Objects that fail to validate will be dropped from the pool
  +
  +	timeBetweenEvictionRunsMillis
  +	indicates how long the eviction thread should sleep before "runs" of examining
  +	idle objects. When non-positive, no eviction thread will be launched.
  +
  +	minEvictableIdleTimeMillis
  +	specifies the minimum amount of time that a connection may sit idle
  +	in the pool before it is eligable for eviction due to idle time.
  +	When non-positive, no connection will be dropped from the pool due
  +	to idle time alone (depends on timeBetweenEvictionRunsMillis > 0)
  +
  +	numTestsPerEvictionRun
  +	The number of connections to examine during each run of the
  +	idle object evictor thread (if any)
  +
  +    validationQuery
  +    Here you could specify a validation query used by pool to test a
  +    obtained connection (e.g. "select 1 from dual"), else a default query was
  +    used - if defined in the platform class for your database.
  +
  +    logAbandoned
  +    Only supported when using
  +    org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCPImpl
  +    ConnectionFactory implementation.
  +    Flag to log stack traces for application code which abandoned
  +    a Statement or Connection. Defaults to false. Logging of
  +    abandoned Statements and Connections adds overhead for
  +    every Connection open or new Statement because a
  +    stack trace has to be generated.
  +
  +    removeAbandoned/removeAbandonedTimeout
  +    Only supported when using
  +    org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCPImpl
  +    ConnectionFactory implementation.
  +    Flag to remove abandoned connections if they exceed the
  +    removeAbandonedTimeout. Set to true or false, default false.
  +    If set to true a connection is considered abandoned and
  +    eligible for removal if it has been idle longer than the
  +    removeAbandonedTimeout. Setting this to true can recover
  +    db connections from poorly written applications which
  +    fail to close a connection.
  +
  +-->
  +<!ATTLIST connection-pool
  +    maxActive                       CDATA #IMPLIED
  +    maxIdle                         CDATA #IMPLIED
  +    maxWait                         CDATA #IMPLIED
  +    minEvictableIdleTimeMillis      CDATA #IMPLIED
  +    numTestsPerEvictionRun          CDATA #IMPLIED
  +    testOnBorrow                    (true|false) #IMPLIED
  +    testOnReturn                    (true|false) #IMPLIED
  +    testWhileIdle                   (true|false) #IMPLIED
  +    timeBetweenEvictionRunsMillis   CDATA #IMPLIED
  +    whenExhaustedAction             (0|1|2) #IMPLIED
  +    validationQuery                 CDATA #IMPLIED
  +
  +    logAbandoned                    (true|false) #IMPLIED
  +    removeAbandoned                 (true|false) #IMPLIED
  +    removeAbandonedTimeout          CDATA #IMPLIED
  +>
  +
  +
  +
  +<!--
  +	The sequence-manager element specifies the sequence
  +    manager implementation used for key generation. All
  +    sequence manager implementations shipped with OJB
  +    you will find under org.apache.ojb.broker.util.sequence
  +    If no sequence-manager is defined, OJB use a default one.
  +    For configuration examples please consult documentation.
  +
  +    Use the attribute element to pass implementation specific
  +    properties. This depends on the used implementation class.
  +-->
  +<!ELEMENT sequence-manager (documentation?, attribute*)>
  +
  +<!--
  +    The className attribute represents the full qualified class name
  +    of the desired sequence manager implementation - it is mandatory
  +    when using the sequence-manager element.
  +    All sequence manager implementations you find will under
  +    org.apache.ojb.broker.util.sequence package named as SequenceManagerXXXImpl.
  +    For configuration examples please consult documentation.
  +-->
  +<!ATTLIST sequence-manager
  +    className                       CDATA #REQUIRED
  +>
  +
  +
  +
  +<!--
  +	For interfaces or abstract classes a class-descriptor holds a sequence of
  +	extent-class elements.
  +
  +	For concrete classes it must have field-descriptors that describe primitive
  +	typed instance variables.
  +	References to other persistent entity classes are specified by
  +	reference-descriptor elements.
  +	Collections or arrays attributes that contain other persistent entity
  +	classes are specified by collection-descriptor elements
  +
  +	Concrete base classes, may specify a sequence of extent-class elements,
  +	naming the derived classes.
  +
  +	A class-descriptor may contain user defined custom attribute elements.
  +
  +    The insert-procedure, update-procedure and delete-procedure elements
  +    identify the procedure/function that is defined in the database which
  +    will handle the insertion, update or deletion of an instance of this
  +    class.  These elements are all optional.  If they are absent then basic
  +    sql statements (INSERT INTO xxx..., UPDATE xxx, DELETE FROM xxx) will
  +    be utilized.
  +
  +  -->
  +<!ELEMENT class-descriptor
  +	((documentation?, extent-class+, attribute*) |
  +	(documentation?, object-cache?, extent-class*, field-descriptor+,
  +	 reference-descriptor*, collection-descriptor*,
  +     index-descriptor*, attribute*,
  +     insert-procedure?, update-procedure?, delete-procedure?))>
  +
  +
  +<!--
  +	The class attribute contains the full qualified name of the specified class.
  +	As this attribute is of type ID there can only be one class-descriptor per
  +	class.
  +
  +	The isolation-level attribute specifies the transactional isolation to be
  +	used for this class on ODMG api level (this does NOT touch the jdbc-level
  +    of the connection).
  +
  +	If the proxy attribute is set, proxies are used for all loading operations
  +	of instances of this class. If set to "dynamic", dynamic proxies are used.
  +	If set to another value this value is interpreted as the full-qualified
  +	name of the proxy class to use.
  +
  +    If the proxy-prefetching-limit attribute (used with the proxy attribute)
  +    is set to the value > 0, the collections of objects of this class are materialized
  +    by groups of the specified size, say when user tries to access the first
  +    object of the collection, next proxy-prefetching-limit objects are loaded
  +    by one database query.
  +    Set this parameter to 0 if you want to turn this feature off.
  +
  +	The schema attribute may contain the database schema owning the table
  +	mapped to this class.
  +
  +	The table attribute specifies the table name this class is mapped to.
  +
  +	The row-reader attribute may contain a full qualified class name.
  +	This class will be used as the RowReader implementation used to
  +	materialize instances of the persistent class.
  +
  +	The accept-locks attribute specifies whether implicit locking should
  +	propagate to this class.  Currently relevant for the ODMG layer only.
  +
  +	The optional initialization-method specifies a no-argument instance
  +	method that is invoked after reading an instance from a database row.
  +	It can be used to do initialization and validations.
  +
  +	The optional factory-class specifies a factory-class that
  +	that is to be used instead of a no argument constructor.
  +	If the factory-class is specified the factory-method
  +	also must be defined.
  +	factory-method refers to a static no-argument method
  +	of the factory-class class.
  +
  +	The refresh attribute can be set to true to force OJB to refresh
  +	instances when loaded from cache. It's set to false by default.
  +  -->
  +<!ATTLIST class-descriptor
  +	class ID #REQUIRED
  +	isolation-level (read-uncommitted | read-committed | repeatable-read |
  +	                 serializable | optimistic) "read-uncommitted"
  +	proxy CDATA #IMPLIED
  +	proxy-prefetching-limit CDATA #IMPLIED
  +	schema CDATA #IMPLIED
  +	table CDATA #IMPLIED
  +	row-reader CDATA #IMPLIED
  +    extends IDREF #IMPLIED
  +	accept-locks (true | false) "true"
  +	initialization-method CDATA #IMPLIED
  +	factory-class CDATA #IMPLIED
  +	factory-method CDATA #IMPLIED
  +	refresh (true | false) "false"
  +>
  +
  +
  +<!--
  +	An extent-class element is used to specify an implementing class or a
  +	derived class that belongs to the extent of all instances of the interface
  +	or base class.
  +  -->
  +<!ELEMENT extent-class (documentation?)>
  +<!--
  +	The class-ref attribute must contain a fully qualified classname.
  +	The repository file must contain a class-descriptor for this class.
  +  -->
  +<!ATTLIST extent-class
  +	class-ref IDREF #REQUIRED
  +>
  +
  +<!--
  +  A field descriptor contains mapping info for a primitive typed
  +  attribute of a persistent class.
  +
  +  A field descriptor may contain custom attribute elements.
  +  -->
  +<!ELEMENT field-descriptor (documentation?, attribute*)>
  +<!--
  +	<b>The id attribute is optional.</b> If not specified, OJB internally
  +	sorts field-descriptors according to their order of appearance in the
  +	repository file.
  +	If a different sort order is intended the id attribute may be used to
  +	hold a unique number identifying the decriptors position in the sequence of
  +	field-descriptors.
  +	The order of the numbers for the field-descriptors must correspond to
  +	the order of columns in the mapped table.
  +
  +	The name attribute holds the name of the persistent classes attribute.
  +	If the PersistentFieldDefaultImpl is used there must be an attribute
  +	in the persistent class with this name.
  +	If the PersistentFieldPropertyImpl is used there must be a JavaBeans
  +	compliant property of this name.
  +
  +	The table attribute may specify a table different from the mapped
  +	table for the persistent class. (currently not implemented).
  +
  +	The column attribute specifies the column the persistent classes field
  +	is mapped to.
  +
  +	The optional jdbc-type attribute specifies the JDBC type of the column.
  +	If not specified OJB tries to identify the JDBC type by inspecting the
  +	Java attribute by reflection.
  +
  +	The primarykey specifies if the column is a primary key column.
  +
  +	The nullable attribute specifies if the column may contain null values.
  +
  +	The indexed attribute specifies if there is an index on this column
  +
  +	The autoincrement attribute specifies if the values for the persistent
  +	attribute are automatically generated by OJB.
  +
  +    The sequence-name attribute can be used to state explicitly a sequence
  +    name used by the sequence manager implementations. Check the docs/javadocs
  +    of the used sequence manager implementation to get information if this
  +    is a mandatory attribute. OJB standard sequence manager implementations
  +    build a sequence name by its own, if the attribute was not set.
  +
  +	The locking attribute is set to true if the persistent attribute is
  +	used for optimistic locking. can only be set for TIMESTAMP and INTEGER
  +	columns.
  +
  +	The updatelock attribute is set to false if the persistent attribute is
  +	used for optimistic locking AND the dbms should update the lock column
  +    itself. The default is true which means that when locking is true then
  +    OJB will update the locking fields. Can only be set for TIMESTAMP and INTEGER
  +	columns.
  +
  +	The default-fetch attribute specifies whether the persistent attribute
  +	belongs to the JDO default fetch group.
  +
  +	The conversion attribute contains a fully qualified class name.
  +	This class must implement the interface
  +	org.apache.ojb.accesslayer.conversions.FieldConversion.
  +	A FieldConversion can be used to implement conversions between Java-
  +	attributes and database columns.
  +
  +	The length attribute can be used to specify a length setting, if
  +	required by the jdbc-type of the underlying database column.
  +
  +	The precision attribute can be used to specify a precision setting, if
  +	required by the jdbc-type of the underlying database column.
  +
  +	The scale attribute can be used to specify a scale setting, if
  +	required by the jdbc-type of the underlying database column.
  +
  +	The access attribute specifies the accessibility of the field.
  +	"readonly" marks fields that are not to modified. "readwrite" marks
  +	fields that may be read and written to. "anonymous" marks anonymous fields.
  +	An anonymous field has a database representation (column) but no
  +	corresponding Java attribute. Hence the name of such a field does not
  +	refer to a Java attribute of the class, but is used as a unique
  +	identifier only.
  +
  +  -->
  +<!ATTLIST field-descriptor
  +	id CDATA #IMPLIED
  +	name CDATA #REQUIRED
  +	table CDATA #IMPLIED
  +	column CDATA #REQUIRED
  +	jdbc-type (BIT | TINYINT | SMALLINT | INTEGER | BIGINT | DOUBLE |
  +	           FLOAT | REAL | NUMERIC | DECIMAL | CHAR | VARCHAR |
  +	           LONGVARCHAR | DATE | TIME | TIMESTAMP | BINARY |
  +	           VARBINARY | LONGVARBINARY | CLOB | BLOB | STRUCT |
  +               ARRAY | REF | BOOLEAN | DATALINK) #IMPLIED
  +	primarykey (true | false) "false"
  +	nullable (true | false) "true"
  +	indexed (true | false) "false"
  +	autoincrement (true | false) "false"
  +    sequence-name CDATA #IMPLIED
  +	locking (true | false) "false"
  +	update-lock (true | false) "true"
  +	default-fetch (true | false) "false"
  +	conversion CDATA #IMPLIED
  +	length CDATA #IMPLIED
  +	precision CDATA #IMPLIED
  +	scale CDATA #IMPLIED
  +	access (readonly | readwrite | anonymous) "readwrite"
  +>
  +
  +
  +<!--
  +  An attribute element allows arbitrary name/value pairs to
  +  be represented in the repository.
  +  -->
  +<!ELEMENT attribute (documentation?)>
  +
  +<!--
  +	The attribute-name identifies the name of the attribute.
  +	The attribute-value identifies the value of the attribute.
  +-->
  +<!ATTLIST attribute
  +	attribute-name CDATA #REQUIRED
  +	attribute-value CDATA #REQUIRED
  +>
  +
  +<!--
  +    A reference-descriptor contains mapping info for an attribute of a
  +    persistent class that is not primitive but references another
  +    persistent entity Object.
  +
  +    A foreignkey element contains information on foreign key columns that
  +    implement the association on the database level.
  +
  +    A reference-decriptor may contain user defined attribute elements.
  +  -->
  +<!ELEMENT reference-descriptor (documentation?, foreignkey+, attribute*)>
  +<!--
  +	The name attribute holds the name of the persistent classes attribute.
  +	If the PersistentFieldDefaultImpl is used there must be an attribute
  +	in the persistent class with this name.
  +	If the PersistentFieldPropertyImpl is used there must be a JavaBeans
  +	compliant property of this name.
  +
  +	The class-ref attribute contains a fully qualified class name.
  +	This class is the Object type of the persistent reference attribute.
  +	As this is an IDREF there must be a class-descriptor for this class
  +	in the repository too.
  +
  +	The proxy attribute can be set to true to specify that proxy based
  +	lazy loading should be used for this attribute.
  +
  +    If the proxy-prefetching-limit attribute (used with the proxy attribute)
  +    is set to the value > 0, then loading of the reference for the first
  +    object of some collection causes loading of the references for
  +    the next proxy-prefetching-limit objects.
  +    Set this parameter to 0 if you want to turn this feature off.
  +
  +	The refresh attribute can be set to true to force OJB to refresh
  +	object references on instance loading.
  +
  +	The auto-retrieve attribute specifies whether OJB automatically retrieves
  +	this reference attribute on loading the persistent object.
  +	If set to false the reference attribute is set to null. In this case the
  +	user is responsible to fill the reference attribute.
  +
  +	The auto-update attribute specifies whether OJB automatically stores
  +	this reference attribute on storing the persistent object.
  +	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  +
  +	The auto-delete attribute specifies whether OJB automatically deletes
  +	this reference attribute on deleting the persistent object.
  +	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  +
  +	The otm-dependent attribute specifies whether the OTM layer automatically
  +    creates the referred object or deletes it if the reference field is set to null.
  +    Also otm-dependent references behave as if auto-update and auto-delete
  +    were set to true, but the auto-update and auto-delete attributes themself
  +    must be always set to false for use with OTM layer.
  +
  +  -->
  +<!ATTLIST reference-descriptor
  +	name CDATA #REQUIRED
  +	class-ref IDREF #REQUIRED
  +
  +	proxy (true | false) "false"
  +	proxy-prefetching-limit CDATA #IMPLIED
  +	refresh (true | false) "false"
  +
  +	auto-retrieve (true | false) "true"
  +	auto-update (true | false) "false"
  +	auto-delete (true | false) "false"
  +	otm-dependent (true | false) "false"
  +>
  +
  +<!--
  +    A foreignkey element contains information on a foreign-key persistent
  +    attribute that implement the association on the database level.
  +  -->
  +<!ELEMENT foreignkey (documentation?)>
  +<!--
  +	The field-id-ref contains the id attribute of the field-descriptor
  +	used as a foreign key.
  +  -->
  +<!ATTLIST foreignkey
  +	field-id-ref CDATA #IMPLIED
  +	field-ref CDATA #IMPLIED
  +>
  +
  +
  +<!--
  +    A collection-descriptor contains mapping info for a Collection- or
  +    Array-attribute of a  persistent class that contains persistent
  +    entity Objects.
  +
  +    The inverse-foreignkey elements contains information on foreign-key
  +    attributes that implement the association on the database level.
  +
  +    The fk-pointing-to-this-class and fk-pointing-to-element-class elements
  +    are only needed if the Collection or array implements a m:n association.
  +    In this case they contain information on the foreign-key columns of
  +    the intermediary table.
  +
  +    A collection-descriptor may contain user defined attribute elements.
  +  -->
  +<!ELEMENT collection-descriptor (
  +    documentation?,
  +    orderby*,
  +    inverse-foreignkey*,
  +	fk-pointing-to-this-class*,
  +	fk-pointing-to-element-class*,
  +	query-customizer?,
  +	attribute*)>
  +
  +
  +<!--
  +	The name attribute holds the name of the persistent classes attribute.
  +	If the PersistentFieldDefaultImpl is used there must be an attribute
  +	in the persistent class with this name.
  +	If the PersistentFieldPropertyImpl is used there must be a JavaBeans
  +	compliant property of this name.
  +
  +	The collection-class may hold a fully qualified class name.
  +	This class must be the Java type of the Collection attribute.
  +	This attribute must only specified if the attribute type is not
  +	a java.util.Collection (or subclass) or Array type.
  +
  +	The element-class-ref attribute contains a fully qualified class name.
  +	This class is the Object type of the elements of persistent collection
  +	or Array attribute.
  +	As this is an IDREF there must be a class-descriptor for this class
  +	in the repository too.
  +
  +	The orderby attribute may specify a field of the element class.
  +	The Collection or Array will be sorted according to the specified attribute.
  +	The sort attribute may be used to specify ascending or descending order for
  +	this operation.
  +
  +	The indirection-table must specify the name of an intermediary table,
  +	if the persistent collection attribute implements a m:n association.
  +
  +	The proxy attribute can be set to true to specify that proxy based
  +	lazy loading should be used for this attribute.
  +
  +    If the proxy-prefetching-limit attribute (used with the proxy attribute)
  +    is set to the value > 0, then loading of the collection for the first
  +    object of some other collection causes loading of the collections for
  +    the next proxy-prefetching-limit objects.
  +    Set this parameter to 0 if you want to turn this feature off.
  +
  +	The refresh attribute can be set to true to force OJB to refresh
  +	object and collection references on instance loading.
  +
  +	The auto-retrieve attribute specifies whether OJB automatically retrieves
  +	this attribute on loading the persistent object.
  +	If set to false the persistent attribute is set to null. In this case the
  +	user is responsible to fill the persistent attribute.
  +
  +	The auto-update attribute specifies whether OJB automatically stores
  +	this reference attribute on storing the persistent object.
  +	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  +
  +	The auto-delete attribute specifies whether OJB automatically deletes
  +	this reference attribute on deleting the persistent object.
  +	This attribute must be set to false if using the OTM, ODMG or JDO layer.
  +
  +	The otm-dependent attribute specifies whether the OTM layer automatically
  +    creates collection elements that were included into the collectionelements
  +    and deletes collection elements that were excluded from the collection.
  +    Also otm-dependent references behave as if auto-update and auto-delete
  +    were set to true, but the auto-update and auto-delete attributes themself
  +    must be always set to false for use with OTM layer.
  +
  +
  +  -->
  +<!ATTLIST collection-descriptor
  +	name CDATA #IMPLIED
  +	collection-class CDATA #IMPLIED
  +	element-class-ref IDREF #REQUIRED
  +	orderby CDATA #IMPLIED
  +	sort (ASC | DESC) "ASC"
  +
  +	indirection-table CDATA #IMPLIED
  +
  +	proxy (true | false) "false"
  +	proxy-prefetching-limit CDATA #IMPLIED
  +	refresh (true | false) "false"
  +
  +	auto-retrieve (true | false) "true"
  +	auto-update (true | false) "false"
  +	auto-delete (true | false) "false"
  +	otm-dependent (true | false) "false"
  +>
  +
  +<!--
  +	an OrderBy elemnent contains an attribute name and a sort order
  +  -->
  +<!ELEMENT orderby (documentation?)>
  +<!ATTLIST orderby
  +	name CDATA #REQUIRED
  +	sort (ASC | DESC) "ASC"
  +>
  +
  +<!--
  +    A inverse-foreignkey element contains information on a foreign-key
  +    persistent attribute that implement the association on the database level.
  +  -->
  +<!ELEMENT inverse-foreignkey (documentation?)>
  +<!--
  +	The field-id-ref contains the id attribute of the field-descriptor
  +	in the class of the collection elements that is used as a foreign key.
  +  -->
  +<!ATTLIST inverse-foreignkey
  +	field-id-ref CDATA #IMPLIED
  +	field-ref CDATA #IMPLIED
  +>
  +
  +<!--
  +    A fk-pointing-to-this-class element contains information on a foreign-key
  +    column of an intermediary table in a m:n scenario.
  +  -->
  +<!ELEMENT fk-pointing-to-this-class (documentation?)>
  +<!--
  +	The column attribute specifies the foreign-key column in the intermediary
  +	table that points to the class holding the collection.
  +  -->
  +<!ATTLIST fk-pointing-to-this-class
  +	column CDATA #REQUIRED
  +>
  +
  +<!--
  +    A fk-pointing-to-element-class element contains information on a foreign-key
  +    column of an intermediary table in a m:n scenario.
  +  -->
  +<!ELEMENT fk-pointing-to-element-class (documentation?)>
  +<!--
  +	The column attribute specifies the foreign-key column in the intermediary
  +	table that points to the class of the collection elements.
  +  -->
  +<!ATTLIST fk-pointing-to-element-class
  +	column CDATA #REQUIRED
  +>
  +
  +
  +<!--
  +	a queryEnhancer element to enhance the 1:n query
  +  -->
  +<!ELEMENT query-customizer (
  +	documentation?,
  +	attribute*)>
  +<!ATTLIST query-customizer
  +	class CDATA #REQUIRED
  +>
  +
  +<!--
  +    An index-descriptor describes an index by listing its columns.  It may be
  +    unique or not.
  +-->
  +<!ELEMENT index-descriptor (documentation?, index-column+)>
  +<!ATTLIST index-descriptor
  +    name CDATA #REQUIRED
  +    unique (true | false) "false">
  +
  +<!--
  +    An index-column is just the name of a column in an index.
  +-->
  +<!ELEMENT index-column (documentation?)>
  +<!ATTLIST index-column
  +    name CDATA #REQUIRED>
  +
  +<!--
  +	Identifies the procedure/function that should be used to handle
  +    insertions for a specific class-descriptor.
  +
  +    The nested 'argument' elements define the argument list for the
  +    procedure/function as well as the source for each argument.
  +
  +    The name attribute identifies the name of the procedure/function to use
  +
  +    The return-field-ref identifies the field-descriptor that will receive
  +    the value that is returned by the procedure/function.  If the procedure/
  +    function does not include a return value, then do not specify a value
  +    for this attribute.
  +
  +    The include-all-fields attribute indicates if all field-descriptors in
  +    the corresponding class-descriptor are to be passed to the procedure/
  +    function.  If include-all-fields is 'true', any nested 'argument'
  +    elements will be ignored.  In this case, values for all field-descriptors
  +    will be passed to the procedure/function.  The order of values that are
  +    passed to the procedure/function will match the order of field-descriptors
  +    on the corresponding class-descriptor.  If include-all-fields is false,
  +    then values will be passed to the procedure/function based on the
  +    information in the nested 'argument' elements.
  +  -->
  +<!ELEMENT insert-procedure
  +	(documentation?, (runtime-argument | constant-argument)*, attribute*)>
  +<!ATTLIST insert-procedure
  +	name CDATA #REQUIRED
  +    return-field-ref CDATA #IMPLIED
  +    include-all-fields (true | false) "false"
  +>
  +
  +<!--
  +	Identifies the procedure/function that should be used to handle
  +    updates for a specific class-descriptor.
  +
  +    The nested 'argument' elements define the argument list for the
  +    procedure/function as well as the source for each argument.
  +
  +    The name attribute identifies the name of the procedure/function to use
  +
  +    The return-field-ref identifies the field-descriptor that will receive
  +    the value that is returned by the procedure/function.  If the procedure/
  +    function does not include a return value, then do not specify a value
  +    for this attribute.
  +
  +    The include-all-fields attribute indicates if all field-descriptors in
  +    the corresponding class-descriptor are to be passed to the procedure/
  +    function.  If include-all-fields is 'true', any nested 'argument'
  +    elements will be ignored.  In this case, values for all field-descriptors
  +    will be passed to the procedure/function.  The order of values that are
  +    passed to the procedure/function will match the order of field-descriptors
  +    on the corresponding class-descriptor.  If include-all-fields is false,
  +    then values will be passed to the procedure/function based on the
  +    information in the nested 'argument' elements.
  +  -->
  +<!ELEMENT update-procedure
  +	(documentation?, (runtime-argument | constant-argument)*, attribute*)>
  +<!ATTLIST update-procedure
  +	name CDATA #REQUIRED
  +    return-field-ref CDATA #IMPLIED
  +    include-all-fields (true | false) "false"
  +>
  +
  +<!--
  +	Identifies the procedure/function that should be used to handle
  +    deletions for a specific class-descriptor.
  +
  +    The nested 'runtime-argument' and 'constant-argument' elements define
  +    the argument list for the procedure/function as well as the source
  +    for each argument.
  +
  +    The name attribute identifies the name of the procedure/function to use
  +
  +    The return-field-ref identifies the field-descriptor that will receive
  +    the value that is returned by the procedure/function.  If the procedure/
  +    function does not include a return value, then do not specify a value
  +    for this attribute.
  +
  +    The include-pk-only attribute indicates if all field-descriptors in
  +    the corresponding class-descriptor that are identified as being part of
  +    the primary key are to be passed to the procedure/function.  If
  +    include-pk-only is 'true', any nested 'argument' elements will be
  +    ignored.  In this case, values for all field-descriptors that are identified
  +    as being part of the primary key will be passed to the procedure/function.
  +    The order of values that are passed to the procedure/function will match
  +    the order of field-descriptors on the corresponding class-descriptor.
  +    If include-pk-only is false, then values will be passed to the procedure/
  +    function based on the information in the nested 'argument' elements.
  +  -->
  +<!ELEMENT delete-procedure
  +	(documentation?, (runtime-argument | constant-argument)*, attribute*)>
  +<!ATTLIST delete-procedure
  +	name CDATA #REQUIRED
  +    return-field-ref CDATA #IMPLIED
  +    include-pk-only (true | false) "false"
  +>
  +<!--
  +    Defines an argument that is passed to a procedure/function.  Each argument
  +    will be set to a value from a field-descriptor or null.
  +
  +    The field-ref attribute identifies the field-descriptor in the corresponding
  +    class-descriptor that provides the value for this argument.  If this attribute
  +    is unspecified, then this argument will be set to null.
  +-->
  +<!ELEMENT runtime-argument
  +	(documentation?, attribute*)>
  +<!ATTLIST runtime-argument
  +	field-ref CDATA #IMPLIED
  +    return (true | false) "false"
  +>
  +<!--
  +    Defines a constant value that is passed to a procedure/function.
  +
  +    The value attribute identifies the value that is passed to the procedure/
  +    function.
  +-->
  +<!ELEMENT constant-argument
  +	(documentation?, attribute*)>
  +<!ATTLIST constant-argument
  +    value CDATA #REQUIRED
  +>
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


Mime
View raw message