Release Notes for JBoss DNA Version 0.7
JCR Support
With version 0.7, JBoss DNA introduces support for JCR query and search with a number of query languages, including the JCR XPath language (required by the 1.0 specification), the JCR-SQL2 dialect defined by the JCR 2.0 specification, and a full-text search language. This release also adds support for JCR locking and observation. This release includes a new JDBC metadata connector, improved file system and SVN connectors, a new CSV text sequencer, a new DDL sequencer, a new Java class file sequencer that can be used in conjunction with the ZIP file sequencer to extract the Java metadata from JARs, WARs, and EAR files. This release also brings numerous bug fixes and improvements, and upgrades all third-party dependencies to the latest versions available at the time of release.
This means that JBoss DNA now implements all of the JCR Level 1 and Level 2 features, along with the optional locking and observation features. The only optional feature not implemented is versioning, and that will be coming soon. This version passes more than 95% of the JCR TCK tests, and all of the failures are because of a handful of known issues. Fortunately, most of these are either less-frequently-used features of JCR or issues that can be worked around.
The JBoss DNA JCR implementation is actually very close to being JCR-compliant, but it only passes about 96% of the JCR TCK. Our goal is to pass 100% of the TCK tests by the 1.0 release. Additionally, the JCR specification allows some latitude to implementors for some implementation details. The sections below clarify JBoss DNA's current and planned behavior. As always, please consult the current list of known issues and bugs.
Accessing the Repository
- JAAS Authentication
- HTTP Authentication (for REST Services Only)
Namespaces
- Session Remapping
- Permanent Addition/Deletion
Reading Repository Content
- Traversal Access
- Direct Access
- Same-Name Siblings
- Multi-Value Properties
- All Property Types Supported
- Property Type Conversion
Writing Repository Content
- Create/Update/Delete Nodes
- Create/Update/Delete Properties (Through Parent Nodes)
- Moving, Copying, Cloning
- Adding/Removing Mixins
Query / Search
- XPath
- JCR-SQL2
- Full-Text Search
Importing/Exporting Repository Content
- System View Import/Export
- Document View Import/Export
Node Types
- Inheritance Among Node Types
- Discovering available Node Types
- Discovering the Node Types of a Node
- Discovering the Definition of a Node Type
- Property Constraints
- Automatic Item Creation
- Predefined Node Types (All But Version-Related Types)
- Custom Node Type Registration (CND-Based and Template-Based)
Repository Metadata under System Node
- Permanent Namespace Mappings
- Node Types (Built-In and User-Registered)
- Active Locks
JCR Optional Features
DNA-Specific Features
Connectors
- Federated Connector
- JPA Connector (read-write/persistent storage)
- In-Memory Connector (read-write)
- Infinispan Connector (read-write/persistent storage)
- JBoss Cache Connector (read-write/persistent storage)
- File System Connector (read-write/persistent storage)
- Subversion Connector (read-write/persistent storage)
- JDBC Metadata Connector (read-only)
Sequencers
- Compact Node Definition (CND) Sequencer
- DDL Sequencer
- Image Sequencer
- Java Source Sequencer
- Java Class Sequencer
- MP3 Sequencer
- MS Office Sequencer
- Text Sequencers (Delimited and Fixed Width)
- XML Sequencer
- Zip File Sequencer (also WARs, JARs, and EARs)
Deployment/Access Models
- JNDI-Based Deployment
- Embedded (in Server or JEE Archive) Deployment
- Access through Eclipse Plugin
- Access through RESTful Services
Bug
- [DNA-518] - JPA connector fails to properly clone or update from another workspace
- [DNA-522] - CND files that use keywords as names cannot be read in
- [DNA-523] - Spelling and grammar errors in on-line JBoss DNA Reference Guide
- [DNA-524] - JcrValueTest Fails Due To Timezone
- [DNA-526] - IllegalStateException calling TokenStream.canConsume(String str) after consuming all tokens via canConsume(String[])
- [DNA-527] - JcrSingleValuePropertyTest's Date Test Fails On Ubuntu
- [DNA-528] - Loading Additional Mimetypes Via Stream Does Not Work in MimeTypeUtil
- [DNA-530] - ClasspathLocalizationRepository Should Not Use Thread Context Class Loader
- [DNA-531] - Servers View Should Provide Global Action Handlers
- [DNA-533] - Decorator Does Not Add/Remove Overaly Image Immediately After The Publishing Operation
- [DNA-538] - Duplicate Error Messages Generated When A Connection To A Server Cannot Be Established
- [DNA-541] - Locking Implementation Does Not Support Timeouts
- [DNA-542] - jcr:uuid Property in dna:lock Custom Type Needs To Be Renamed
- [DNA-546] - JCR Workspace and Session Imports Can Fail on JPA Connector
- [DNA-547] - TCK Tests for Locking and Moving Nodes Fail for JPA Connector
- [DNA-549] - Creating A New Property And Changing An Existing Property Should Have Different ChangeRequest Types
- [DNA-551] - graph.Location's equals(Object) and hashCode() Methods Are Not Consistent
- [DNA-554] - GraphSession does not correctly compute whether changes are in branch being saved or refreshed
- [DNA-555] - Requirement for extracting indexed content during parsing using TokenStream
- [DNA-556] - Need a graph-specific SequencerOutput class to simplify testing sequencer results.
- [DNA-558] - DNA documentation problem
- [DNA-559] - GraphSession cloneImmediate fails to remove existing nodes from cache because of Set ordering variations
- [DNA-567] - missing word in documentation
- [DNA-568] - Observable.register(Observer) Contract Is Being Violated
- [DNA-569] - Enhance Graph.java's Subgraph object toString() method to show recursive node structure and properties.
- [DNA-570] - JcrObservationManager's Logic For Filtering Events Based On Node Types Is Incorrect
- [DNA-571] - JcrObservationManager's Logic For Filtering Events Based On Path Is Incorrect For Property Events
- [DNA-572] - FederatedRepositoryConnection Can Freeze When Exception Thrown from RepositoryConnection.execute(...)
- [DNA-573] - FederatedRepositoryConnection Can Interleave Successive Requests
- [DNA-574] - SetPropertyRequest.toString() Can Throw a NullPointerException
- [DNA-575] - JoinRequestProcessor Enters Infinite Loop if VerifyWorkspaceRequest Has Error
- [DNA-579] - JcrObservationManagerTest Should Check To See If Listeners Receive Too Many Events
- [DNA-582] - The connector.execute(...) method is not 'all-or-nothing'
- [DNA-588] - The connectors should release all resources before notifying observer of events
- [DNA-589] - The JcrRepository.Option.UPDATE_INDEXES_SYNCHRONOUSLY has no effect
- [DNA-591] - NullPointerException in JcrNodeDefinition.ensureRequiredPrimaryTypesLoaded()
- [DNA-593] - File system connector documentation is missing the 'updatesAllowed' property
- [DNA-594] - The JDBC Metadata Connector documentation in Reference Guide is missing
- [DNA-595] - Connector chapters in the Reference Guide should should examples of configuring in Java code and XML configuration
- [DNA-597] - Namespace inconsistencies in example and sequencer CND files
- [DNA-598] - Shutting down JcrEngine returns, but leaves idle threads running (preventing shutdown of VM) for 60 seconds
- [DNA-600] - mvn eclipse:clean eclipse:eclipse doesn't work on dna-connector-store-jpa
- [DNA-601] - POM Version of HSQLDB No Longer Exists in Maven Repository
- [DNA-602] - Can't Set Multi-Valued Property from Object[] through StreamSequencerAdapter
- [DNA-606] - RepositoryConnectionPool Returns Invalid Connections to the Available Pool
- [DNA-608] - RepositoryConnectionPool.ConnectionWrapper.close Closes the Underlying Connection
- [DNA-609] - DnaEngine RepositoryConnectionFactory Returns Unpooled Connections
- [DNA-613] - XPath order-by clause is not working
- [DNA-616] - JPA connector pooling doesn't appear to shutdown
- [DNA-617] - NPE while updating indexes (during integration tests)
- [DNA-618] - SVN connector integration tests are failing with '404 Not Found'
- [DNA-623] - JDBC Metadata TCK Test Failing in Nightly Integration Build
- [DNA-625] - JdbcMetadataRepositoryTckTest Failing When Run From Command-Line
- [DNA-626] - Change Default Path Repository Cache Behavior to Not Cache
- [DNA-630] - Executing a query resulted in a "read past EOF" error
- [DNA-632] - The JDBC Metadata Connector is failing 3 XPath TCK tests
- [DNA-639] - JcrTckTest Missing Two Test Cases
- [DNA-644] - BasicJpaRepositoryTckTest has failures related to XPath queries
Feature Request
- [DNA-37] - Federate schema information from relational sources
- [DNA-49] - Sequence DDL files
- [DNA-105] - Sequence content from delimited text files
- [DNA-229] - dna-sequencer-csv (sequence csv files)
- [DNA-256] - Packaging and deployment
- [DNA-308] - Eclipse plug-in providing simple publishing capabilities
- [DNA-324] - Create publishing-related decorators that can be attached to workspace-related views
- [DNA-325] - Create preference page for working with DNA
- [DNA-390] - BatchRequestBuilder Property/Create Folding Behavior
- [DNA-457] - Add JSR-170 Locking Optional Feature
- [DNA-460] - NodeTypeManager.unregisterType
- [DNA-467] - Add search/query support to the graph API
- [DNA-468] - Add XPath query language support
- [DNA-511] - The JPA Source should provide a way of producing the DDL for the database dialect
- [DNA-539] - AbstractJcrNode.location.getUuid() Returns Null for Referenceable Nodes
- [DNA-543] - Add support for JCR-SQL2
- [DNA-544] - Add support for JCR 1.0 variant of XPath
- [DNA-550] - Add method to Graph to read a set of properties on multiple nodes
- [DNA-552] - Support BETWEEN and NOT BETWEEN in WHERE clause of SQL language and abstract query model
- [DNA-553] - File system connector should make it possible to extend/customize the properties on the nt:folder, nt:file, and nt:resource nodes
- [DNA-565] - JCR Implementation Should Support Anonymous Access More Easily
- [DNA-566] - Provide a short-circuit (for debugging purposes only) that does not use federation in JcrRepository
- [DNA-578] - JPA Connector Simple Model Does Not Support "supportsUpdates" Property
- [DNA-596] - Relax security by default to be more accessible to new users
- [DNA-603] - File System Repository Should Be Ported To Use Path Repository
- [DNA-604] - Support for create or write new Folders/Nodes and File with content / Item into the SVN repos
- [DNA-605] - svn connector to support for copying folder with file or file with content to a new folder or to a new file
- [DNA-607] - Delete node/folder or rather item/file from the svn repository through dna svn connector
- [DNA-615] - PathRepository Should Provide Support for Caching
- [DNA-624] - Canonicalize Property Names/Behavior in SVN Connector
- [DNA-634] - Add write support to the SVN connector
- [DNA-640] - JNDI-Based Deployment
Task
- [DNA-464] - Add use of file system connector to repositories example
- [DNA-507] - Update developer documentation explaining use of Utility methods for instead of doPrivileged
- [DNA-521] - Define infrastructure for testing with multiple DBMSes
- [DNA-525] - Configure connection information for QA databases
- [DNA-532] - Delete IHttpConnection Interface Since There Is Only One Implementation That Works Correctly
- [DNA-537] - Update Reference Guide To Include Instructions On Developing/Building/Testing/Releasing The Eclipse Plugin
- [DNA-548] - The Session That Graph Changes Originate From Should Be Available To The NetChangeObserver
- [DNA-560] - Remove the 'dna-jcr-gen' project because of licensing issues
- [DNA-564] - Move Eclipse plugin code outside of the Maven modules
- [DNA-577] - Change the default model of the JPA connector from 'Basic' to 'Simple'
- [DNA-592] - The DNA REST Server Registry Should Be Moved From The DNA REST Client Maven Project To The Eclipse Plugin
- [DNA-614] - REST client osgi bundle for the Eclipse plugin
- [DNA-619] - Remove Eclipse IDE Comments That Denote A String Need Not Be Externalized
- [DNA-621] - Document search/query languages in the Reference Guide
- [DNA-622] - Remove from SVN the 'dna-search' project, which contains only empty directories
- [DNA-629] - Document The REST Client API In The Reference Guide
- [DNA-633] - Paragraphs that explains how to use the pax-construct utils to make a bundle of dependencies
- [DNA-638] - Delete the 'dna-jcr-tck' project, as it is no longer used
Thirdparty Change
- [DNA-529] - Upgrade to Lucene 2.9
- [DNA-557] - Upgrade RESTEasy from 1.1.GA to 1.2.1.GA
- [DNA-561] - Google Collections API compatibility issues w/ Weld/AS 6
- [DNA-562] - Upgrade to Lucene 3.0
- [DNA-599] - Upgrade to SVNKit 1.3.0
Sub-task
- [DNA-285] - Pass all Level 1 TCK unit tests
- [DNA-319] - Create plug-in project in SVN
- [DNA-320] - Create connection management view
- [DNA-321] - Create publishing-related actions
- [DNA-322] - Create context menu and menu bar items tied to publishing actions
- [DNA-326] - Create documentation
- [DNA-327] - Create feature
- [DNA-328] - Create update site
- [DNA-329] - Create build scripts for integration with Hudson and running of continuous tests
- [DNA-406] - Find initial control sets of DDL files
- [DNA-413] - Create initial DDL grammar and test it.
- [DNA-414] - Parse CREATE/ALTER/DROP/RENAME TABLE statements for MySQL
- [DNA-416] - Support parsing of CREATE/ALTER/DROP TABLE statements for PostgreSQL
- [DNA-417] - Support parsing of CREATE/ALTER/DROP TABLE statements for Oracle SQL
- [DNA-418] - Support parsing of CREATE/ALTER/DROP TABLE statements for SQL Server
- [DNA-419] - Parse CREATE/ALTER/DROP VIEW statements for MySQL
- [DNA-420] - Support parsing of CREATE/ALTER/DROP VIEW statements for PostgreSQL
- [DNA-421] - Support parsing of CREATE/ALTER/DROP VIEW statements for Oracle SQL
- [DNA-422] - Support parsing of CREATE/ALTER/DROP VIEW statements for SQL Server
- [DNA-423] - Parse CREATE/ALTER/DROP/RENAME DATABASE statements for MySQL
- [DNA-424] - Support parsing of CREATE/ALTER/DROP DATABASE statements for PostgreSQL
- [DNA-425] - Support parsing of CREATE/ALTER/DROP DATABASE statements for Oracle SQL
- [DNA-426] - Support parsing of CREATE/ALTER/DROP DATABASE statements for SQL Server
- [DNA-427] - Parse CREATE/ALTER/DROP TRIGGERS statements for MySQL
- [DNA-428] - Support parsing of CREATE/ALTER/DROP TRIGGERS statements for PostgreSQL
- [DNA-429] - Support parsing of CREATE/ALTER/DROP TRIGGERS statements for Oracle SQL
- [DNA-430] - Support parsing of CREATE/ALTER/DROP TRIGGERS statements for SQL Server
- [DNA-431] - Parse CREATE/DROP INDEX statements for MySQL
- [DNA-432] - Support parsing of CREATE/DROP INDEX statements for PostgreSQL
- [DNA-433] - Support parsing of CREATE/DROP INDEX statements for Oracle SQL
- [DNA-434] - Support parsing of CREATE/DROP INDEX statements for SQL Server
- [DNA-435] - Parse more statement for MySQL
- [DNA-583] - The In-Memory connector.execute(...) method is not 'all-or-nothing'
- [DNA-585] - The JPA connector.execute(...) method is not 'all-or-nothing'