License     Codehaus     OpenEJB     OpenJMS     OpenORB     Tyrex     
 

Old releases
  General
  Release 1.2
  Release 1.3rc1

Main
  Home
  About
  Features
  Download
  Dependencies
  Reference guide
  JavaDoc
  Maven 2 support
  Maven 2 archetypes
  DTD & Schemas
  Recent HTML changes
  News Archive
  RSS news feed

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

Related projects
  Spring ORM support
  Spring XML factories
  WS frameworks

XML
  XML

XML Code Generator
  XML Code Generator

JDO
  Introduction
  First steps
  Using JDO
  JDO Config
  Types
  JDO Mapping
  JDO FAQ
  JDO Examples
  JDO HOW-TOs
  Tips & Tricks
  Other Features
  JDO sample JAR

Tools
  Schema generator

Advanced JDO
  Caching
  OQL
  Trans. & Locks
  Design
  KeyGen
  Long Trans.
  Nested Attrs.
  Pooling Examples
  LOBs
  Best practice

DDL Generator
  Using DDL Generator
  Properties
  Ant task
  Type Mapping

More
  Presentations
  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.6, the release notes can be found here.



Release SVN


Description:New and on-going development
released:tbd
managed by:Werner Guttmann

Changes

Support for Ant as build tool dropped

For various reasons, support for Ant as build tool has been dropped altogether. Please switch to use Maven 2, with the relevant project-specific details available at here.

Please note that the code base still includes Ant build files. Please do not use them! Ant files in the trunk are in the process of being removed, though this will take us some time.

*Configuration have been replaced by *Properties

The classes CoreConfiguration, XMLConfiguration and CPAConfiguration have been replaced by CoreProperties, XMLProperties and CPAProperties respectively. For backward compatibility we have kept the *Configuration classes and declared them deprecated. As we intend to remove *Configuration classes with next Castor release we encourage you to change your code to use *Properties instead.

Additions

New system property for specifying location of custom Castor XML properties

A new option has been added to specify the location of a custom Castor properties file by the means of a system property. This alters the sequence with which Castor XML searches for a custom properties as weil.

To specify the location of a Castor XML property file by using a system property, please use ....

> java -Dorg.castor.user.properties.location=/home/user/user.properties
                


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
263020090205Joachim GrueneisJoachim Grueneis Marshaller performance - loadDefaultProperties
Reporter: Michael McMaster
Enh.XML
261420090205Joachim GrueneisJoachim Grueneis XML_NAMING configuration cannot be set programmatically
Reporter: John Huss
Enh.XML
263820090203Werner GuttmannWerner Guttmann Added JConstant class to J* class hierarchy.
Reporter: Werner Guttmann
Enh.XMLgen
263120090201Ralf JoachimUdai Gupta Improved new cpa test suite to be executed with Microsoft SQL Server.
Reporter: Udai Gupta
Enh.JDO
218420090126Ralf JoachimRalf Joachim Renamed all *Configuration classes (such as XMLConfiguration, CPAConfiguration, ... ) to *Properties.
Reporter: Werner Guttmann
Enh.All
262920090125Ralf JoachimRalf Joachim Added generation of files for jdo-conf.xsd with maven.
Reporter: Ralf Joachim
Enh.JDO
262820090124Ralf JoachimRalf Joachim Added generation of files for cpactf-conf.xsd with maven.
Reporter: Ralf Joachim
Enh.JDO
262620090124Ralf JoachimRalf Joachim Removed TC30 and TC31 from old test suite.
Reporter: Ralf Joachim
Enh.JDO
262520090124Ralf JoachimRalf Joachim Added comments why tests are included/excluded in new test suite.
Reporter: Ralf Joachim
Enh.JDO
262420090124Ralf JoachimRalf Joachim Fixed failing test TC203 of old Castor JDO test suite.
Reporter: Ralf Joachim
BugJDO
262320090124Ralf JoachimRalf Joachim Replaced references in .classpath from jar's of lib directory to jar's of maven repository using M2_REPO variable.
Reporter: Ralf Joachim
Enh.All
262220090121Allan GillisWerner Guttmann Minor code cleanup.
Reporter: Allan Gillis
Enh.XML
259220090121Werner GuttmannWerner Guttmann Fixed a problem with primitive constructor-mapped fields in the context of 'null' vales (i.e. where the field was not present in the XML document).
Reporter: No Matter
BugXML
261320090121Werner GuttmannWerner Guttmann Added a new option to specify the location of a custom Castor properties file by the means of a system property.
Reporter: John Huss
Enh.XML
260420081231Herve BoutemyWerner Guttmann Enhanced the code generator so that empty line will not be 'white-spaced'.
Reporter: Herve Boutemy
Enh.XMLGen.
260420081231Herve BoutemyWerner Guttmann Added methods to (Abstract)JClass to inject complete source code fragments.
Reporter: Herve Boutemy
Enh.XMLGen.
260720081230Herve BoutemyWerner Guttmann Removed OrderedHashMap and replaced its usage with java.util.LinkedHashMap.
Reporter: Herve Boutemy
Enh.XML
260820081230Werner GuttmannWerner Guttmann Improved castor.xml.properties to be coherent in style, content and handling of default values.
Reporter: Martin Weber
BugXML
260920081230Werner GuttmannWerner Guttmann Improved castorbuilder.properties to be coherent in style, content and handling of default values (but org.exolab.castor.builder.javaclassmapping)
Reporter: Martin Weber
BugXMLGen.
259320081212Werner GuttmannWerner Guttmann Improved exception reporting in the context of custom field handlers by adding the root cause to the stack trace.
Reporter: Werner Guttmann
BugXML
258820080203Werner GuttmannWerner Guttmann Added missing setGenerateMapping(boolean) method to CastorCodeGenTask class.
Reporter: Werner Guttmann
BugAntTask
256420081127Werner GuttmannWerner Guttmann Fixed problem with (Maven) build when Castor resides in a directory structure that has spaces in its path.
Reporter: Martin S. Weber
BugGeneral
256920081126Joachim GrueneisWerner Guttmann Migrated a small framework to process annotations from the JAXB project to the core module.
Reporter: Alexander Eibner
Enh.Core
258020081125Werner GuttmannWerner Guttmann Fixed problem with line feeds when used as part of a default value definition in XML schemas.
Reporter: Al Jacinto
BugXMLGen
256520081114Werner GuttmannWerner Guttmann Fixed problem with handling of nil artifacts during unmarshalling for primitive values.
Reporter: Denis Cabasson
BugXML
257820081119Werner GuttmannWerner Guttmann Fixed problem code generation for <xs:simpleTypes> that are derived from NMTOKENS.
Reporter: Renee Rivas
BugXML
258520081119Ralf JoachimRalf Joachim Fixed bug in HighLowKeyGenerator that caused TC20 to fail at Oracle.
Reporter: Ralf Joachim
BugJDO
258320081118Ralf JoachimRalf Joachim Fixed test954 of new cpactf test suite failing with datasource.
Reporter: Ralf Joachim
BugJDO
258220081118Ralf JoachimRalf Joachim Enabled execution of new cpactf test suite against oracle.
Reporter: Ralf Joachim
TaskJDO
256720081113Ralf JoachimRalf Joachim Fixed SQLException 'Invalid column type' at execution of query.
Reporter: Ralf Joachim
BugJDO
254620081031Dave BrosiusWerner Guttmann Fixed problem with the use of 'auto-complete' attributes in mapping file and namespace handling.
Reporter: Alex Edwards
BugXML
255020081013Ralf JoachimRalf Joachim Fixed NullPointerException thrown at SQLStatementLookup when database constraint was violated at call to db.create().
Reporter: Ralf Joachim
BugJDO
255420081009Ralf JoachimRalf Joachim Fixed some eclipse and checkstyle warnings at cpa.
Reporter: Ralf Joachim
Enh.JDO
255220081003Ralf JoachimRalf Joachim Fixed eclipse and checkstyle warnings at cpactf and cpaptf.
Reporter: Ralf Joachim
Enh.JDO
254820081002Dave BrosiusWerner Guttmann Generified 'codegen' module.
Reporter: Dave Brosius
Enh.XML
254820081001Dave BrosiusWerner Guttmann Removed needless creation of Boolean instances in XML code.
Reporter: Dave Brosius
Enh.XML
254920081001Dave BrosiusWerner Guttmann Fixed wrong exception handling in class descriptor resolution.
Reporter: Dave Brosius
BugXML
254720081001Dave BrosiusWerner Guttmann Fixed problem in incorrect usage of collection related to removal of data during iteration.
Reporter: Dave Brosius
BugXML



Release 1.3rc1


Description:1st release candidate for Castor 1.3
released:October 1, 2008
managed by:Werner Guttmann

Changes

Java 5.0 compliance

As of this release, Castor requires a Java 5.0 (and above) JVM at run-time. In addition, the XML code generator now emits Java 5.0-complaint code as well (which can be changed back to Java 1.4 compliance by setting the org.exolab.castor.builder.javaVersion property.

Re-introduced backwards compatibility for code generated from <xs:integer>

Added new org.exolab.castor.xml.lenient.integer.validation property to allow configuration of leniency for validation for Java properties generated from <xs:integer> types during code generation. This will allow successful validation for Java members that have been generated with Castor versions of 1.0.5 and older.

Long transactions that do not depend on cache

For long transactions (detached objects) to work it was required that the entity has been kept in cache from being loaded until its update. If the entity was expired from cache before the update an ObjectModifiedException had been thrown. While this is no problem if all entities of an application can be kept in cache all the time, it is one for large scale applications with millions of entities.

With release 1.3 we have changed the handling of timestamps. While it is still possible to rely on cache only it is now also possible to persist the timestamp together with the other properties of the entity. Doing so will ensure that the timestamp do not change even if the entity got expired from cache from being loaded until it get updated. If this happens the entity gets reloaded during update which also loads the previous timestamp. Having said that it still is possible that an ObjectModifiedException is thrown when another user has changed the same entity in the meantime.

See an example entity and its mapping below:

public class Entity implements TimeStampable {
    private Integer _id;
    private String _name;
    private long _timeStamp;
    
    public Integer getId() { return _id; }
    public void setId(final Integer id) { _id = id; }
    
    public String getName() { return _name; }
    public void setName(final String name) { _name = name; }
    
    public long getTimeStamp() { return _timeStamp; }
    public void setTimeStamp(final long timeStamp) {
        _timeStamp = timeStamp;
    }
    
    public long jdoGetTimeStamp() { return _timeStamp; }
    public void jdoSetTimeStamp(final long timestamp) {
        _timeStamp = timestamp;
    }
}

<class name="Entity">
    <cache-type type="time-limited" capacity="300"/>
    <map-to table="entity"/>
    <field name="id" type="integer" identity="true">
        <sql name="id" type="integer"/>
    </field>
    <field name="name" type="string">
        <sql name="name" type="char"/>
    </field>
    <field name="timeStamp" type="long">
        <sql name="timestamp" type="numeric" />
    </field>
</class>

Moved SQL drivers into new org.castor.cpa.persistence.sql.driver package

As we had to change the package of the drivers in castor.properties anyway, we also renamed the property that configures the classnames of the available drivers from org.exolab.castor.jdo.engines to org.castor.cpa.persistence.sql.driver.factories.

The entry in properties file should now be:

# List of persistence factories for the supported database servers:
#
org.castor.cpa.persistence.sql.driver.factories=\
  org.castor.cpa.persistence.sql.driver.OracleFactory,\
  org.castor.cpa.persistence.sql.driver.PostgreSQLFactory,\
  org.castor.cpa.persistence.sql.driver.SybaseFactory,\
  org.castor.cpa.persistence.sql.driver.SQLServerFactory,\
  org.castor.cpa.persistence.sql.driver.DB2Factory,\
  org.castor.cpa.persistence.sql.driver.InformixFactory,\
  org.castor.cpa.persistence.sql.driver.HsqlFactory,\
  org.castor.cpa.persistence.sql.driver.InstantDBFactory,\
  org.castor.cpa.persistence.sql.driver.InterbaseFactory,\
  org.castor.cpa.persistence.sql.driver.MySQLFactory,\
  org.castor.cpa.persistence.sql.driver.SapDbFactory,\
  org.castor.cpa.persistence.sql.driver.GenericFactory,\
  org.castor.cpa.persistence.sql.driver.DerbyFactory,\
  org.castor.cpa.persistence.sql.driver.PointbaseFactory,\
  org.castor.cpa.persistence.sql.driver.ProgressFactory

Moved SQL keygenerators into new org.castor.cpa.persistence.sql.keygen package

As we had to change the package of the drivers in castor.properties anyway, we also renamed the property that configures the classnames of the available drivers from org.exolab.castor.jdo.keyGeneratorFactories to org.castor.cpa.persistence.sql.keygen.factories.

The entry in properties file should now be:

# List of key generator factories:
#
org.castor.cpa.persistence.sql.keygen.factories=\
  org.castor.cpa.persistence.sql.keygen.MaxKeyGeneratorFactory,\
  org.castor.cpa.persistence.sql.keygen.HighLowKeyGeneratorFactory,\
  org.castor.cpa.persistence.sql.keygen.IdentityKeyGeneratorFactory,\
  org.castor.cpa.persistence.sql.keygen.SequenceKeyGeneratorFactory,\
  org.castor.cpa.persistence.sql.keygen.UUIDKeyGeneratorFactory


Bug Fixes And Issues Addressed
IdDateFixed byCommitted by DescriptionTypeProjectModule
254520080930Ralf JoachimRalf Joachim Refactored load method of ClassMolder and LockEngine.
Reporter: Ralf Joachim
Enh.JDO
254120080928Ralf JoachimDave Brosius Removed needless synchronization afforded by java 5.
Reporter: Dave Brosius
Enh.XMLgen.
254220080928Ralf JoachimRalf Joachim Fixed faulty logic of DTXQuery.initQuery.
Reporter: Dave Brosius
BugJDO
254020080928Werner GuttmannDave Brosius Removed (duplicated) code from SourceFactory.
Reporter: Dave Brosius
BugXML
253120080925Werner GuttmannWerner Guttmann Fixed problems with namespace inheritance for non-simple mapped entities.
Reporter: Christophe Delory
BugXML
252120080925Werner GuttmannWerner Guttmann Fixed problems in the area of using (nested) locations with attribute-typed nodes.
Reporter: Santiago Aucejo
BugXML
253620080924Ralf JoachimRalf Joachim Refactor LockEngine.TypeInfo.acquire() method.
Reporter: Ralf Joachim
Enh.JDO
119620080923Ralf JoachimRalf Joachim Allowed an entity to reference another entity that has been loaded in a different transaction.
Reporter: Clovis Wichoski
BugJDO
120620080923Ralf JoachimRalf Joachim Enabled to save changes to field references with dirthy="ignore" in database.
Reporter: Clovis Wichoski
BugJDO
8720080920Ralf JoachimRalf Joachim Added ability to persist timestamps to allow long transaction that do not depend on cache.
Reporter: Thomas Yip
Enh.JDO
253220080919Ralf JoachimRalf Joachim Fixed issue with object not being untracked when creation of JDBC connection fails.
Reporter: Ralf Joachim
BugJDO
253020080917Werner GuttmannWerner Guttmann Fixed problem with namespace handling when there's a big number of 'extra' (unmapped) content.
Reporter: Werner Guttmann
BugXML
252820080916Werner GuttmannWerner Guttmann Fixed a problem with the lookup of types already marked 'missing' in XMLClassDescriptor(Impl).resolve().
Reporter: Werner Guttmann
BugXML
252720080916Ralf JoachimRalf Joachim Fixed issue with query returning entities of wrong type for extended class hierarchies.
Reporter: Ralf Joachim
BugJDO
252020080914Werner GuttmannWerner Guttmann Fixed a problem with code generation of <list> of simple type definitions where enumerations are used.
Reporter: R.O. Shore
Enh.XMLgen.
252420080912Ralf JoachimRalf Joachim Simplified configuration of new castor persistence test framework
Reporter: Ralf Joachim
Enh.JDO
250420080803Werner GuttmannWerner Guttmann Refactored FieldDescriptor(Impl) to use natures (JDO only) and removed JDOFieldDescriptor(Impl).
Reporter: Werner Guttmann
Enh.JDO
250320080801Werner GuttmannWerner Guttmann Refactored ClassDescriptor(Impl) to use natures (JDO only) and removed JDOClassDescriptor(Impl).
Reporter: Werner Guttmann
Enh.JDO
249320080725Werner GuttmannWerner Guttmann Moved 'castor.core.properties' from xml module to core module.
Reporter: Werner Guttmann
BugCore
243420080723Werner GuttmannWerner Guttmann Added 'detachable' attribute to JDO extension for the Castor XML code generator.
Reporter: Werner Guttmann
Enh.XMLGen.
245220080722Sebastian GabmeyerWerner Guttmann Amended JDOClassDescriptorResolver(Impl) to additonally use .castor.jdo.cdr files for class descriptor resolution.
Reporter: Sebastian Gabmeyer
Enh.XMLGen.
239020080721Filip HianikWerner Guttmann Added ability to generate JDO descriptors for 1:M relations.
Reporter: Filip Hianik
Enh.XMLgen.
241220080720Filip HianikWerner Guttmann Improved <appinfo> processing to cover for 'dirty' and 'read-only' settings.
Reporter: Filip Hianik
Enh.XMLgen.
236520080720Filip HianikWerner Guttmann Improved SchemaUnmarshallerTest to cover 1:M relations as well.
Reporter: Filip Hianik
Enh.XMLgen.
247020080720Filip HianikWerner Guttmann Added 'dirty' and 'read-only' properties to JDO-specific 1:M relation nature.
Reporter: Filip Hianik
Enh.XMLgen.
246920080720Filip HianikWerner Guttmann Added 'dirty' and 'read-only' properties to JDO-specific 1:1 relation nature.
Reporter: Filip Hianik
Enh.XMLgen.
244820080720Filip HianikWerner Guttmann Added 'dirty' and 'read-only' attributes to <one-to-one> and <one-to-many> elements.
Reporter: Filip Hianik
Enh.XMLgen.
239020080720Filip HianikWerner Guttmann Added functionality to generate sources for 1:1 relations.
Reporter: Filip Hianik
Enh.XMLGen.
245520080718Werner GuttmannWerner Guttmann Consolidated CPA/JDO constants used by JDOClassDescriptorFactory.
Reporter: Lukas Lang
XMLGen.Schema
245420080718Werner GuttmannWerner Guttmann Consolidated CPA/JDO constants used by AppInfoUnmarshaller.
Reporter: Lukas Lang
Enh.Schema
241220080716Filip HianikWerner Guttmann Extended AppInfoUnmarshaller to support 1:1 and 1:M relations as well.
Reporter: Filip Hianik
Enh.XMLGen.
241220080716Filip HianikWerner Guttmann Added code to support 1:1 and 1:M relations during <appinfo> processing.
Reporter: Filip Hianik
Enh.XMLGen.
245920080715Lukas LangWerner Guttmann Adapted JDOMappingLoader to allow resolution of JDO descriptors from the file system as well, to support 'mixed mode'.
Reporter: Lukas Lang
Enh.XMLGen.
247020080715Lukas LangWerner Guttmann Added a JDO-specific nature for 1:M relations.
Reporter: Lukas Lang
Enh.XMLGen.
246720080715Lukas LangWerner Guttmann Added a getFields() method to JDOClassInfoNature.
Reporter: Lukas Lang
Enh.XMLGen.
247920080714Ralf JoachimRalf Joachim Removed unused code from ClassMolder, LockEngine and ObjectLock
Reporter: Ralf Joachim
Enh.JDO
247820080714Ralf JoachimRalf Joachim Made ObjectLock and CachEntry independent from each other.
Reporter: Ralf Joachim
Enh.JDO
253720080714Ralf JoachimRalf Joachim Refactored HighLow, Identity, Max and UUID key generators.
Reporter: Ralf Joachim
Enh.JDO
246920080709Lukas LangWerner Guttmann Added a JDO-specific nature for 1:1 relations.
Reporter: Lukas Lang
Enh.XMLGen.
247120080709Werner GuttmannWerner Guttmann Refactored XMLInfo usage (part II) - Inlined all remaining XMLInfo methods() that internally use XMLInfoNature.
Reporter: Werner Guttmann
Enh.XMLGen.
246620080708Werner GuttmannWerner Guttmann Refactored XMLInfo usage (part I) - Inline all XMLInfo.set* methods() that internally use XMLInfoNature
Reporter: Werner Guttmann
Enh.XMLGen.
244620080707Lukas LangWerner Guttmann Refactored JDOClassDescriptorResolver to use command pattern for resolution.
Reporter: Lukas Lang
Enh.CPA
244620080707Lukas LangWerner Guttmann Created a set of "naturable" commands for (JDO) class descriptor resolution.
Reporter: Lukas Lang
Enh.CPA
244520080707Lukas LangWerner Guttmann Created JDOConstants in core module.
Reporter: Lukas Lang
Enh.Core
244720080706Sebastian GabmeyerWerner Guttmann Enable creation of a JDO-specific CDR File.
Reporter: Sebastian Gabmeyer
Enh.XMLGen.
245320080704Werner GuttmannWerner Guttmann Added new core module.
Reporter: Lukas Lang
Enh.General
241220080703Sebastian GabmeyerWerner Guttmann Extract JDO annotations from XML schema (object model) and fill {Class|Field}Infos using the proper JDO natures.
Reporter: Sebastian Gabmeyer
Enh.Schema
244820080703Lukas LangWerner Guttmann Add more JDO specific attributes to the simple-schema.xsd.
Reporter: Lukas Lang
Enh.XMLgen.
245020080703Werner GuttmannWerner Guttmann Switch to a Maven driven approach for the generation of the JDO annotations for code generation.
Reporter: Werner Guttmann
Enh.Schema
236520080702Lukas LangWerner Guttmann Added code to process JDO-specific annotations of an XML schema.
Reporter: Lukas Lang
Enh.Schema
243620080628Werner GuttmannWerner Guttmann Added new JDOClassDescriptorResolver interface and refactored code to use it.
Reporter: Werner Guttmann
Enh.CPA
239420080628Lukas LangWerner Guttmann Added new loadConfiguration() method to JDOManager that allows to pass in a JDOClassDescriptorResolver.
Reporter: Lukas Lang
Enh.CPA
241920080628Werner GuttmannWerner Guttmann Refactored code to use new JDOClassDescriptor interface.
Reporter: Werner Guttmann
Enh.CPA
238020080628Lukas LangWerner Guttmann Added Nature concept to XML code generator to make Class-/FieldInfo instances more extendible.
Reporter: Lukas Lang
Enh.XMLGen.
242620080621Lukas LangWerner Guttmann JDOClassDescriptorResolver(Impl) now supports loading class descriptors from the file system.
Reporter: Lukas Lang
Enh.CPA
241820080613Werner GuttmannWerner Guttmann Introduced new JDOClassDescriptor interface.
Reporter: Werner Guttmann
RefactoringCPA
241720080613Werner GuttmannWerner Guttmann Renamed JDOClassDescriptor to JDOClassDescriptorImpl.
Reporter: Werner Guttmann
RefactoringCPA
240520080606Sebastian GabmeyerWerner Guttmann Removed code duplication across FieldInfoAccessFactory and FieldInfo.
Reporter: Sebastian Gabmeyer
RefactoringXMLGen
237920080530Werner GuttmannWerner Guttmann Fixed inconsistency with code generation binding for global complex type definitions.
Reporter: Gaël Lhez
BugXMLGen
237520080518Ralf JoachimRalf Joachim Moved SQL keygenerators into new org.castor.cpa.persistence.sql.keygen package.
Reporter: Ralf Joachim
Enh.JDO
236820080516Udai GuptaRalf Joachim Created how to's for setting up Castor with eclipse and execution of JDO test suites.
Reporter: Udai Gupta
Enh.JDO
237720080512Udai GuptaRalf Joachim Transferred old tests TC30 and TC31 to new JDO test framework.
Reporter: Udai Gupta
Enh.JDO
237820080505Werner GuttmannWerner Guttmann Added unmarshal(AnyNode) method to Unmarshaller.
Reporter: Mattias Jiderhamn
Enh.XML
237420080503Ralf JoachimRalf Joachim Moved SQL drivers into new org.castor.cpa.persistence.sql.driver package.
Reporter: Ralf Joachim
Enh.JDO
237320080502Ralf JoachimRalf Joachim Fixed failing cpactf tests on derby.
Reporter: Ralf Joachim
BugJDO
79620080502Ralf JoachimRalf Joachim Refactored SequenceKeyGenerator.
Reporter: Werner Guttmann
Enh.JDO
237220080502Ralf JoachimRalf Joachim Fixed failing cpactf tests on oracle.
Reporter: Ralf Joachim
BugJDO
237120080501Ralf JoachimRalf Joachim Fixed failing cpactf tests on mysql.
Reporter: Ralf Joachim
BugJDO
235820080425Joachim GrueneisWerner Guttmann Improved HTML docs on SVN access.
Reporter: Bernhard Woditschka
Enh.HTML
234320080422Ralf JoachimRalf Joachim Prepared SQLStatementCreate to move whole generation code into KeyGenerator implementations.
Reporter: Ralf Joachim
Enh.JDO
235220080422Ralf JoachimRalf Joachim Fixed to long table names and some failures in SQL script of oracle.
Reporter: Ralf Joachim
BugJDO
169920080420Ralf JoachimRalf Joachim Removed dependency for mockejb.jar.
Reporter: Werner Guttmann
Enh.JDO
233020080418Werner GuttmannWerner Guttmann Fixed problem with attribute resolution at unmarshalling for attributes that use a location and are rooted at the root node.
Reporter: Nikolai Grigoriev
BugXML
196120080412Martin FuchsRalf Joachim Fixed NumberFormatException: For input string: "10g".
Reporter: Radovana Straube
BugJDO
229120080411Ralf JoachimRalf Joachim Renamed cpactf/src/test to cpactf/src/old and cpactf/src/temp to cpactf/src/test.
Reporter: Joachim Grueneis
Enh.JDO
232620080411Werner GuttmannWerner Guttmann Fixed problem with persistence of entities that has fields that are all part of object identity.
Reporter: Victor Manuel Iniestra Alvarez
BugJDO
232320080401Werner GuttmannWerner Guttmann Fixed problem with name collision detection for Windows-specific keywords.
Reporter: Andreas Stergiou
Enh.XML
228920080401Dennis SpenkelinkWerner Guttmann Added support for changing the binding (name, namespace) of an anonymous enumeration in a binding file.
Reporter: Dennis Spenkelink
Enh.XML
214320080330Werner GuttmannWerner Guttmann Added support for 'nillable' content (actually elements only) in the mapping file.
Reporter: Tausif Farooqi
Enh.XML
194820080321Simon LordWerner Guttmann (Re-)introduced full backwards compatibility for code generated for <xs:integer> XML artefacts, allowing for classes generated with Castor 1.1 and older to be used again for un-/marshalling.
Reporter: Simon Lord
BugXML
231220080319Philippe RouxelWerner Guttmann Fixed problem with property resolution when setting a new InternalContext instance on an existing Un-/Marshaller.
Reporter: Philippe Rouxel
BugXML
223120080314Werner GuttmannWerner Guttmann Added namespace definition for a "java:" prefix when used by Castor.
Reporter: Nicolas Cazottes
BugXML
230820080314Werner GuttmannWerner Guttmann Improved the XPATH statements produced for the location attribute of a ValidationException to cater for positions within multi-valued fields as well.
Reporter: Dave Sinclair
Enh.XML
230220080313Werner GuttmannWerner Guttmann Refactored JClassPrinterFactory approach and added a registy for these factories so that Velocity classes are really optional when executing the XML code generator in standard (= default) mode.
Reporter: Werner Guttmann
BugXMLGen
110720080311Werner GuttmannWerner Guttmann Added code to the XML code generator to validate XML schema constraints (partially).
Reporter: Sergei Ivanov
Enh.XMLGen
229520080301Joachim GrueneisJoachim Grueneis Two things have been changed. First the AbstractResolverPackageCommand will work even if no ClassLoader was set before. Second XMLClassDescriptorResolverImpl does no longer work with InternalContext but gets all required values directly set.
Reporter: Nikita Mekh
BugXML
230020080219Joachim GrueneisWerner Guttmann Fixed the (snapshot) repository references in the Maven integration HTML docs.
Reporter: Joachim Grueneis
BugGeneral
229320080216Werner GuttmannWerner Guttmann Fixed problem with method signatures during code generation, when generics are used with Java 5.0
Reporter: Mario Däpp
BugXMLGen
229720080215Werner GuttmannWerner Guttmann Fixed problem with class generation where a binding file is used such that the package name is based upon a target namespace.
Reporter: Keith
BugXMLGen
229920080215Werner GuttmannWerner Guttmann Fixed problem with element name collisions between child and parent complex type definitions when a binding file is used to address this name collision.
Reporter: Michael
BugXMLGen
229420080214Werner GuttmannWerner Guttmann Cleaned up XML code generator code to avoid generation of unnecessary import statements.
Reporter: John Gollan
BugXMLGen
227520080209Werner GuttmannWerner Guttmann Fixed problem with <simpleContent> derived from <xsd:integer< where the type of the Java property generatd was BigDecimal (rathr than long).
Reporter: Kelvin Chung
BugXMLGen
228220080206Joachim GrueneisJoachim Grueneis Introduced a new (extended) UnmarshalListener interface meant to replace the existing.
Reporter: Joachim Grueneis
ImprovementXML
228320080206Joachim GrueneisJoachim Grueneis Removed static initialization of XMLClassDescriptorImpl which wasn't used but caused problems in the JAXB implementation.
Reporter: Joachim Grueneis
ImprovementXML
227920080205Alexandre DelargeWerner Guttmann Fixed problem with handling of simple types where the base type is defined in an imported XML schema during XML schema serialization.
Reporter: Alexandre Delarge
BugXMLSchema
227720080205Werner GuttmannWerner Guttmann Fixed problem with class name resolution for referenced attribute definitions that use an anynymous simple type enumeration.
Reporter: Kelvin Chung
BugXMLGen



Release 1.2


Description:Release of Castor 1.2 GA
released:February 4, 2008
managed by:Werner Guttmann

Additions

Code generator now supports use of Velocity as template engine

Castor now supports the use of Velocity-based code templates for code generation. For the time being, Castor will support two modes for code generation, i.e. the new Velocity-based and an old legacy mode. Default will be the legacy mode; this will be changed with a later release of Castor.

In order to use the new Velocity-based code generation, please override the following code generator property in a custom castorbuilder.properties as shown:

org.exolab.castor.builder.jclassPrinterTypes=\
   org.exolab.castor.builder.printing.TemplateJClassPrinter,\
   org.exolab.castor.builder.printing.WriterJClassPrinter

Users are encouraged the use the new Velocity-based mode and to provide us with (valuable) feedback.

Execution of CTF test suite in Maven

Added support for executing CTF test suite as part of a standard Maven build. To execute the CTF test suite from Maven, simply issue a mvn test in the xmlctf module, and the test suite will be run in addition to the standard unit tests.

Once the remainder of the code in the parent module has been moved to its own xml module, it will be possible to have the execution of the test suite as part of the release process, which will only succeed if all tests (including those from the CTF suite) pass successfully.

Added special processing of proxied classes

Objects that were lazy loaded from a persistence layer often are wrapped by dynamic proxies. This usually happens by extending the original class. In this case a call to getClass() does not return the original call but the proxy instead. As the class respectively its name is used to lookup class mapping or ClassDescriptor of any class to marshal, Castor fail to find the right one. The result is that the object gets introspected and the XML document produced does not look as expected. Even if you do not use ClassDescriptors generated by Castor's code generator or a mapping file as you want objects to get introspected, the resulting XML document is crap. The problem here is, that introspection not only finds the properties of your object but also those of the proxy which also get marshalled.

The solution to all of this problems is a new property in castor.properties file. It allows you to specify a list of interfaces that such proxied objects implement. If your object implements one of these interfaces Castor will not use the class itself but its superclass at introspection or to find class mappings and ClassDescriptors.

# Property specifying whether or not to search for an proxy interface at marshalling.
# If property is not empty the objects to be marshalled will be searched if they
# implement one of the given interface names. If the interface is implemented the
# superclass will be marshalled instead of the class itself.
#
org.exolab.castor.xml.proxyInterfaces=\
  net.sf.cglib.proxy.Factory, \
  org.hibernate.proxy.HibernateProxy

Be aware that no proxy interfaces are defined by default as the interface search slightly decreases marshalling performance.

Added support for (programmatic) access to XML schema documentation information

The Castor XML code generator - if configured as shown below - now generates additional methods to allow programmatic access to <xs:documentation> elements for top-level type/element definitions as follows:

    public java.lang.String getXmlSchemaDocumentation(final java.lang.String source);
    public java.util.Map getXmlSchemaDocumentations();

In order to have these additional methods generated as shown above, please override the following code generator property in a custom castorbuilder.properties as shown:

# Property specifying whether extra members/methods for extracting XML schema
# documentation should be made available; defaults to false
org.exolab.castor.builder.extraDocumentationMethods=true

Added support for complex Java 5 enums for simple type enumerations

In previous versions, Castor only supported (un)marshalling of "simple" Java 5 enums, meaning enums where all facet values are valid java identifiers. In these cases, every enum constant name can be mapped directly to the xml value.

So if there is at least ONE facet that cannot be mapped directly to a valid java identifier, we need to extend the enum pattern. The actual value of the enumeration facet is stored in a private String property, the name of the enum constant is translated into a valid identifier.

<xs:simpleType name="CompositeType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="5"/>
    <xs:enumeration value="10"/>
  </xs:restriction>
</xs:simpleType>

public enum CompositeType {
    VALUE_5("5"),
    VALUE_10("10");

    private final java.lang.String value;

    private CompositeType(final java.lang.String value) {
        this.value = value;
    }

    public static CompositeType fromValue(final java.lang.String value) {
        for (CompositeType c: CompositeType.values()) {
            if (c.value.equals(value)) {
                return c;
            }
        }
        throw new IllegalArgumentException(value);
    }

    public java.lang.String value() {
        return this.value;
    }

    public java.lang.String toString() {
        return this.value;
    }
}

<root>
  <CompositeType>5</CompositeType>
</root>

    

See the description in the Source Generator Properties section for details.

Added support for configurable field handlers

Although it was already possible to create custom XML field handers, it was not possible to configure them. It is now possible to define your custom ConfigurableFieldHander and add any number of parameters to it, in the mapping file as follows:

<mapping>

   <field-handler name="myHandler" class="org.some.package.CustomFieldHandlerImpl">
      <param name="date-format" value="yyyyMMddHHmmss"/>
   </field-handler>

   <class .... />

   <class .../>

</mapping>

and subsequently refer to this custom (configurable) field handler by its name as shown in the following field mapping:

<class name="Root">
   <field name="date" type="string" handler="myHandler"/>
</class>

A typical example is the need to process multiple date formats in one xml file. This can now be done elegantly by configuring multiple instances of a configurable date field handler, each with a different date format.

Please check the new HOW-TO on using custom (configurable) field handlers with Castor.

Added support