Servertec Persistent Object Store 1.4.1 09/04/2005

-----------------------------------------------------------------------------
CHANGES

Servertec Persistent Object Store 1.4.1 09/04/2005
- initial open source release

Servertec Persistent Object Store 1.4.0 08/23/2004
- added support for read and write locks
- added stec.pos.Lock
- added stec.pos.readLock(Object)
- added stec.pos.writeLock(Object)
- added stec.pos.readLock(Object, long)
- added stec.pos.writeLock(Object, long)
- added stec.xpos.readLock(Object)
- added stec.xpos.writeLock(Object)
- added stec.xpos.readLock(Object, long)
- added stec.xpos.writeLock(Object, long)
- added stec.pos.isReadCount(Object)
- added stec.pos.isWriteCount(Object)
- added stec.xpos.isReadCount(Object)
- added stec.xpos.isWriteCount(Object)
- added stec.pos.iReadCount(Object)
- added stec.pos.iWriteCount(Object)
- added stec.xpos.iReadCount(Object)
- added stec.xpos.iWriteCount(Object)
- added stec.pos.lockCount(Object)
- added stec.xpos.lockCount(Object)
- added stec.pos.locks()
- added stec.pos.locks(Object)
- added stec.xpos.locks()
- added stec.xpos.locks(Object)
- added stec.pos.lock(Object)
- added stec.pos.lock(Object, long)
- added stec.xpos.lock(Object)
- added stec.xpos.lock(Object, long)
- removed stec.pos.getWhoLocked(Object)
- removed stec.xpos.getWhoLocked(Object)
- updated documentation

Servertec Persistent Object Store 1.3.1 11/26/2003
- added stec.pos.CheckObjectStore.check(String[], String[])
- added stec.xpos.CheckObjectStore.check(String[], String[])
- added stec.pos.CheckIndex.check(String[], String[])
- added stec.xpos.CheckIndex.check(String[], String[])
- added stec.pos.CheckIndexedObjectStore.check(String[], String[])
- added stec.xpos.CheckIndexedObjectStore.check(String[], String[])
- added stec.pos.ObjectStoreReference.getFilename()
- added stec.xpos.ObjectStoreReference.getFilename()
- added stec.pos.IndexReference.getFilename()
- added stec.xpos.IndexReference.getFilename()
- added stec.pos.IndexedObjectStoreReference.getFilename()
- added stec.xpos.IndexedObjectStoreReference.getFilename()
- added stec.pos.ObjectStoreEnumeration.hasMoreElements(timeout)
- added stec.xpos.ObjectStoreEnumeration.hasMoreElements(timeout)
- removed stec.pos.ObjectStoreEnumeration.nextElement(timeout)
- removed stec.xpos.ObjectStoreEnumeration.nextElement(timeout)
- changed how stec.pos.ObjectStoreEnumeration.hasMoreElements() works
- changed how stec.pos.ObjectStoreEnumeration.nextElement() works
- fixed bug that resulted in stec.pos.ObjectStoreEnumeration.close()
  throwing an exception when stec.pos.ObjectStoreEnumeration.nextElement()
  throws a TimeoutException
- fixed bug that resulted in stec.xpos.ObjectStoreEnumeration.close()
  throwing an exception when stec.xpos.ObjectStoreEnumeration.nextElement()
  throws a TimeoutException
- updated documentation

Servertec Persistent Object Store 1.3.0 10/19/2003
- added support for efficient storage and retrieval of object streams
- added support for efficient storage and retrieval of byte arrays
- added stec.pos.ObjectStoreInputStream
- added stec.pos.ObjectStoreOutputStream
- added stec.pos.ObjectStoreRandomAccessStream
- added stec.xpos.ObjectStoreInputStream
- added stec.xpos.ObjectStoreOutputStream
- added stec.xpos.ObjectStoreRandomAccessStream
- added stec.pos.ObjectStoreReference.getInputStream
- added stec.pos.ObjectStoreReference.getOutputStream
- added stec.pos.ObjectStoreReference.getRandomAccessStream
- added stec.xpos.ObjectStoreReference.getInputStream
- added stec.xpos.ObjectStoreReference.getOutputStream
- added stec.xpos.ObjectStoreReference.getRandomAccessStream
- added stec.pos.ByteArray.BYTE_ARRAY
- added stec.pos.ByteArray.getByteArray()d
- added stec.pos.ByteArray.setByteArray()
- added stec.pos.ByteArray.getEncodedType()
- standardized exception handling
- updated documentation

Servertec Persistent Object Store 1.2.4 07/06/2003
- stec.pos and stec.xpos now uses case sensitive instance ids when running
  under Unix based systems and case insensitive instance ids when running 
  under Windows based systems
- fixed bug in stec.pos.CheckIndex that resulted in duplicate values not 
  being correctly counted
- fixed bug in stec.xpos.CheckIndex that resulted in duplicate values not 
  being correctly counted
- fixed bug in stec.pos.CheckIndex that resulted in null keys not being
  counted
- fixed bug in stec.xpos.CheckIndex that resulted in null keys not being
  counted
- fixed bug in stec.pos.CheckIndex that resulted in keys in desending
  indexes being reported as not being in the correct order
- fixed bug in stec.xpos.CheckIndex that resulted in keys in desending
  indexes being reported as not being in the correct order
- improved error handler used by stec.pos.VirtualFileHandleManager when
  attaching a virtual file handle to a physical file handle

Servertec Persistent Object Store 1.2.3 03/11/2003
- added stec.io.File
- replaced use of java.io.File.getCanonicalPath() with
  stec.io.File.getCanonicalPath()
- stec.pos.IndexInstance.next() no longer checks for invalid keys and values
- stec.xpos.IndexInstance.next() no longer checks for invalid keys and values
- stec.pos.IndexInstance.previous() no longer checks for invalid keys and
  values
- stec.xpos.IndexInstance.previous() no longer checks for invalid keys and
  values
- fixed bug in stec.pos.IndexInstance.check_value() that resulted in a
  java.lang.NullPointerException being thrown when the Index was created
  with duplicates set to false
- fixed bug in stec.xpos.IndexInstance.check_value() that resulted in a
  java.lang.NullPointerException being thrown when the Index was created
  with duplicates set to false

Servertec Persistent Object Store 1.2.2 03/03/2003
- added stec.pos.ObjectStore.copy()
- added stec.xpos.ObjectStore.copy()
- added stec.pos.Index.copy()
- added stec.xpos.Index.copy()
- added stec.pos.IndexedObjectStore.copy()
- added stec.xpos.IndexedObjectStore.copy()
- added stec.pos.ObjectStore.move()
- added stec.xpos.ObjectStore.move()
- added stec.pos.Index.move()
- added stec.xpos.Index.move()
- added stec.pos.IndexedObjectStore.move()
- added stec.xpos.IndexedObjectStore.move()
- added stec.pos.IndexedObjectStoreReference.getKeysClassName()
- added stec.xpos.IndexedObjectStoreReference.getKeysClassName() 
- added stec.pos.IndexedObjectStoreReference.getValuesClassName()
- added stec.xpos.IndexedObjectStoreReference.getValuesClassName() 
- added stec.pos.IndexedObjectStoreReference.getKeysIndexCollator()
- added stec.xpos.IndexedObjectStoreReference.getKeysIndexCollator() 
- added stec.pos.IndexedObjectStoreReference.getValuesIndexCollator()
- added stec.xpos.IndexedObjectStoreReference.getValuesIndexCollator() 
- added stec.pos.IndexedObjectStoreInstance
- added stec.xpos.IndexedObjctedStoreInstance
- changed key's index file extension from .keys to .index.keys
- changed key's store file extension from .key.store to .keys.store
- changed value's store file extension from .value.store to .values.store
- consolidated commonly used methods into stec.pos.Common
- indexes no longer perform exact match of key and value object class names
  instead indexes now just check that the objects being used are assignable
- indexes now only require that keys, values are an instance of the class
  specified when the index was created
- stec.pos.IndexedObjectStore now uses its own object locks
- stec.xpos.IndexedObjectStore now uses its own object locks
- stec.pos.IndexedObjectStore.getWhoLocked() now returns
  stec.pos.IndexedObjectStoreReference
- stec.xpos.IndexedObjectStore.getWhoLocked() now returns
  stec.pos.IndexedObjectStoreReference
- POS now uses the current thread's class loader when constructing and
  comparing classes.
- stec.pos.Index.delete() now checks if the specified path exists and if it
  is a directory before attempting to delete it
- fixed bug in stec.pos.ObjectStore.create() that resulted in not all the
  physical files being deleted when an existing object store was overwritten
- fixed bug in stec.xpos.ObjectStore.create() that resulted in not all the
  physical files being deleted when an existing object store was overwritten
- fixed bug in stec.pos.Index.create() that resulted in not all the physical
  files being deleted when an existing index was overwritten.
- fixed bug in stec.xpos.Index.create() that resulted in not all the physical
  files being deleted when an existing index was overwritten.
- fixed bug in stec.pos.IndexedObjectStore.delete() that resulted in not all
  the physical files being deleted when an existing indexed object store was
  deleted.
- fixed bug in stec.xpos.IndexedObjectStore.delete() that resulted in not all
  the physical files being deleted when an existing indexed object store was
  deleted.
- fixed bug in stec.pos.IndexedObjectStore.removeIndex() that resulted in not
  all the physical files being deleted when an existing indexed object store
  was deleted.
- fixed bug in stec.xpos.IndexedObjectStore.removeIndex() that resulted in
  not all the physical files being deleted when an existing indexed object
  store was deleted.
- fixed bug in stec.pos.IndexReference.clear() that resulted in the
  associated files not being properly cleared
- fixed bug in stec.xpos.IndexReference.clear() that resulted in the
  associated files not being properly cleared
- fixed bug in stec.pos.IndexedObjectStoreReference.clear() that resulted in
  the associated object store not being cleared
- fixed bug in stec.xpos.IndexedObjectStoreReference.clear() that resulted in
  the associated object store not being cleared
- fixed bug in POS that resulted in the root cause of an exception not always
  being reported
- fixed bug in stec.pos.Locker.unlock() that resulted in POS not unlocking
  locked object when the reference are closed or when a unlockAll() is used
- fixed bug in stec.pos.ObjectStoreReference.getWhoLocked() that resulted in
  the method not checking if the file was still opened
- fixed bug in stec.xpos.ObjectStoreReference.getWhoLocked() that resulted in
  the method not checking if the file was still opened
- fixed bug in stec.pos.IndexReference.getWhoLocked() that resulted in the
  method not checking if the file was still opened
- fixed bug in stec.xpos.IndexReference.getWhoLocked() that resulted in the
  method not checking if the file was still opened
- fixed bug in stec.pos.IndexedObjectStore that allowed the indexed object
  store to be deleted without first checking if it is being used
- fixed bug in stec.xpos.IndexedObjectStore that allowed operations on the
  specified indexed object store without first checking if it is being used
- fixed bug in stec.pos.IndexedObjectStoreReference.contains() that resulted
  in the value not being properly compared
- fixed bug in stec.xpos.IndexedObjectStoreReference.contains() that resulted
  in the value not being properly compared
- fixed bug in stec.pos.Index.expand() that resulted in associated files not
  being properly expanded
- fixed bug in stec.xpos.Index.expand() that resulted in associated files not
  being properly expanded
- fixed bug in indexes that resulted in objects with a null value not being
  properly stored
- updated documentation

Servertec Persistent Object Store 1.2.1 12/22/2002
- added stec.pos.CheckObjectStore.check()
- added stec.xpos.CheckObjectStore.check()
- added stec.pos.CheckIndex.check()
- added stec.xpos.CheckIndex.check()
- added stec.pos.CheckIndexedObjectStore.check()
- added stec.xpos.CheckIndexedObjectStore.check()
- added stec.pos.RecoverObjectStore.recover()
- added stec.xpos.RecoverObjectStore.recover()
- added stec.pos.RecoverIndex.recover()
- added stec.xpos.RecoverIndex.recover()
- added -v option to stec.pos.RecoverObjectStore,
  stec.xpos.RecoverObjectStore, stec.pos.RecoverIndex and
  stec.pos.RecoverIndex
- added items recovered count to stec.pos.RecoverObjectStore,
  stec.xpos.RecoverObjectStore, stec.pos.RecoverIndex and
  stec.pos.RecoverIndex
- updated formula used to calculate the average key page count, average 
  value page count, average key length and average value length used by
  stec.pos.CheckObjectStore, stec.xpos.CheckObjectStore, stec.pos.CheckIndex 
  and stec.xpos.CheckIndex
- fixed bug in stec.xpos.ObjectStore.expand() that caused the file length
  volume header to be improperly set and resulted in the store no longer
  being accessible
- fixed bug in stec.xpos.Index.expand() that caused the file length volume
  header to be improperly set and resulted in the index no longer being
  accessible
- fixed bug in stec.pos.Index.create() that resulted in the keys index's
  file length being improperly set when a fixed number of keys index pages
  was specified.
- fixed bug in stec.pos.Index.create() that resulted in the values index's
  file length being improperly set when a fixed number of values index pages
  was specified.
- fixed bug in stec.xpos.Index.create() that resulted in the keys index's
  file length being improperly set when a fixed number of keys index pages
  was specified.
- fixed bug in stec.xpos.Index.create() that resulted in the values index's
  file length being improperly set when a fixed number of values index pages
  was specified.
- updated documentation

Servertec Persistent Object Store 1.2.0 12/03/2002
- added stec.pos.RecoverObjectStore
- added stec.xpos.RecoverObjectStore
- added stec.pos.RecoverIndex
- added stec.xpos.RecoverIndex
- added support for virtual file handles
- added stec.pos.Locker
- added stec.pos.RandomAccessFile
- added stec.pos.RandomAccessFileManager
- added stec.pos.TooManyOpenFilesException
- added stec.pos.TimeoutException
- added stec.pos.FileNotOpenException
- added stec.pos.ObjectStoreEnumerator
- added stec.xpos.ObjectStoreEnumerator
- added stec.pos.Iterator.seek(key),
  stec.pos.Iterator.seek(key, value),
  stec.pos.IndexReference.seek(key),
  stec.pos.IndexReference.seek(key, value),
  stec.xpos.IndexReference.seek(key),
  stec.xpos.IndexReference.seek(key, value),
  stec.pos.IndexedObjectStoreReference.seek(key),
  stec.pos.IndexedObjectStoreReference.seek(key, value),
  stec.xpos.IndexedObjectStoreReference.seek(key),
  stec.xpos.IndexedObjectStoreReference.seek(key, value),
  stec.pos.ObjectStoreReference.keys(boolean),
  stec.pos.ObjectStoreReference.keys(ObjectStoreFilter, boolean),
  stec.pos.ObjectStoreReference.elements(boolean),
  stec.pos.ObjectStoreReference.elements(ObjectStoreFilter, boolean),
  stec.pos.ObjectStoreEnumeration.nextElement(long),
  stec.pos.ObjectStoreEnumeration.close() and
  stec.pos.ObjectStoreEnumeration.isOpen(),
  stec.pos.ObjectStoreReference.getWhoLocked(Object),
  stec.pos.ObjectStoreReference.locks(),
  stec.pos.ObjectStoreReference.lockCount(),
  stec.xpos.ObjectStoreReference.getWhoLocked(Object),
  stec.xpos.ObjectStoreReference.locks(),
  stec.xpos.ObjectStoreReference.lockCount(),
  stec.pos.IndexedReference.getWhoLocked(Object),
  stec.pos.IndexedReference.locks(),
  stec.pos.IndexedReference.lockCount(),
  stec.xpos.IndexedReference.getWhoLocked(Object),
  stec.xpos.IndexedReference.locks(),
  stec.xpos.IndexedReference.lockCount(),
  stec.pos.IndexedObjectStoreReference.getWhoLocked(Object),
  stec.pos.IndexedObjectStoreReference.locks(),
  stec.pos.IndexedObjectStoreReference.lockCount(),
  stec.xpos.IndexedObjectStoreReference.getWhoLocked(Object),
  stec.xpos.IndexedObjectStoreReference.locks(),
  stec.xpos.IndexedObjectStoreReference.lockCount(),
  stec.pos.IndexReference.getKeysClassName(),
  stec.pos.IndexReference.getValuesClassName(),
  stec.pos.IndexReference.getKeysIndexCollator(),
  stec.pos.IndexReference.getValuesIndexCollator(),
  stec.xpos.IndexReference.getKeysClassName(),
  stec.xpos.IndexReference.getValuesClassName(),
  stec.xpos.IndexReference.getKeysIndexCollator(),
  stec.xpos.IndexReference.getValuesIndexCollator(),
- stec.pos.CheckObjectStore and stec.xpos.CheckObjectStore now display detail
  information about the keys, value pairs and the stores
- stec.pos.CheckIndex and stec.xpos.CheckIndex now display detail information
  about the keys, value pairs, index file and stores.
- fixed bug in ObjectStoreEnumeration that resulted in dead-locks when the
  object store is being accessed by multiple threads
- redesigned ObjectStoreEnumeration implementation
- updated documentation

Servertec Persistent Object Store 1.1.0 09/01/2002
- added support for modified B-*trees
- added Index, IndexInstance, IndexReference, IndexFilter, IndexCollator,
  IndexDescriptor, Indexer, Iterator, IndexObject, IndexStore,
  IndexStoreInstance, KeysIndex, KeysIndexInstance, ValuesIndex,
  ValuesIndexInstance, IndexedObjectStore, IndexedObjectStoreReference,
  IndexUtils, POSException, Common, CheckIndex and CheckIndexedObjectStore
  classes
- added address book example
- added simple search engine example
- expanded ByteArray to include support for java.util.Date,
  java.math.BigInteger and java.math.BigDecimal
- documented Index, IndexReference, IndexFilter, IndexCollator,
  IndexDescriptor, Indexer, Iterator, IndexObject, IndexStore,
  IndexedObjectStore, IndexedObjectStoreReference, IndexUtils, POSException,
  CheckIndex and CheckIndexedObjectStore classes
- updated documentation for ByteArray

Servertec Persistent Object Store 1.0.1 02/04/2002
- fixed bug that resulted in stec.pos.ObjectStoreInstance throwing
  java.lang.NullPointerException when an object store was accessed
  concurrently by multiple threads
- fixed bug that resulted in stec.xpos.ObjectStoreInstance throwing
  java.lang.NullPointerException when an object store was accessed
  concurrently by multiple threads
- fixed bug that resulted in data store and mapper corruption when an object
  store was accessed concurrently by multiple threads
- fixed bug in RegistryExplorer that resulted in internal delimiter being
  displayed for path delimiter when tooltip was shown
- updated documentation

Servertec Persistent Object Store 1.0.0 11/26/2001
- updated license

Servertec Persistent Object Store 1.0.0 08/12/2001 
- initial public release
