Hi,

Apologies for being so late this time. Unfortunately some business unrelated to Oak kept me busy recently. In the meanwhile a lot has been going on in the Oak code base. To get a better overview, I roughly grouped related topics into categories. As always, please share any missing bits, corrections, concerns and thoughts.

General
-------

- Jukka will host an Oak Hackathon at ApacheCon EU on Monday 5th November. This is a great opportunity to get involved and learn more about the ins and outs of Jackrabbit Oak. See Jukka's original announcement (http://markmail.org/message/namjgc5djy4bnoll) and the ApacheCon wiki page (http://wiki.apache.org/apachecon/HackathonEU12) for further details.

- The discussion about whether Oak should evolve into a project of its own rights or whether it should stay within Jackrabbit seems to converge into the latter direction (http://markmail.org/message/ga4mn2x2xqsvzwg6). Jukka came up with an initial draft of a road map where Oak would finally become Jackrabbit 3.0 after branching 2.6. and 2.x (http://markmail.org/message/u7dsue7ezb4cd4ox).


JCR repository / bindings
-------------------------

- Oak now has a simple mechanism for constructing content repositories for use in embedded deployments and test cases (OAK-352). The mechanism allows for easy set up of the repository and all its component and plugins. Documentation and examples at https://github.com/apache/jackrabbit-oak/blob/trunk/doc/construct.md.

- Support for orderable nodes improved and now also covers moved and copied nodes (OAK-169).

- There is now some initial support for auto created properties and nodes (OAK-249). Nothing pluggable yet but a good start.

- Initial repository setup saw some improvement/clean up and refactoring. It does not depend on internal representations any more but rather uses the NodeStore abstraction now. It is now also capable of handling custom name spaces (OAK-41).


Oak API / core
--------------

- The behaviour of Root and Tree instances after the ContentSession from which they have been obtained has been closed is now defined. A call to any method of such instances will now result in an IllegalStateException (OAK-387).

- The unification of PropertyState with CoreValue (see below) introduced an explicit method for creating Blob values through the Oak API while formerly such Blobs would have been implicitly created through the (now gone) CoreValueFactory (OAK-375). There is an ongoing discussion on the security implications of this capability. See OAK-392 and http://markmail.org/message/5omo54jpue4si3e4

- The usage of WeakReference in Tree instances is necessary for tracking sub trees across move operation but is troublesome with respect to performance. It would be nice if we could get rid of these and replace them with the new state tracking code we have in NodeBuilder. It seems we have to make some concession for transient move operations and let tree instance become invalid under some circumstances (OAK-391). See http://markmail.org/message/b6dcyae362akyogd for the discussion and sample code demonstration the problem.


Security
--------

- There has been quite some activity around user management (OAK-50), privilege management (OAK-64), principal management (OAK-90) and authentication support (OAK-91) lately. Unfortunately I didn't have the time to follow it all and from the mostly terse commit messages, I can't really make out what's the state of affairs here. Angela, could you jump in and provide us with a short update?


Query and indexing
------------------

- Query and indexing underwent some refactoring to make it use the NodeStore APIs instead of depending on the Microkernel directly (OAK-353, OAK-288).

- There is now an index for node types (OAK-388).

- With the return of the index manager (OAK-394) index definitions and changes thereof are automatically picked up.

- Various bug fixes and improvements:
  ° Query engine should pick the index with the lowest cost (OAK-400)
  ° JCR-SQL 'ESCAPE' parsing & support (OAK-361)
  ° NodeIterator limit and offset don't work as expected (OAK-308)


Miscellaneous
-------------

- PropertyState and CoreValue have been unified (OAK-350, OAK-371) such that PropertyState instances now provide direct access to the various representations of a value as Java types. Conversion between these representations have been factored into the Conversions utility class (OAK-380). Property states can be either created through the PropertyStates utility class or through a PropertyBuilder instance. We might make the latter directly available from a NodeBuilder later on (OAK-372).

- The "add-property" json diff syntax has been removed since it used to create confusion and its original intent is no longer valid (OAK-384). See http://apache.markmail.org/thread/3mc3bah2evvfd3ut for the discussion and http://wiki.apache.org/jackrabbit/Jsop for the updated syntax.

- The JCR TCK tests turned out to leak sessions (JCR-3444). Since this is only the case for tests witch fail the setup method (and we still happen to have quite a few of those) this caused problem with our build (OAK-373). The current work around splits the test suite into several suites to release hard references to such sessions.


Michael


Reply via email to