You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by Michael Dürig <md...@apache.org> on 2012/10/26 23:56:29 UTC

[NEWS] Oak news (5th edition)

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