License     Codehaus     OpenEJB     OpenJMS     OpenORB     Tyrex     

Main
  Home
  About
  Features
  Download
  Dependencies
  Maven 2 support
  Maven 2 archetypes
  DTD & Schemas
  News Archive
  RSS news feed

Documentation
  Reference guide
  Publications
  JavaDoc
  Project Wiki
  Recent changes

Development/Support
  Mailing Lists
  SVN/JIRA
  Contributing
  Support
  Continuous builds
  Prof. services

Related projects
  Spring ORM support
  Spring XML factories
  WS frameworks

Tools
  Schema generator

More
  The Examples
  3rd Party Tools
  JDO Tests
  XML Tests
  Configuration
 
 

About
  License
  User stories
  Contributors
  Marketplace
  Status, Todo
  Changelog
  Library
  Contact
  Project Name

  



Release notes


Releases


Releases

For all releases prior to 0.9.7, the release notes can be found here.

For all releases prior to 0.9.6, the release notes can be found here.



Release 1.0M4


Description:4th milestone release for Castor 1.0
released:March 23, 2006
managed by:Werner Guttmann

Requirements

Introduced Java 1.4 as a dependecy

This is a reminder that we have started to add some features that more or less depend on features made available with Java 1.4 (only), such as the JDBC 3.0 API enhancements. As such, we have made Java 1.4 a key requirement for the upcoming Castor 1.0 release.

Additions

Updated/Added to XML Documentation

Two new XML how-tos have been added to the XML HOW-TOs page, one on fetching XML dependencies (DTDs and schemas) from JAR files rather than network locations, and one on using identities and references in XML. The XML Mapping documentation was also updated so that the DTD public ID used in examples matches one in Castor's DTDResolver (this aids in fetching the DTD from the Castor JAR rather than the web address).

Added cache implementation for high volunm and high performance

The cache types fifo and lru are based on a set of articles in the O'Reilly Network by William Grosso, to implement a simplified and 1.3-compatible implementation of a Hashbelt algorithm.

Hashbelts are simple, in principle. Instead of walking all objects and finding out when they're supposed to expire, use a "conveyor belt" approach. At any particular point in time, objects going into the cache go into the front of the conveyor belt. After a certain amount of time or when the size limit of a container has been reached, move the conveyor belt - put a new, empty container at the front of the conveyor belt to catch new objects, and the one that drops off of the end of the conveyor belt is, by definition, ready for garbage collection.

As seen in his system, you can use a set of pluggable strategies to implement the actual hashbelt bits. A container strategy allows you to change out the implementation of the container itself - from simple hashtable-based implementations, up through more complex uses of soft referenced or hashset-based implementations, depending on what you need and what you want it to be used for. A pluggable "expire behavior" handler allows you to determine what action is taken on something which drops off of the bottom of the conveyor belt.

As of release 1.0 Castor knows of 11 cache types. To use this cache types, their factories need to be configured in castor.properties file. If you use a custom castor.properties file you need to add the new cache factories to be able to use the new cache types.

#
# Cache implementations
#
org.castor.cache.Factories=\
  org.castor.cache.simple.NoCacheFactory,\
  org.castor.cache.simple.TimeLimitedFactory,\
  org.castor.cache.simple.CountLimitedFactory,\
  org.castor.cache.simple.UnlimitedFactory,\
  org.castor.cache.distributed.FKCacheFactory,\
  org.castor.cache.distributed.JcsCacheFactory,\
  org.castor.cache.distributed.JCacheFactory,\
  org.castor.cache.distributed.CoherenceCacheFactory,\
  org.castor.cache.distributed.OsCacheFactory,\
  org.castor.cache.hashbelt.FIFOHashbeltFactory,\
  org.castor.cache.hashbelt.LRUHashbeltFactory
                

The DTD declaration to configure caching in Castor mapping is as follows:

<!ELEMENT cache-type  ( param* )>
<!ATTLIST cache-type
    type           ( none | count-limited | time-limited | unlimited |
                     coherence | fkcache | jcache | jcs | oscache |
                     fifo | lru ) "count-limited"
    debug          (true|false) "false"
    capacity       NMTOKEN  #IMPLIED>

<!ELEMENT param EMPTY>
<!ATTLIST param
          name   NMTOKEN  #REQUIRED
          value  NMTOKEN  #REQUIRED>

In difference to all other cache types the fifo and lru cache types offer various configuration options. Both of them have 6 parameters to configure their behaviour.

parameterdescription
containers The number of containers in the conveyor belt. For example: If a box will drop off of the conveyor belt every 30 seconds, and you want a cache that lasts for 5 minutes, you want 5 / 30 = 6 containers on the belt. Every 30 seconds, another, clean container goes on the front of the conveyor belt, and everything in the last belt gets discarded. If not specified 10 containers are used by default.
For systems with fine granularity, you are free to use a large number of containers; but the system is most efficient when the user decides on a "sweet spot" determining both the number of containers to be managed on the whole and the optimal number of buckets in those containers for managing. This is ultimately a performance/accuracy tradeoff with the actual discard-from-cache time being further from the mark as the rotation time goes up. Also the number of objects discarded at once when capacity limit is reached depends upon the number of containers.
capacity Maximum capacity of the whole cache. If there are, for example, ten containers on the belt and the capacity has been set to 1000, each container will hold a maximum of 1000/10 objects. Therefore if the capacity limit is reached and the last container gets droped from the belt there are up to 100 objects discarted at once. By default the capacity is set to 0 which causes capacity limit to be ignored so the cache can hold an undefined number of objects.
ttl The maximum time an object lifes in cache. If the are, for example, ten containers and ttl is set to 300 seconds (5 minutes), a new container will be put in front of the belt every 300/10 = 30 seconds while another is dropped at the end at the same time. Due to the granularity of 30 seconds, everything just until 5 minutes 30 seconds will also end up in this box. The default value for ttl is 60 seconds. If ttl is set to 0 which means that objects life in cache for unlimited time and may only discarded by a capacity limit.
monitor The monitor intervall in minutes when hashbelt cache rports the current number of containers used and objects cached. If set to 0 (default) monitoring is disabled.
container-class The implementation of org.castor.cache.hashbelt.container.Container interface to be used for all containers of the cache. Castor provides the following 3 implementations of the Container interface.
-org.castor.cache.hashbelt.container.FastIteratingContainer
-org.castor.cache.hashbelt.container.MapContainer
-org.castor.cache.hashbelt.container.WeakReferenceContainer
If not specified the MapContainer will be used as default.
reaper-class Specific reapers yield different behaviors. The GC reaper, the default, just dumps the contents to the garbage collector. However, custom implementations may want to actually do something when a bucket drops off the end; see the javadocs on other available reapers to find a reaper strategy that meets your behavior requirements. Apart of the default org.castor.cache.hashbelt.reaper.NullReaper we provide 3 abstract implementations of org.castor.cahe.hashbelt.reaper.Reaper interface:
-org.castor.cache.hashbelt.reaper.NotifyingReaper
-org.castor.cache.hashbelt.reaper.RefreshingReaper
-org.castor.cache.hashbelt.reaper.ReinsertingReaper
to be extended by your custom implementation.

A fifo cache with default values explained above is specified by:

<cache-type type="fifo"/>

A lru cache with capacity=300 and ttl=300 is defined by:

<cache-type type="lru" capacity="300"/>

or better by:

<cache-type type="lru"/>
    <param name="capacity" value="300"/>
    <param name="ttl" value="300"/>
</cache-type>

An example of a customized configuration of a fifo cache is:

<cache-type type="fifo"/>
    <param name="container" value="10"/>
    <param name="capacity" value="1000"/>
    <param name="ttl" value="600"/>
    <param name="monitor" value="5"/>
    <param name="container-class" value="org.castor.cache.hashbelt.container.WeakReferenceContainer"/>
    <param name="reaper-class" value="org.castor.cache.hashbelt.reaper.NullReaper"/>
</cache-type>

Code cleanup

We removed following classes and methods that had been deprecated for a while now.

removedreplacement
Throwable CastorException.getException() Throwable CastorException.getClause()
Object Database.load(Class, Object, short) Object Database.load(Class, Object, AccessMode)
void JDOManager.setConfiguration(InputSource) no replacement
QueryResults Query.execute(short) QueryResults Query.execute(AccessMode)
QueryResults Query.execute(short, boolean) QueryResults Query.execute(AccessMode, boolean)
org.exolab.castor.jdo.Utils org.castor.jdo.util.JDOUtils
org.exolab.castor.util.JdoConfFactory org.castor.jdo.util.JDOConfFactory

Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
136820060322Ralf JoachimRalf Joachim Extract creation and execution of SQL satements from SQLEngine.
Reporter: Ralf Joachim
Enh.JDO
136920060323Stoil ValchkovRalf Joachim Fixed NPE in case of extension of union.
Reporter: Stoil Valchkov
BugXML
82420060322Benoit MaisonnyWerner Guttmann Improved exception handling in UnmarshallHandler
Reporter: Benoit Maisonny
BugXML
128120060321Ralf JoachimRalf Joachim Introduced new org.castor.util.Configuration.
Reporter: Ralf Joachim
Enh.All
135620060316Bruce SnyderRalf Joachim Fixed false alarm log message at DatabaseImpl.finalize.
Reporter: Bruce Snyder
BugJDO
136320060316Ralf JoachimRalf Joachim Removed deprecated classes and methods.
Reporter: Ralf Joachim
Enh.All
136420060316Ralf JoachimRalf Joachim Fixed wrong generation of 'setFixed(String)'-method for XSNormalizeStrings.
Reporter: Thomas Lehmann
BugXML
136020060314Werner Guttmann Fixed problem with missing class file in XML jar.
Reporter: Uwe Langbecker
BugXML
86720060315Gregory BlockRalf Joachim Added cache implementation for large cache sizes.
Reporter: Gregory Block
Enh.JDO
134520060315Werner GuttmannWerner Guttmann Refactored redundant code in *DatabaseImpl classes
Reporter: Werner Guttmann
Enh.JDO
108920060308Tim TelcikWerner Guttmann Revised SQL statement used by IdentityKeyGenerator for IBM DB2.
Reporter: Tim Telcik
BugJDO
134520060310Werner GuttmannWerner Guttmann Refactored DatabaseImpl into Local/GlobaldatabaseImpl.
Reporter: Werner Guttmann
BugJDO
135420060314Stephen BashWerner Guttmann Add HOW-TO on using identities and references in XML
Reporter: Stephen Bash
Enh.XML
135320060311Stephen BashWerner Guttmann Fixed incorrect DOCTYPE references in various XML Mapping docs.
Reporter: Stephen Bash
Enh.XML
135220060311Stephen BashWerner Guttmann Add HOW-TO on how to fetch DTDs from JAR file
Reporter: Stephen Bash
Enh.JDO
135020060311Ralf JoachimRalf Joachim Added UTF test of IdentityMap.entrySet.
Reporter: Ralf Joachim
Enh.JDO
134720060310Adam KramerRalf Joachim Fixed issue with XMLDescriptor generating wrong method name 'getElementDefinition' instead of 'isElementDefinition'.
Reporter: Adam Kramer
BugJDO



Release 1.0M3


Description:3rd milestone release for Castor 1.0
released:March 07, 2006
managed by:Werner Guttmann

Requirements

Introduced Java 1.4 as a dependecy

As we have started to add some features that more or less depend on features made available with Java 1.4 (only), such as the JDBC 3.0 API enhancements, we have made Java 1.4 a key requiremnt for the upcoming Castor 1.0 release.

This decision is a result of a discussion on the mailing lists a couple of months ago, where nobody was voicing any objections.

Additions

Added support for OSCache

By specifing

<cache-type type="oscache"/>

at class mapping you can now use OSCache with Castor JDO.

Added 'abstract/concrete' annotation to XMLDescriptor

With this addition, it is now possibel to query whether a particular XML element (represented by an XMLClassDesscriptor internally) is abstract or concrete, that is (in the context of source generation) a result of a <complexType> definition or an <element> declaration. This is particularly relevant for tool providers who need to integrate with Castor XML, and as a result of this addition can now use the new isElementDefinition() method to query an artifact's state.

New XML HOW-TOs added

Added XML HOW-TOs for mapping collections and maps.

Added new SAX2EventProducer interface

Added new org.exolab.castor.xml.SAX2EventProducer interface to allow passing SAX 2 events to Castor XML, deprecating the existing org.exolab.castor.xml.EventProducer interface at the same time. At the same time, a new unmarshal(SAX2EventProducer) method has been added to org.exolab.castor.xml.Unmarshaller, deprecating the existing unmarshal(EventProducer) method at the same time.

Added support for postgreSQL to identity key generator

Added support for the postgreSQL column type 'SERIAL' to the identity key generator. With this change, it's now possible to use the identity key generator with postgreSQL on columns with type 'SERIAL'. Castor internally will issue a call to

   SELECT currval('<table_name>_id_seq')
                

to automatically retrieve the value assigned due to 'SERIAL' column during the insert operation.

Added fully self-contained Castor JDO sample application

Added new ZIP archive to distribution that contains a fully self-contained Castor JDO sample applicationthat runs against an embedded Apache Derby database.

Simply download the the archive, unpack it, and in the target directory created, execute 'java -jar castor-1.0M2-examples.jar' to have the test executed. This will (magically) create a Derby database (on-the-fly) and use it to execute the Castor JDO code against it.

Added additional syntax for specifying identity columns

In addition to the current way of specifying the identity column(s) for a given class, it is now possible to declare a field to be part of the identity as shown below:

  <class name="ctf.jdo.tc1x.Parent">
    <description>Entite one</description>
    <map-to table="tc1x_entity1" xml="entity1" />
    <field name="id" type="integer" identity="true">
      <sql name="id" type="integer"/>
    </field>
    <field name="name" type="string">
      <sql name="name" type="char" />
    </field>
  </class>
                

Added collection type 'iterator' (java.util.Iterator) to Castor JDO

It is now possible to define a one-to-many relation with a collection type of 'iterator'. This allows the access of custom collection classes that are not supported through the standard collection types through Castor JDO.

   <field name="children" type="some.domain.custom.Class" collection="iterator">
      <sql ... />
   </field>
                

Added collection type 'enumerate' (java.util.Enumeration) to Castor JDO

It is now possible to define a one-to-many relation with a collection type of 'enumerate'.

   <field name="children" type="some.domain.custom.Class" collection="enumerate">
      <sql ... />
   </field>
                

Added WeblogicXMLSerializerFactory

To use the Xerces implementation delivered with Weblogic 7 and 8 you have to change castor.properties file to contain the following entry:

# Defines the (default) XML serializer factory to use by Castor,
# which must implement org.exolab.castor.xml.SerializerFactory;
# default is org.exolab.castor.xml.XercesXMLSerializerFactory
org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.wls8.WeblogicXercesXMLSerializerFactory
                

Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
133020060307Ralf JoachimWerner Guttmann Fixed problem with prioritizing delete operations.
Reporter: Raúl Sanz de Acedo Pérez
BugJDO
134120060306August DetlefsenRalf Joachim Fixed issue with bad dates being persisted in Oracle 9.2.
Reporter: August Detlefsen
BugJDO
118620060228Ralf JoachimRalf Joachim Added support for OSCache.
Reporter: Werner Guttmann
Enh.JDO
133320060223Thomas TatzelWerner Guttmann Fixed inconsistency related to not calling setPreserveWhiteSpace(true) in Unmarshaller.unmarshal(Class, Node)
Reporter: Thomas Tatzel
BugXML
96220060223Werner GuttmannWerner Guttmann Improved code quality of DataObjectAccessException.
Reporter: Werner Guttmann
BugJDO
132820060222Adam KramerWerner Guttmann Added property to XMLClassDescriptor to distinguish whether XML artefact represented is abstract/concrete
Reporter: Adam Kramer
EnhXML
115920060222Martin KleppmannWerner Guttmann Fixed problem with range checking in code generated for collections.
Reporter: Martin Kleppmann
BugXML
132920060222Robby PelssersWerner Guttmann Added XML HOW-TOs for mapping collections and maps.
Reporter: Robby Pelssers
EnhXML
132620060221Werner GuttmannWerner Guttmann Added new EventProducer2 interface to allow streaming of SAX 2 events into Castor XML
Reporter: David Leal
EnhXML
112720060221Tim TelcikWerner Guttmann Added support for non-numeric identities to sequence key generator
Reporter: Tim Telcik
EnhJDO
132320060221Ralf JoachimRalf Joachim Fixed failure in MappingTool that always caused a NullPointerException.
Reporter: Stefan Lober
BugXML
99820060217Werner GuttmannWerner Guttmann Added new ZIP file to distribution that contains fully self-containd Castor JDO sample code running against Apache Derby (embedded).
Reporter: Werner Guttmann
EnhJDO
132520060215James AdamsRalf Joachim Added how to wrap a collection with a wrapper element.
Reporter: James Adams
Enh.XML
132420060215Thierry GuerinRalf Joachim Added WeblogicXMLSerializerFactory.
Reporter: Thierry Guerin
Enh.XML
132220060215Werner GuttmannWerner Guttmann Fixed problem in Windows batch files related to directory names with spaces.
Reporter: Stefan Lober
BugJDO
129320060214Ralf JoachimRalf Joachim Fixed NullPointerException in ClassDescriptorImpl caused by Class.getClassLoader() returning null in some situations.
Reporter: Rutger Lubbers
BugXML
123220060214Werner GuttmannWerner Guttmann Added additional snytax for specifying identity columns
Reporter: Werner Guttmann
BugJDO
131420060211Werner GuttmannWerner Guttmann Added Castor JDO collection type 'enumerate' (java.util.Enumeration).
Reporter: Werner Guttmann
BugJDO
132120060211Ralf JoachimRalf Joachim Checkstyled recently added classes under org.castor.jdo.driver.
Reporter: Ralf Joachim
Enh.JDO
131520060210Werner GuttmannWerner Guttmann Added Castor JDO collection type 'iterator' (java.util.Iterator).
Reporter: Werner Guttmann
BugJDO
131620060210Raúl Sanz de Acedo PérezWerner Guttmann Added SQL statement logging support for JDBC CallableStatements
Reporter: Raúl Sanz de Acedo Pérez
BugJDO
131720060210Raúl Sanz de Acedo PérezWerner Guttmann Prevented DatabaseImpl.finalize() from logging when used with global transactions and database pooling enabled.
Reporter: Raúl Sanz de Acedo Pérez
BugJDO
47520060207Werner GuttmannWerner Guttmann Fixed problem with wrongly generated SQL with self-referential objects that are part of an extend hierarchy.
Reporter: Andreas Arrgard
BugJDO
112820060203Werner GuttmannWerner Guttmann Fixed problem related to the use of 'depend' relations and identity key generators. At the same time, support for postgreSQL has been added to the identity key generator.
Reporter: Nick Stuart
BugJDO
131020060206Werner GuttmannWerner GuttmannAdded identity key generator support for Borland Pointbase to Castor JDO.
Reporter: Werner Guttmann
BugJDO



Release 1.0M2


Description:2nd milestone release for Castor 1.0
released:Febraury 03, 2006
managed by:Werner Guttmann

Additions

Support for java.util:list as collection type

Added support for java.util.List as collection type for Castor XML.

Support for Borland Pointbase

Support for Borland's Pointbase has been added. For initial information about configuration of Castor JDO for the use with Borland's Pointbase, please see src/tests/jdo/pointbse.xml.

Added isLocked (CLass, Object) method to Database interface

This new method allows to check, whether a particular object (as identified by the object identity and the object class) is currently locked with Castor JDO.

Added documentation about Castor JDO Persistence interface

Added a section about the various methods available on the Persistence interface to the HTML docs.

Allowed case insensitive lookups of enumerated type values

With 'case-insensitive' commandline option of source generator you are now able to instruct Castor to use case insensitive lookups for enumerated type values.

Changes

As a result of this refactoring, we had to change the way a XMLSerializer is created (instantiated). Rather than letting Castor know about the XMLSerializer to use, as in

# Defines the default XML serializer to be used by castor
# The serializer must implement org.apache.xml.serialize.Serializer
#
org.exolab.castor.serializer=org.apache.xml.serialize.XMLSerializer
                

the user is now required to specify an XMLSerialzer factory as follows:

# Defines the (default) XML serializer factory to use by Castor,
# which must implement org.exolab.castor.xml.SerializerFactory;
# default is org.exolab.castor.xml.XercesXMLSerializerFactory
org.exolab.castor.xml.serializer.factory=org.exolab.castor.xml.XercesXMLSerializerFactory
                

As of this release, we only support the XercesXMLSerializerFactory as shown above, but provide users with three new interfaces (namely Serializer,OutputFormat and XMLSerializerFactory) that need to be implemented to support any other's XML parser custom serialization mechanism.

Refactored cache into new org.castor.cache package

Take care to adjust your custom castor.properties file to reflect the changed packages of CacheFactories.

#
# Cache implementations
#
org.castor.cache.Factories=\
  org.castor.cache.simple.NoCacheFactory,\
  org.castor.cache.simple.TimeLimitedFactory,\
  org.castor.cache.simple.CountLimitedFactory,\
  org.castor.cache.simple.UnlimitedFactory,\
  org.castor.cache.distributed.FKCacheFactory,\
  org.castor.cache.distributed.JcsCacheFactory,\
  org.castor.cache.distributed.JCacheFactory,\
  org.castor.cache.distributed.CoherenceCacheFactory
                

Note: By also moving CacheFactoryRegistry to org.castor.cache package the property has been renamed from 1.0M1 a second time.

Changed syntax of cache definition in mapping

The DTD declaration is as follows:

<!ELEMENT cache-type  ( param* )>
<!ATTLIST cache-type
    type           ( none | count-limited | time-limited | unlimited |
                     coherence | fkcache | jcache | jcs ) "count-limited"
    debug          (true|false) "false"
    capacity       NMTOKEN  #IMPLIED>

<!ELEMENT param EMPTY>
<!ATTLIST param
          name   NMTOKEN  #REQUIRED
          value  NMTOKEN  #REQUIRED>

The new syntax is still backward compatible to the old one but allows to enable debugging of cache access for a specific class as well as passing individual configuration parameters to each cache instance. Only count-limited and time-limited of the current cache types support parameters. Parameter names are case sensitive and are silently ignored if they are unknown to a cache type.

It need to be noted that there are 3 parameter names that are reserved for internal use. If you specify a parameter with one of the names: type, name or debug their value will silently be overwritten with another one used internally.

A count-limited least-recently-used cache (LRU) for 500 objects can be specified by:

<cache-type type="count-limited" capacity="500"/>

or

<cache-type type="count-limited"/>
    <param name="capacity" value="500"/>
</cache-type>

If both, the capacity attribute and parameter with name="capacity" is specified, the parameter value takes precedence over the attribute value.

A time-limited first-in-first-out cache (FIFO) that expires objects after 15 minutes can be specified by:

<cache-type type="time-limited" capacity="900"/>

or

<cache-type type="time-limited"/>
    <param name="ttl" value="900"/>
</cache-type>

If both, the capacity attribute and parameter with name="ttl" is specified, the parameter value takes precedence over the attribute value.

The debug attribute can be used to enable debugging for objects of a single class only, as described below.

Added debugging of cache access

If you like to get debug messages for every access to cache independend of the caches type or the class of the object that is accessed you only need to set logging level of org.castor.cache to debug. As this may lead to lots of debug messages, you are not interested in, there are 2 options to reduce the number of the messages.

If you are interested in all accesses to a specific cache type you set the logging level of this implementation to debug.

To get debug messages of accesses to objects of a specific class there are 2 things you need to do. To be able to get debug messages at all you need to set logging level of org.castor.cache.Cache to debug first. Then you only need to set the debug attribute of the class you are interested in to true in the mapping.

Note: By allowing to pass individual configuration properties from mapping to cache we again changed the way debugging is enabled. The property in castor.properties file from relaese 1.0M1 is no longer supported.


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
131020060206Werner GuttmannWerner Guttmann Added identity key generator support for Borland Pointbase to Castor JDO.
Reporter: Werner Guttmann
BugJDO
130520060201Werner GuttmannWerner Guttmann Added support for Borland Pointbase to Castor JDO.
Reporter: John
BugJDO
123820060202Ulrich PostRalf Joachim Allowed restricting an complexType with complexContent to complexType with simpleContent.
Reporter: Ulrich Post
Enh.XML
90320060131Werner GuttmannWerner Guttmann Added documentation about Castor JDO Persistence interface.
Reporter: Werner Guttmann
BugJDO
128820060130Will McKinleyRalf Joachim Allowed case insensitive lookups for enumerated type values.
Reporter: Will McKinley
Enh.XML
130820060130Werner GuttmannRalf Joachim Fixed NullPointerException in MappingTool.
Reporter: Mike Wannamaker
BugXML
78520060129Werner GuttmannWerner Guttmann Move class loading code for Castor JDO to a single utility class
Reporter: Werner Guttmann
BugJDO
128220060127Stephen BashWerner Guttmann Added HOW-TO document for enabling XML parser validation.
Reporter: Stephen Bash
BugEnh.
113920060127Werner GuttmannWerner Guttmann Added Database.isLocked(Class, Object) method.
Reporter: Andre Teubner
BugJDO
130420060127Clovis WichoskyRalf Joachim Fixed some errors in some XML files.
Reporter: Clovis Wichosky
BugAll
126820060124Werner GuttmannWerner Guttmann Replaced incorrect use of URL.toString() with URL.toExternalForm().
Reporter: Trygve Laugstol
BugXML
37920060124Werner GuttmannWerner Guttmann Improved exception handling by chaining original exception.
Reporter: Nicolas Marchildon
BugJDO
126720060121Bill LengRalf Joachim Fixed bug in SourceGenerator that caused xsd:enumeration values for NMTOKENS and integer being created with wrong type.
Reporter: Bill Leng
BugXML
130320060121Ralf JoachimRalf Joachim Code cleanup at SQLEngine.
Reporter: Ralf Joachim
Enh.JDO
130120060119Werner GuttmannWerner Guttmann De-deprecated getDatabasePooling() and setDatabasePooling(boolean) methods.
Reporter: Raúl Sanz de Acedo Pérez
BugJDO
129220060118Werner GuttmannWerner Guttmann Fixed problem with SQL generated for classes that are part of an extend hierarchy.
Reporter: Lorenzo Dematte
BugJDO
127320060108Werner GuttmannWerner Guttmann Removed compile & runtime dependencies for Apache Xerces.
Reporter: Werner Guttmann
BugXML
130020060114Ralf JoachimRalf Joachim Fixed NPE in SourceCodeGenerator.
Reporter: Jason Boutwell
BugXML
127220060113Kevin TaylorWerner Guttmann Added support for List interface during marshalling of collections
Reporter: Kevin Taylor
BugXML
129920060107Ralf JoachimRalf Joachim Allowed to specify individual parameters for cache initialization in mapping.
Reporter: Ralf Joachim
Enh.JDO
128020060106Ralf JoachimRalf Joachim Made CacheRegistry non static.
Reporter: Ralf Joachim
Enh.JDO
129820060105Ralf JoachimRalf Joachim Added ReadWriteLock's and ConcurrentHashMap from Doug Lea.
Reporter: Ralf Joachim
Enh.All
55120060104Stein M. HugubakkenRalf Joachim Removed exception-dependency in Parser and Lexer including some code improvements.
Reporter: Stein M. Hugubakken
Enh.JDO
128920051231Werner GuttmannRalf Joachim Fixed problem with generated ClassChoice instances.
Reporter: Werner Guttmann
BugXML
121820051228Werner GuttmannWerner Guttmann Moved all script/batch files to new bin directory.
Reporter: Werner Guttmann
Enh.All



Release 1.0M1


Description:Milestone release for Castor XML and JDO
released:December 22, 2005
managed by:Werner Guttmann

New features

Support for collections of type 'SortedSet' (incl. use of Comparator)

Support has been added for the new collection type 'sortedset'. This allows users of Castor (XML and JDO) to use collections of type java.util.SortedSet to allow for automatic ordering of the collection upon e.g. insertion of the data.

User can either specify a java.util.Comparator instance using the comparator attribute on the field mapping, or make the entities stored within the SortedSet implement java.util.Comparable.

Changes

Moved JDO configuration from org.exolab.castor to org.castor package

With this refactoring JDOConfFactory has also been moved from org.exolab.castor.jdo.util to org.castor.jdo.util package. In addition we allowed to specify a name attribute on the jdo-conf tag that will be used in future to distinguish between different configurations.

Refactored cache into new org.castor.cache package

Take care to adjust your custom castor.properties file to reflect the changed packages of CacheFactories.

#
# Cache implementations
#
org.castor.jdo.cacheFactories=\
  org.castor.cache.simple.NoCacheFactory,\
  org.castor.cache.simple.TimeLimitedFactory,\
  org.castor.cache.simple.CountLimitedFactory,\
  org.castor.cache.simple.UnlimitedFactory,\
  org.castor.cache.distributed.FKCacheFactory,\
  org.castor.cache.distributed.JcsCacheFactory,\
  org.castor.cache.distributed.JCacheFactory,\
  org.castor.cache.distributed.CoherenceCacheFactory
                

Added debugging of cache access

By setting the property org.castor.jdo.cacheDebug to true you are able to get debug messages for every cache access in the configured log.

#
# True if proxy class should be used to debug access to cache
# (default: false).
#
#org.castor.jdo.cacheDebug=false
                

Moved transaction manager from org.exolab.castor to org.castor package

Take care to adjust your custom castor.properties file to reflect the changed packages of TransactionManagerFactories.

#
# TransactionManagerFactory implementations
#
org.castor.transactionmanager.Factories=\
  org.castor.transactionmanager.WebSphereTransactionManagerFactory,\
  org.castor.transactionmanager.WebSphere5TransactionManagerFactory,\
  org.castor.transactionmanager.WebSphere51TransactionManagerFactory,\
  org.castor.transactionmanager.LocalTransactionManagerFactory,\
  org.castor.transactionmanager.JNDIENCTransactionManagerFactory,\
  org.castor.transactionmanager.JOTMTransactionManagerFactory
                

In addition a new property has been introduced that allows to configure if the transaction manager shell be acquired instantly when he is registered or lazy when it is needed for the first time.

#
# Shell the TransactionManager be initialized at registration or lazily when
# requested for the first time? Defaults to false.
#
org.castor.transactionmanager.InitializeAtRegistration=false
                

Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
127420051219Ralf JoachimRalf Joachim Made TransactionManagerRegistry non static and moved it to org.castor.transactionmanager package.
Reporter: Ralf Joachim
Enh.JDO
71920051213Ralf JoachimRalf Joachim Added serialVersionUID to serializable classes.
Reporter: Gregory Block
BugAll
127920051206Dave BrosiusRalf Joachim Removed some unnecessary object constructions and removed manual array copy.
Reporter: Dave Brosius
Enh.All
127820051206Dave BrosiusRalf Joachim Allowed java to be on a path with spaces.
Reporter: Dave Brosius
Enh.All
124020051206Werner GuttmannWerner Guttmann Added support for specifying a java.util.Comparator instance for sortedset collections.
Reporter: Werner Guttmann
Enh.JDO
123020051201Ralf JoachimRalf Joachim Refactored cache to implement java.util.Map interface into new org.castor.cache package.
Reporter: Ralf Joachim
Enh.JDO
127120051201Werner GuttmannWerner Guttmann Fixed problem with special mappings that have a 'foreign' relation as first field mapping.
Reporter: Sean
BugJDO
117120051126Stein M. HugubakkenRalf Joachim Refactored SQLTypes into SQLTypeInfos and SQLTypeConverters.
Reporter: Stein M. Hugubakken
Enh.JDO
126520051125Werner GuttmannWerner Guttmann Fixed problem with OQL queries and CALL SQL statements
Reporter: Sean
Bug.JDO
76620051124Stein M. HugubakkenRalf Joachim Refactored TransactionContext into an interface and global/local implementations.
Reporter: Stein M. Hugubakken
Enh.JDO
126420051124Ralf JoachimRalf Joachim Resolved problem with keygenerator RETURNING.
Reporter: Helene Wiebe
BugJDO
123320051021Werner GuttmannWerner Guttmann Added support for collections of type java.util.SortedSet.
Reporter: Werner Guttmann
Enh.All
126620051119Ralf JoachimRalf Joachim Move org.exolab.castor.jdo.conf to org.castor.jdo.conf.
Reporter: Ralf Joachim
Enh.JDO



Release 0.9.9.1


Description:Maintenance release for Castor XML and JDO
released:November 15, 2005
managed by:Werner Guttmann

New features

Added support for JOTM as transaction manager

Added support for JOTM as transaction co-ordinator. As a result, the following transaction managers are supported.

NameDescription
jndiTM looked up in the JNDI ENC
websphereIBM WebSphere 4 and previous releases
websphere5IBM WebSphere 5
websphere51IBM WebSphere 5.1
jotmJava Object Transaction Monitor

Improved Database.getIdentity(Object)

The new implementation of the Database.getIdentity(Object) does not rely on the object being loaded in the same transaction anymore. It is even not required to have an active transaction. The identity will now be determined by calling the getters of the fields defined as identities in the mapping. If a mapping for the objects class could not be found a ClassNotPersistenceCapableException will be thrown. Null is only returned if the objects identity is null.

Note:Care should be take if you previously used the null return of Database.getIdentity(Object) to determine if the object has been loaded in the current transaction before.

Added helper method to close database

Added org.castor.jdo.util.JDOUtils.closeDatabase() method to close an open database instance without throwing exceptions. Any active transaction will be silently rolled back.

Bugs

Improved 'caching' of Castor DTDs/XML Schemas

Added code to DTDResolver so that any URL/URIs against http://castor.codehaus.org/... will be resolved against (local) files from within the Castor JAR(s).

Problem obtaining underlying JDBC connections

Fixed a problem with obtaining the underlying JDBC connection used by Castor internally when there was no valud transaction. The code has been changed so that a PersistenceException will be thrown to indicate the lack of a valid transaction.


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
102420051230Ross VirostkoRalf Joachim Fixed issue where whitespace have been deleted by Unmarshaller.
Reporter: Peter Wyngaard
BugXML
124120051113Ralf JoachimRalf Joachim Improved documentation about locking modes.
Reporter: Vish Madan
Enh.JDO
124720051112Vish MadanWerner Guttmann Fixed problem with releasing object lock due to a LockNotGrantedException.
Reporter: Vish Madan
BugJDO
123920051110Ralf JoachimRalf Joachim Improved Database.getIdentity(Object) to be able to resolve identity without relying on the object been loaded from the database in the same transaction.
Reporter: Henk van Voorthujsen
Enh.JDO
126020051110Ralf JoachimRalf Joachim Added org.castor.jdo.util.JDOUtils.closeDatabase() helper method.
Reporter: Ralf Joachim
Enh.JDO
125920051110Ralf JoachimRalf Joachim Refactored org.exolab.castor.jdo.Utils into org.castor.jdo.util.JDOUtils.
Reporter: Ralf Joachim
Enh.JDO
124920051107Ralf JoachimRalf Joachim Included new implementations of Base64Encoder/-Decoder with castor-0.9.9-xml.jar.
Reporter: Ralf Joachim
BugXML
125320051105SeanWerner Guttmann Fixed problem with with using count() in OQL queries that involve extend relations.
Reporter: Sean
BugJDO
125420051103SeanWerner Guttmann Added support for distinct keyword in count() functions.
Reporter: Sean
New featureJDO
125620051103Martin GraneyWerner Guttmann Added non-trivial sample for usage of binding file
Reporter: Martin Graney
AdditionXML
122320051020Werner GuttmannWerner Guttmann Added TransactionManagerFactory for JOTM.
Reporter: Werner Guttmann
New featureJDO
122020051013Werner GuttmannWerner Guttmann Added config entries for http://castor.codehaus.org/* to DTDResolver.
Reporter: Ralf Joachim
BugJDO
121920051012Werner GuttmannWerner Guttmann Changed many references to http://castor.exolab.org to http://castor.codehaus.org
Reporter: Ralf Joachim
BugAll
122420051013Werner GuttmannWerner Guttmann Fixed problem with obtaining JDBC connection when no transaction in progress.
Reporter: Brian Schlining
BugJDO
123120051013Werner GuttmannWerner Guttmann Fixed problem with SQL generated for OQL queries where only id fields are present.
Reporter: Minh Tran-LeJeremy Whitlock
BugJDO
121620051011Keith ViscoKeith Visco Generated java source files won't compile.
Reporter: Bill Leng
BugXML
115320051010Keith ViscoKeith Visco Unable to generate binding using SourceGen.
Reporter: Neil Taylor
BugXML
115220051010Andrew FawcettDavid Green PropertyChangeListeners for bound properties should not be serialized.
Reporter: David Green
BugXML



Release 0.9.9


Description:Feature release for Castor XML and JDO
released:September 22, 2005
managed by:Werner Guttmann

Download & installation instructions

This is the final 0.9.9 release, a feature release for Castor JDO and XML.

Please note that we are providing the usual suspects (binaries, docs and sources) for this release at the Codehaus.

We are currently planning for a Castor 1.0 release in about 8+ weeks, which we mainly see as a bug fix release and a one-time opportunity to get the HTML documentation into a better shape .. ;-).

Please note that we have - in addition to the features added and bugs fixed as documented with 0.9.9M1 and 0.9.9M2 - started to makes substantial changes to the project documentation as follows:

-Addition of the first Castor JDO HOW-TO pages
-Addition of an initial (hence draft) Castor JDO best practice document
-Addition of a Castor JDO feature page

As mentioned above, these pages are work in progress and shall be expanded for the upcoming 1.0 release.


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
121520050919Gregory BlockRalf Joachim Fixed JDO.getDatabase()NullPointerException.
Reporter: Jeremy Whitlock
BugJDO



Release 0.9.9M2


Description:2nd Milestone release for 0.9.9
released:Sep 13, 2005
managed by:Werner Guttmann

Download & installation instructions

Please note that we are providing the usual suspects (binaries, docs and sources) for this release at the Codehaus. We recommend, though, to download the complete package, as the HTML docs at the main Castor site has not been updated, and to build the documentation yourself.

Preparations for the final release have started. Since the last release candidate, the following problem areas have been addressed.


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
121020050907Werner GuttmannWerner Guttmann Removed references to Poolman from documentation on pooling. BugJDO
119520050908Nicholas StuartWerner Guttmann Integrated original test case provided into Castor CTF. BugJDO
120720050907Clovis WichoskyRalf Joachim Prefer to use setter with reference type before setter with primitive type if multiple setters are available.
Reporter: Clovis Wichosky
BugJDO
119520050905Werner GuttmannWerner Guttmann Fixed problem with class resolution during loading polymorphic objects. BugJDO
107120050901Werner GuttmannWerner Guttmann Added marketplace section EnhGeneral



Release 0.9.9M1


Description:Milestone release for 0.9.9
released:Aug 24, 2005
managed by:Werner Guttmann

Download & installation instructions

Please note that we are providing the usual suspects (binaries, docs and sources) for this release at the Codehaus. We recommend, though, to download the complete package, as the HTML docs at the main Castor site has not been updated, and to build the documentation yourself.

Changes

Support for polymorphism

Support for polymorphism has been completely rewritten, allowing you to load objects that are part of an extend relationship by their base types, with Castor JDO returning the actual (leaf) classes.

With the following class hierarchy ...

-Server extends Computer
-Laptop extends Computer
-Computer extends Product

it will be possible to execute OQL queries as follows:

SELECT product FROM Product product
                

and Castor JDO will return the actual Laptop and Server instances. For a complete set of code examples, please review src/tests/ctf/jdo/tc9x/TestPolymorphism.java.

Updated MANIFEST files

Both castor-0.x.y.jar and castor-0.x.y-xml.jar now carry an updated and up-to-date MANIFEST file.

New features

Support for Derby

Support for Apache Derby (starting with release 10.1.1.0) has been added. For initial information about configuration of Castor JDO for the use with Apache Derby, please see src/tests/jdo/derby.xml.

Known issues:
-No support for LIMIT clause
-No support for identity key generator (temporarily)
-No support for SELECT .. FOR UPDATE statements.

Added support for distributed caches

As of this release, four new cache types have been added:

  1. Tangosol Coherence (coherence)
  2. JCache (jcache)
  3. FKCache (fkcache)
  4. JCS (jcs)

As some of these cache implementations allow you to use it in a distributed mode, this allows Castor JDO to be used in a clustered (multi-JVM) environment. In such an environment, Castor JDO wil make use of the underlying cache provider to replicate/distribute the cache content between the various JDOManager instances.

Support for transient attribute for <sql> mappings

Support for the transient attribute has been added to the <sql> element has been added. This allows you to define a field mapping as follows:

<field name="prop1" type="string">
   <sql name="prop_1" transient="true" />
   <bind-xml name="property1" />
</field>
                

allowing you to include a field for XML un-/marshalling, but exclude it from persistence.

Support for typesafe enumerations

Enumerations are a common method for ensuring data integrity, both in software and in relational databases. As a platform for linking the two, we added support for persisting class fields whose type is a Java typesafe enumeration to Castor JDO.

To use this new feature your typesafe enumeration should follow the enum pattern commonly used and provide a static valueOf(String) method. An enum of different kinds of computer equipment may look like:

public class KindEnum {
    private static final Map KINDS = new HashMap();

    public static final KindEnum MOUSE = new KindEnum("Mouse");
    public static final KindEnum KEYBOARD = new KindEnum("Keyboard");
    public static final KindEnum COMPUTER = new KindEnum("Computer");
    public static final KindEnum PRINTER = new KindEnum("Printer");
    public static final KindEnum MONITOR = new KindEnum("Monitor");

    private final String _kind;

    private KindEnum(final String kind) {
        _kind = kind;
        KINDS.put(kind, this);
    }

    public static KindEnum valueOf(final String kind) {
        return (KindEnum) KINDS.get(kind);
    }

    public String toString() { return _kind; }
}
                

At your Product class you may want to have a property that tells you what kind of computer equipment a product is of.

public class Product {
    private int         _id;
    private String      _name;
    private KindEnum    _kind;

    public Product() { }

    public int getId() { return _id; }
    public void setId(int id) { _id = id; }

    public String getName() { return _name; }
    public void setName(String name) { _name = name; }

    public KindEnum getKind() { return _kind; }
    public void setKind(KindEnum kind) { _kind = kind; }
}
                

Your mapping for the Product class should be:

<class name="Product" identity="id">
  <description>Product with kind enum</description>
  <map-to table="enum_prod"/>
  <field name="id" type="integer">
    <sql name="id" type="integer"/>
  </field>
  <field name="name" type="string">
    <sql name="name" type="char"/>
  </field>
  <field name="kind" type="KindEnum">
    <sql name="kind" type="char"/>
  </field>
</class>
                

To add this new feature we added an additional check when searching for field types. Like before Castor first searches for know types and thereafter for a mapping for the class you specified as type. If both of them do not match it now checks if the class specified as type is available at classpath and has a static valueOf(String) method. Only if all of this conditions are met it will be viewed as a valid mapping.

Parametrized boolean->char type converter

Pre patch we always returned a boolean value even if the database contained a value which does not conform to the rules defined. This behaviour caused that we could load records with wrong values without problems but got a ObjectModifiedException when we tried to update these values as our update statment includes checking of all old values in the where clause of SQL statement.

With the patch this behavier changes to strict checking if the loaded char/string value matches one of the boolean characters defined by conversion rule. If the value does not match a ClassCastException explaing the fail reason will be thrown.

Performance improvements

Several code areas of Castor JDO have been severly refactored or rewritten from scratch, leading to some significantly improved runtime performance. This includes amongst others a reduced execution time when dealing with a large number of entities loaded as part of a single transaction, etc.


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
120420050823Werner GuttmannWerner Guttmann Added release notes for 0.9.9M1. BugGeneral
99920050823Ralf JoachimRalf Joachim Added ant targets to to check code conventions with checkstyle.
Reporter: Ralf Joachim
Enh.ALL
120320050823Ralf JoachimRalf Joachim Calculation of priority to execute create and delete statements at commit returns wrong results when no keygen is used or class depends/extends another.
Reporter: Ralf Joachim
BugJDO
92020050822Werner GuttmannWerner Guttmann Changed argument handling code. BugJDO
115120050821Werner GuttmannWerner Guttmann Completely refactored ClassMolder, introducing strategy objects for field resolution. Enh.JDO
113220050817Michael WestbayKeith Visco Added additional check for various built-in types when deciding whether or not to use the parent classes namespace if no local namespace has been defined.
Reporter: Michael Westbay
BugXML
117920050817Ralf JoachimRalf Joachim Refactored how transaction managers are maintained.
Reporter: Ralf Joachim
Enh.JDO
115820050808Ralf JoachimRalf Joachim Stricter checking at type conversion from string to boolean.
Reporter: Nick Stuart
BugJDO
94320050806Ralf JoachimRalf Joachim Created a test case for configuring JDO DataSource using a Properties collection.
Reporter: Martin Fuchs
BugJDO
119020050806Ralf JoachimRalf Joachim Fix syntax failures in sapdb.sql script and improve sapdb test coverage.
Reporter: Ralf Joachim
BugJDO
118520050805Ralf JoachimRalf Joachim Replaced MimeBase64Encoder/Decoder with new implementation Base64Encoder/Decoder.
Reporter: Bruce Snyder
Enh.All
79920050805Werner GuttmannWerner Guttmann Refactored MANIFEST files and their usage within Castor Enh.JDO
110220050801Werner GuttmannWerner Guttmann Added support for various distributed caches. Enh.JDO
30020050730Ralf JoachimRalf Joachim JDO support for typesafe enumerations.
Reporter: Rhett Sutphin
Enh.JDO
117820050803Werner GuttmannWerner Guttmann Added code to set identity upon registering objects with ObjectTracker BugJDO
118320050803Ralf JoachimRalf Joachim Allow to initialize JDOManager with a preconfigured DataSource.
Reporter: Ralf Joachim
Enh.JDO
117320050801Gregory BlockRalf Joachim Solved problem using JDOConfFactory and transaction demarcation specification.
Reporter: Gregory Block
BugJDO
75520050731Ralf JoachimRalf Joachim Place all JDO unit tests in a new src/tests/utf/org/exolab/castor/ tree.
Reporter: Bruce Snyder
Enh.JDO
111420050731Ralf JoachimRalf Joachim Update docs on the limit clause support for OQL.
Reporter: Bruce Snyder
Enh.JDO
116920050727Werner GuttmannWerner Guttmann Refactored access to caches, adding CacheEntry class and making OID and CacheEntry implement java.io.Serializable. Enh.JDO
77820050725Werner GuttmannWerner Guttmann Remove deleteExtend method from ClassMolder. BugJDO
113520050724Ralf JoachimRalf Joachim Refactor how JDBC connection factories are maintained.
Reporter: Werner Guttmann
Enh.JDO
101820050715Werner GuttmannWerner Guttmann Added support for polymorphism. Enh.JDO
111020050705Ralf JoachimRalf Joachim Refactor CTF-JDO tests into subdirectories (part 2).
Reporter: Ralf Joachim
Enh.JDO
87420050703Werner GuttmannWerner Guttmann Added DB2 category to src/tests/tests.xml. BugJDO
108520050620Gregory BlockWerner Guttmann Complete rewrite of TransactionContext with regards to obejct tracking. Enh.JDO
115520050617Werner GuttmannWerner Guttmann Added org.castor package to src/main. Enh.JDO
73220050616Ralf JoachimRalf Joachim Added performance test-suite for 1:n relations of JDO.
Reporter: Stein M. Hugubakken
Enh.JDO
35220050615Werner GuttmannWerner Guttmann Added support for transient attribute at the <sql> element. Enh.JDO
63320050614Werner GuttmannWerner Guttmann Removed hidden catch-block in LockEngine.updateCache().
Reporter: Stein M. Hugubakken
Ref.JDO



Release 0.9.7


Description:Maintenance release for Castor XML and JDO
released:June 8, 2005
managed by:Werner Guttmann

Download & installation instructions

This is the final 0.9.7. release, mainly a maintenance release. We are currently planning the next release which will be Castor 0.9.9, a feature release.

Changes

Moved key generators to jdo.keygen package

Whilst this change is non-intrusive per se, please note that you might have to change a local castor.properties file if you happened to re-specify key generators in there.

Fixed problem with multiple <database> configurations

Support for multiple database configurations has been re-enabled.


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
114720050607Werner GuttmannWerner Guttmann Reverted addition to src/tests/jdo/Collections due to problem with missing setItem(ArrayList). BugGeneral
113820050530Werner GuttmannWerner Guttmann Moved key generators to jdo.keygen package. BugGeneral
88120050530Nick StuartRalf Joachim JDOManager can now handle more then one jdo-conf.
Reporter: Nick Stuart
BugJDO
113120050525Werner GuttmannWerner Guttmann Update project documentation. BugGeneral

For all the releases prior to 0.9.7, the release notes can be found at here or here.

 
   
  
   
 


Copyright © 1999-2005 ExoLab Group, Intalio Inc., and Contributors. All rights reserved.
 
Java, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. XML, XML Schema, XSLT and related standards are trademarks or registered trademarks of MIT, INRIA, Keio or others, and a product of the World Wide Web Consortium. All other product names mentioned herein are trademarks of their respective owners.