Compressed DOM: Huge document support We need to create a virtualized byte array class to drive the compressed DOM system. Right now, there's a single byte array that represents the entire compressed document, but if that byte array is huge, and the document doesn't need to be fully traversed, then most of it is hanging around in memory for no reason. Basic Document-level transactions We need to provide the ability to lock a node (and recursively everything beneath it) to support node-level transactions. This locking should allow for both single writer/many reader and exclusive locking. Scheduling An Application-level scheduler needs to be developed for performing automated management tasks. Events will fall into several classes, including XMLObject method calls and external command execution. The Query Engine The query engine has basic functionality right now. Indexing and XPath query work against a Collection, but no unified cross-Collection query system currently exists. Grouped resource-level transactions A system needs to be designed that allows transactions across a set of resources to be performed. First step towards implementing transaction support is implementation of the document locking mechanism. XQuery support The Xindice projects needs to work with the Xalan project in order to produce a common Apache Foundation XQuery implementation. Entity Catalogue Xindice should have internal XML entity catalogue and utilize it. Catalogue management operations should be made available via Collection API. Authentication Xindice server should support collection level authentication as per XML:DB Database.getCollection method. Authorization Xindice should support collection level and document level authorization of users and groups. Administration Xindice should provide administration tools for database consistency check, recovery, export/import. Specifications We need to continue fleshing out our technical specifications for the core. Javadocs We need to continue fleshing out our technical specifications for the core. Fixed race condition in shutdown sequence. Optimized transmission of collection's symbol table between server and the client for reduced traffic and better performance. Update jetty to version 6.1.11. Update lucene-core library to version 2.4.0. Update lucene-core library to version 2.3.2. Fix implicitly declared namespace prefix "xml" in DOM implementation. Change IndexPattern format to allow to specify path to element/attribute. Update XML-RPC library to the version 3.1. Add full text indexer. It allows to search documents using Lucene queries. Add lucene-core 2.2.0. Update commons-fileupload to version 1.2. Added (required by upload) commons-io 1.3.2. Remove 'Ugly Browser', replaced by WebAdmin. Use Java NIO to lock database on startup. Add WebAdmin to the Xindice core (from scratchpad). Minimum required Java version to build Xindice is now 1.4. Update commons-logging, Xerces, Xalan, xml-apis libraries. Do not create meta collections for the system collections. Save meta collection configuration in the database and initialize meta collection from the configuration on startup. This keeps meta collection configuration consistent with database configuration. Clear Paged and BTree cache on close. Add support for HashFiler in database rebuild tool. Add support for filer parameter in command line tools. Moved configuration file in WAR file to /WEB-INF/config. Updated XindiceServlet to check for xindice.configuration system property before attempting to load configuration from WAR file. Eliminate gap when index is registered but not created yet, causing corruption of index file. Ensure that background indexing processes are complete before shutting database down. Fix support of uncompressed collections. Add test cases. Updated Xindice docs to work with latest Forrest (0.8-dev, trunk). Fix MemValueIndexer for starts-with queries. Fix indexing of multi-byte numeric types (long, double, etc). Due to the change in the BTree, existing databases has to be re-built using DatabaseRebuild command line utility. Ignore SAXNotSupportedException in DOMParser.setFeature if feature is being set to false. (Needed for Oracle 10g application server). Change InlineMetaReader.read() method signature to remove unnecessary data copying. Update Ant to 1.6.5 version. Fixed XMLTools to only print out the help menu when needed. Also added the ability to set pagecount from the command line. Fix exception executing xpath query in collections with mixed (XML and binary) content. Stop timer thread on database shutdown. Add pagecount configuration parameter to Paged based filers: HashFiler, BTreeFiler. HashFiler did not allocate root page correctly. BTreeFiler did not use first pagecount pages due to bug introduced in 1.1b4. Implement DOM3 API compatibility. Data files were created 6Mb in size instead of 4Mb (default value). Fix ClassCastException in MemValueIndexer. Make an attempt to lock a database before opening it up. Prevents opening up same database by different processes, resulting in database corruption. Make sure that XUpdate commands are run only once per document. In case XUpdate command does not complete successfully, revert all affected documents to the original state. This requires buffering of modified documents - so XUpdate on large collection might require lots of memory. Added support for current Xalan CVS (post 2.6.0 release). Fixed memory leak in command line tool, addmultiple command. Fixed bug in xindice.bat, support JAVA_HOME with spaces. Fixed bugs in TreeWalkerImpl, methods getRoot, getCurrentNode, nextNode, previousNode. Added TreeWalker unit test. Make SymbolTableSymbols singleton. Fixed bug in SymbolSerializer. SymbolDeserializer expects DocumentImpl, but SymbolSerializer was sending document element. Fixed saving of custom meta data documents. Fixed addmultiple command with local (-l) database Fixed NullPointerException in importNamespaces. Fixed bug in flushing database configuration to the disk. Fixed embedded Collection's getCanonicalName. Implemented support for MetaData for Binary resources. Support boolean, string, and number XPath query results. XPath query resulting in text nodes will return text node wrapped into the <result> element in http://xml.apache.org/xindice/Query namespace. XPath query resulting in attribute nodes will return attributes on the <result> element in http://xml.apache.org/xindice/Query namespace. Fixed bug with DocumentImpl.importNode when importing attribute nodes. Removing Eclipse UI plugin due to lack of support. Implemented close() in Collection, IndexManager. XML-RPC interface now passes XMLDBException codes as XML-RPC faults. Xindice server and XML-RPC driver support basic HTTP authentication. Xindice managed driver class renamed to DatabaseImpl and supports same configuration parameters as embedded driver. Xindice managed driver supports multiple database instances. Xindice server and XML-RPC driver support multiple database instances. Xindice now uses Apache License, Version 2.0 In results of the queries like "//*", declare http://xml.apache.org/xindice/Query namespace just once. Lexus, XUpdate implementation, updated to the current CVS version (20040205). Embedded driver has new configuration parameters (see javadoc for details), and supports multiple database instances (see system.xml for an example). Add max-descriptors configuration attribute to all Filer implementations based on Paged. Default value is 16 file descriptors (same as before). Added xindice command line tool to the jar distribution. Xindice startup script and command line scripts are rewritten to support Windows 95/98/ME. Optimize flushing of the database configuration, flush only when there were changes made. Update XML:DB APIs to the 20030701 snapshot. Added xindice command line tool to the war distribution. It is located in webapps/xindice/WEB-INF folder once webapp is unpacked. xindice.configuration servlet configuration parameter can point to the file on local file system if absolute path is used, relative path should point to webapp context resource. Command line tool now support binary documents. New command add_resource implemented, which adds binary resources to the collection. Inline meta data and indexers now can co-exist in the same collection. GetResource, GetDocument XML-RPC messages will return no result if resource not found. Added binary resource support to XML-RPC driver. Updated BinaryResourceImpl to support only byte[] content, as per XML:DB API. Fixed exception in BTreeFiler when adding value with large key (more than 4kb). Fixed concurrency issues in Paged, BTreeFiler, and HashFiler. Unit tests for concurrent writes added. Properties PROP_XINDICE_CONFIGURATION, PROP_XINDICE_DB_HOME for embed driver can now be passed when driver is instantiated by org.apache.xindice.client.xmldb.DatabaseImpl Upgrade libraries: Xerces to version 2.6.0, Xalan to version 2.5.2. Change URLs in debug tool to "/xindice/?/db". Drop SysSymbols when deleting collection. Updated build scripts: all build properties extracted into build.properties file. You can override them in local.build.properties file. Added new fault code, DBE_CANNOT_READ Added new service, MetaService. It provides access to the metadata. Enable meta data in the system.xml file XMLSerializable streamToXML method does not modify passed document. It uses provided document only as factory for nodes. Webapp context renamed to /xindice (all lowercase). When using xindice with Jetty, port is set to 8888. Documentation updated to reflect this. JDK 1.4 works with Xindice and it is supported. Collection meta data now has correct collection creation time. Added XINDICE_DB_HOME environment variable and corresponding xindice.db.home system property. This property takes precedence over db location preferred by the driver (XindiceServlet prefers WEB-INF folder and embedded driver prefers directory where system.xml file is located). Update ant to version 1.5.3 and move it into tools/ant/. Build script modified to call ant script instead of ant class. Compilation from the Cygwin environment now working. Xindice has a new website.