ChangeLog
=========

$Id: CHANGES 279 2003-11-22 08:35:09Z bolzer $

Version 0.81 (tagged 22 Nov 2003, revision 279)

Bug Fixes:
 * correct mistake in Usage Example, operator for wildcard searching
   is ~, not =
 * raise proper errors on various methods of Persistable when no
   PersistenceManager is available, instead of NoMethodError 

Version 0.80 (tagged 19 Nov 2003, revision 275)

Features:
 * transaction logging, record information about time, committer and log
   message as well as list of objects modified per transaction
 * basic versioning support, retrieval of historic object states
 * vaporadmin: removal of classes and all their instances using the "remove" command
 * vaporadmin: modification of class' metadata using the "update" command
 * new operator (~) for wildcard searches on Strings

Bug Fixes:
 * allow SQL keywords as names of persistent attributes
 * fix bug where camelCase variables would not be correctly set on object loading
 * correctly transfer newly persistent objects back to transient state during
   rollback(). This bug caused incomprehensible ObjectDeletedErrors when manually
   or automatically rolling back.
 * check REXML::Version instead of REXML::VERSION_MAJOR, which does not exist
   in the REXML version that is included in Ruby 1.8
 * minimize number of warnings issued when using `ruby -w', including those
   from Ruby 1.8.x, that are issued regardless of -w

Incompatible Repository Changes: (Repository needs to be recreated from scratch)
 * repository schema version 3 
 * add fields and tables for versioning


Version 0.70 (tagged 4 Jul 2003, revision 211)

Features:
 * support for transactions, with ACID-characteristics using optimistic locking
 * new method Persistable#refresh_persistent, reloads persistent attributes
   with values currently in Datastore
 * new method Persistable#revision, returns number of times changes to the
   object have been commited since it's creation
   
Incompatible API Changes:
 * PersistenceManager#flush() deprecated, use transactions
 * all methods that change a persistent object (make_persistent, mark_dirty,
   delete_persistent) can now only be called while a transaction is active. If
   no transaction is active and Autocommit-Mode is off, a StaleTransactionError
   will be raises when such an method is called.

Incompatible Repository Changes: (Repository needs to be restarted from scratch)
 * add new field for revision number to class' table
 * new table containing various information about the Repository itself, like
   date created and version of relational schema used.
 * get rid of annoying :-prefix from names of class' tables
 * get rid of annoying _-prefix from column names of class' tables
 * preserve the attribe order as specified in the XML data when creating tables

Bug Fixes:
 * fix vaporadmin to allow FQDN as hostname and non-alphaneumeric characters
   for passwords in repository specification
 * properly raise a LoadError when a dependent librarie's version is too old.
 * vaporadmin shows a proper error message if trying to incompativly overload
   an attribute from a superclass or trying to create a uniquness constrains
   over an array attribute (both PostgreSQL restrictions)


Version 0.60 (tagged 5 Jun 2003, revision 159)  

 * initial public release
 * new versioning scheme

Features:
 * support for indexes to speed up search queries
   specify in metadata XML using index="true" attribute or <index>
 * support for uniqueness constraints for classes
   specify in metadata XML using unique="true" attribute or <unique>
 * support for selective retrieval of subclass instances with
   PersistenceManager#query and PersistenceManager#get_extent, default to
   retrieve subclass instances
 * introduce Autocommit-Mode: all changes (new, delete, dirty) are immediately
   flushed to the Repository. On by default. Turn off using Vapor.Autocommit
   property or PersistenceManager#autocommit=
   
Bug Fixes:
 * restore screen echo before exiting when interrupted during Password input
   with Ctrl-C, exit with exit status of 130 (SIGINT)

Incompatible Interface Changes:
 * change PersistenceManager.new, now takes a Hash-like object with
   properties instead of a TupleManager. For valid properties, see API
   reference or example code.
   
Misc:
 * vaporadmin shows a warning about passwords and screen echo if the
   Termios module is not installed
 * all instance variables set by Vapor in Persistable objects are prefixed
   with "vapor_", to prevent namespace pollution 
 * new constant Vapor::VERSION with current release version

Version M5 (tagged 1 Jun 2003, revision 139)

New:
 * include proper LICENCE file and also a copy of the GPL
 * include proper CHANGES (this file ) 
 * new Repository administration tool `vaporadmin' that talks
   directly with the Repository
   - Repository initialisation
   - adding classes to Repository
 * create new top-level library file vapor.rb, convenience short-cut
   so the user only has to do "require 'vapor'"
 * support Persistables as arguments for queries
 * when types of persistent attributes are wrong, try to convert
   them, otherwise raise a VaporTypeError
 * move all exceptions into their own module Vapor::Exceptions
 * new directory doc/examples with one example system
 * cleaned up directory structure
   - move actual library classes to lib/
   - move tests from inside lib to test/
   - move documentation into doc/
   - remove documentation that is not part of releases
   - create bin/ for executables
 * remove obsolete vapor-schemagen.rb
 * incompatible Repository layout changes: 
   - use SEQUENCE for storage of OID seed

Bug Fixes:
 * actually save attributes inherited from superclass
 * Extent#[]: don't try to retrieve object if the index is invalid
 * Persistable: methods that need an Repository (e.g. for metadata) will
   raise an Vapor::RepositoryOfflineError if no PersistenceManager has
   been initialised

Version M4 (tagged 21 May 2003, revision 100)

  * SQL DDL generation using vapor-schemagen.rb
  * support for creating and modifying of objects in Repository (writing)
  * support for deleting objects from Repository
  * support querying for object in Repository 

Version M3 (tagged 21 Feb 2003, revision 46)

 * support reading of Array attributes

Version M2 (tagged 05 Feb 2003, revision 38)

 * support References
 * support loading of all instances of a class
 * add Extents, container of multiple objects that are only 
   loaded into memory on demand

Version M1 (tag lost)

 * no support for schema generation
 * no support for creating and writing objects
 * support of loading objects by OID
 * support of non-reference attributes
 * cache loaded objects
