Release Notes -- Apache Jackrabbit Oak -- Version 0.6

Introduction
------------

Jackrabbit Oak is an effort to implement a scalable and performant
hierarchical content repository for use as the foundation of modern
world-class web sites and  other demanding content applications.

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

Jackrabbit Oak 0.6 is to be considered alpha-level software. Use at your
own risk with no stability or compatibility guarantees.

Changes in Oak 0.6
------------------

New features

[OAK-61]  - Implement JCR path handling
[OAK-169] - Support orderable nodes
[OAK-181] - Observation / indexing: don't create events for index updates
[OAK-261] - Support querying on property types
[OAK-352] - Oak builder for simplified repository construction
[OAK-501] - Add journal support for branches
[OAK-556] - Query engine: support fulltext conditions with relative paths

Improvements

[OAK-140] - PropertyState: data type of empty array property
[OAK-233] - Query should use the NodeStore abstraction
[OAK-234] - Review usage of oak path in NodeTypeManagerImpl
[OAK-249] - Add support for auto created properties and nodes
[OAK-250] - Enforce jcr constraints for 'protected' items
[OAK-266] - Clarify Tree interface
[OAK-288] - QueryTests should use the NodeStore apis
[OAK-295] - Jackrabbit query with spaces in node names
[OAK-297] - QueryIndexProvider should use NodeState
[OAK-300] - Query: QueryResult.getRows().getSize() 
[OAK-303] - The query engine should use a stable root (not always the head)
[OAK-304] - Rename ContentSession.getCurrentRoot()
[OAK-306] - Limit session refresh on namespace registry use
[OAK-308] - NodeIterator limit and offset don't work as expected
[OAK-309] - ParentNodeTest fails (XPath parent node navigation using "..")
[OAK-312] - Use stable root from session in NodeTypeManagerImpl
[OAK-314] - Align interaction of NamespaceRegistry and NodeTypeManager with Session
[OAK-317] - NPE in LowerCaseImpl
[OAK-320] - Query: ability to disable/enable literals in queries to protect against code injection
[OAK-325] - QueryEngine can't handle node type hierarchies
[OAK-326] - Outer Joins test fails
[OAK-341] - Use Guava preconditions instead of asserts to enforce contract 
[OAK-344] - Move NodeStore.getBuilder(NodeState) to NodeState.getBuilder()
[OAK-345] - Split NameMapper into session aware and session less parts
[OAK-346] - Move ValueImpl and ValueFactoryImpl to core
[OAK-350] - Unify PropertyState and CoreValue
[OAK-353] - Remove MicroKernel and revisionId info from the QueryEngine
[OAK-355] - Move QueryEngine reference from ContentSession to Root
[OAK-358] - QueryEngine Lucene Index support for reference search 
[OAK-361] - QueryEngine JCR-SQL 'ESCAPE' parsing & support
[OAK-362] - Unify all the existing index implementations under one package
[OAK-363] - Make conflict handler configurable through Oak builder
[OAK-365] - Add Query Index definition node type
[OAK-367] - Lucene index cannot handle child properties in queries
[OAK-368] - Unify all index definitions under oak:index
[OAK-371] - Query package refactoring
[OAK-375] - Binaries are kept in memory on write access
[OAK-383] - Move package value to plugins/value
[OAK-384] - get rid of add-property json diff syntax
[OAK-387] - Clarify behavior/state of Root and Tree after calling ContentSession#close()
[OAK-388] - Add NodeType Index
[OAK-389] - Simplify code by using PropertyBuilder
[OAK-390] - Move RootTest and TreeTest to correct package (oak/api)
[OAK-391] - Avoid weak references in TreeImpl
[OAK-394] - IndexManagerHook to manage existing indexes
[OAK-408] - Add Definition for the root node
[OAK-415] - Add root NodeState param to QueryIndex.getCost()
[OAK-418] - Reduce/avoid re-resolving the underlying tree instances on every access in Item/Property/NodeDelegate 
[OAK-419] - Query: Conditions are not pushed to "outer join" selectors
[OAK-422] - Replace PurgeListener in TreeImpl with NodeBuilder.reset()
[OAK-423] - Query: org.apache.jackrabbit.oak.spi.query.Cursor.currentRow called too late
[OAK-424] - MongoMicroKernel changes
[OAK-425] - Query Index: pass the query statement to the index for logging purposes
[OAK-438] - Provide the lucene index as an osgi bundle
[OAK-441] - Release oak-core-tests
[OAK-445] - Allow JSON strings to be reclaimed after they've been parsed
[OAK-451] - Disable update functionality in KernelRootBuilder
[OAK-452] - MemoryNodeBuilder improvements
[OAK-456] - RepositoryInitializer for the lucene global index used in tests
[OAK-468] - Identifier- or hash-based access in the MicroKernel
[OAK-471] - Use NodeBuilder.setNode() in MergingNodeStateDiff.addChild() instead of explicit tree traversal
[OAK-473] - Query tck test NodeNameTest fix
[OAK-475] - Query tck test SameNodeJoinConditionTest failing with ParseException
[OAK-483] - Implement AccessControlAction
[OAK-485] - Store jcr:all in the content and update upon privilege registration
[OAK-490] - Add EffectiveNodeTypeManager#isNodeType
[OAK-493] - Drop fallback in Node#getPrimaryType
[OAK-494] - Cleanup ReadOnlyNodeTypeManager
[OAK-506] - Avoid extra MK.nodeExists() calls when already cached
[OAK-511] - Query PropertyIndex that stores the index content as nodes
[OAK-512] - Caching in MicroKernelImpl
[OAK-515] - PropertyIndex should be used for "[indexedProperty] is not null"
[OAK-517] - Property2Index index content store strategy
[OAK-518] - Avoid streaming binaries to the Microkernel which are already there
[OAK-524] - Implement PrincipalManager#getPrincipals(int searchType) 
[OAK-544] - Refactor / cleanup NodeStoreBranch and KernelNodeStoreBranch
[OAK-545] - PrincipalManager#findPrincipal should not search for exact name
[OAK-547] - Property2Index: getCost reads all nodes
[OAK-551] - MongoMK deleted nodes optimization
[OAK-553] - Add NameMapper#getOakName that never returns null
[OAK-557] - Configurable caches in MongoNodeStore
[OAK-558] - Compress affected paths and diff field in MongoCommit
[OAK-562] - Clean up duplicate name conversion in plugins/nodetype
[OAK-563] - Rename SessionDelegate...OrThrow methods
[OAK-564] - Remove duplicate code from NameMapperImpl
[OAK-568] - Duplicated code in TreeLocation implementations
[OAK-570] - Move user mgt related index definitions to security/user 
[OAK-571] - Limit usage of headRevId in sync collection to non-branches
[OAK-573] - OneLevelDiffCommand inefficient for commits with many affected paths
[OAK-574] - Ignore hidden NodeStates in VersionHook
[OAK-576] - Move ArrayUtils to org.apache.jackrabbit.oak.plugins.index.old

Bug fixes

[OAK-21]  - Respect expanded JCR names
[OAK-23]  - Deal with non-standard JCR path passed to the API calls
[OAK-191] - ChangeExtractor uses interfaces from oak.spi.state
[OAK-197] - oak-api ConflictHandler defines method using oak.spi.state.NodeState
[OAK-216] - Occasional org.apache.jackrabbit.mk.store.NotFoundExceptions
[OAK-218] - Session methods rely on accessibility of root node
[OAK-225] - Sling I18N queries not supported by Oak
[OAK-259] - Issues in o.a.j.oak.security.user.UserProviderImpl
[OAK-267] - Repository fails to start with - "cannot branch off a private branch"
[OAK-273] - ValueFormatException expected when overwriting single-valued property with multi-value and vice versa
[OAK-276] - potential clash of commit id's after restart
[OAK-302] - Incorrect results when converting binary values
[OAK-324] - o.a.j.oak.spi.state.AbstractNodeState#toString causes evaluation of complete tree
[OAK-337] - Update MongoMK's logger
[OAK-338] - [MongoMK] Adding duplicate children should throw an error
[OAK-339] - [MongoMK] Fix GetCommandsMongoTest
[OAK-340] - Basic reindex support in the lucene index
[OAK-342] - [MongoMK] Revision id type inconsistency
[OAK-347] - QueryEngine 'like' interpretation error for paths
[OAK-348] - QueryEngine fulltext interpretation & tokenization error
[OAK-349] - [MongoMK] CommitImpl constructor with instructions list should be removed
[OAK-351] - Inconsistency issue when committing a new node under an old parent
[OAK-356] - NamespaceValidator must ignore jcr:primaryType
[OAK-357] - XmlImportHandler creates incorrect hierarchy
[OAK-360] - TypeValidator must ignore childOrder property
[OAK-369] - missing support for relative path consisting of parent-element
[OAK-374] - ConflictHandler must not depend on Oak API
[OAK-376] - Internal class PropertyValue exposed through Oak API
[OAK-379] - Query test failures on buildbot
[OAK-385] - Query: correctly convert values
[OAK-393] - jcr:primaryType missing on /jcr:system/rep:namespaces
[OAK-395] - Inconsistency in Node#setProperty in case of null value
[OAK-397] - PropertyIndex does not respect unique=false
[OAK-398] - Moving referenceable node fails with 'Uniqueness constraint violated'
[OAK-400] - The query engine should pick the index with the lowest cost
[OAK-403] - PropertyIndexLookup does not find indexes
[OAK-404] - Log (slow) queries
[OAK-405] - Node/Property getDefinition() returns first residual definition instead of matching named definition
[OAK-406] - RepositoryTest#testUniqueness should be moved to oak-level
[OAK-407] - potential lost update on merge
[OAK-409] - OSGi related dependencies should be set to provided scoped and not marked as optional
[OAK-413] - TreeLocation.getStatus() cost increases as more content is read below this location
[OAK-421] - NodeBuilder.reset might lead to inconsistent builder
[OAK-427] - ItemDelegate has dependency to TreeImpl#NullLocation
[OAK-428] - Binaries might get removed by garbage collection while still referenced
[OAK-429] - MemoryPropertyBuilder.assignFrom leads to ClassCastException on getPropertyState with date properties
[OAK-432] - Repository does not restart with PrivilegeInitializer
[OAK-435] - Compilation failure due to MongoGridFSBlobStore
[OAK-437] - PropertyDefinition.getValueConstraints() returns null when no constraint is available.
[OAK-439] - Query: if a result limit is set, avoid reading all rows in memory to sort
[OAK-447] - Adding a node with the name of a removed node can lead to an inconsistent hierarchy of node builders
[OAK-448] - Node builder for existing node return null for base state
[OAK-459] - Handle paths with parenthesis
[OAK-465] - PropertyIndex uses TraversingCursor but should not
[OAK-466] - OrderByTest.testChildAxisMixedTypes failing
[OAK-467] - Include Node Type Support changes in jcr commons
[OAK-469] - KernelNodeStoreBranch should reset the head of the current branch after a failed merge
[OAK-472] - NPE on tck query test DescendantNodeJoinConditionTest
[OAK-478] - NPE in the TypeValidator when using the Lucene Index
[OAK-479] - Adding a node to a node that doesn't accept children doesn't fail with ConstraintViolationException
[OAK-487] - FetchHeadRevisionIdAction is inefficient
[OAK-488] - Concurrency issue with FetchCommitsAction
[OAK-491] - NodeType#isNodeType: wrong comparision of jcr names
[OAK-492] - InitialContent: missing jcr primary type with oak:index node
[OAK-497] - No LoginModules configured error on Java 7
[OAK-498] - NamePathMapper should fail on absolute paths escaping root
[OAK-499] - SQL-2 query parser doesn't detect some illegal statements
[OAK-502] - User.getPropertyNames throws StringIndexOutOfBoundsException
[OAK-503] - Microkernel.commit throws AssertionError
[OAK-507] - MicroKernel.commit() throws NotFoundException for an existing node
[OAK-508] - Query storeAsNode cleanup
[OAK-513] - Registering a property type does not retain the type
[OAK-514] - Upgrade scr plugin
[OAK-520] - IllegalStateException in MemoryNodeBuilder
[OAK-531] - NodeBuilder deleted child nodes can come back
[OAK-537] - The Property2Index eagerly and unnecessarily fetches all data
[OAK-539] - Wrong compareTo in micro-kernel Id class
[OAK-540] - MongoMK.getHeadRevision() returns branch revision
[OAK-542] - MongoMK.getNodes() may return changes from other unmerged branch
[OAK-543] - PutTokenImpl not thread safe
[OAK-546] - Query: unexpected result on negative limit / offset
[OAK-549] - PropertyLocation#remove not part of TreeLocation API
[OAK-554] - PropertyStates#createProperty ignores namespace mappings when creating states of type NAME and PATH
[OAK-555] - FetchNodesAction with unlimited depth and same path prefix returns wrong nodes
[OAK-565] - CommitCommand readExistingNodes/mergeNodes called unnecessarily
[OAK-572] - Query: improved cost estimation for the P2 and NodeType index
[OAK-577] - Incorrect usage of WriteResult#getError/getLastError
[OAK-579] - Query: for joins, sometimes no or the wrong index is used
[OAK-416] - TokenInfoTest and TokenProviderImplTest occasionally fail

Changes in Oak 0.5
------------------

Improvements

[OAK-239] - MicroKernel.getRevisionHistory: maxEntries behavior should be documented
[OAK-255] - Implement Node#getReferences() both for REFERENCE and WEAKREFERENCE
[OAK-258] - Dummy implementation for session scoped locks
[OAK-263] - Type of bindings should be covariant in SessionQueryEngine.executeQuery()
[OAK-264] - MicroKernel.diff for depth limited, unspecified changes
[OAK-274] - Split NodeFilter into its own class
[OAK-275] - Introduce TreeLocation interface
[OAK-282] - Use random port in oak-run tests
[OAK-284] - Reduce memory usage of KernelNodeState
[OAK-285] - Split CommitEditor into CommitEditor and Validator interfaces
[OAK-289] - Remove TreeImpl.Children
[OAK-290] - Move Query related interfaces in oak.spi.query
[OAK-292] - Use Guava preconditions instead of asserts to enforce contract
[OAK-315] - Separate built-in node types from ReadWriteNodeTypeManager

Bug fixes

[OAK-136] - NodeDelegate leakage from NodeImpl
[OAK-221] - Clarify nature of 'path' parameter in oak-api
[OAK-228] - inconsistent paths used in oak tests
[OAK-229] - Review root-node shortcut in NamePathMapperImpl
[OAK-230] - Review and fix inconsistent usage of oak-path in oak-jcr
[OAK-238] - ValueFactory: Missing identifier validation when creating (weak)reference value from String
[OAK-240] - mix:mergeConflict violates naming convention
[OAK-242] - Mixin rep:MergeConflict is not a registered node type
[OAK-243] - NodeImpl.getParent() not fully encapsulated in a SessionOperation
[OAK-245] - Add import for org.h2 in oak-mk bundle
[OAK-248] - Review path constants in the oak source code
[OAK-252] - Stop sending observation events on shutdown
[OAK-254] - waitForCommit returns null in certain situations
[OAK-256] - JAAS Authentication failing in OSGi env due to classloading issue
[OAK-257] - NPE in o.a.j.oak.security.privilege.PrivilegeDefinitionImpl constructor
[OAK-265] - waitForCommit gets wrongly triggered on private branch commits
[OAK-268] - XPathQueryEvaluator generates incorrect XPath query
[OAK-272] - every session login causes a mk.branch operation
[OAK-278] - Tree.getStatus() and Tree.getPropertyStatus() fail for items whose parent has been removed
[OAK-279] - ChangeProcessor getting stuck while shutdown
[OAK-286] - Possible NPE in LuceneIndex
[OAK-287] - PrivilegeManagerImplTest.testJcrAll assumes that there are no custom privileges
[OAK-291] - Clarify paths in Root and Tree
[OAK-294] - nt:propertyDefinition has incorrect value constraints for property types
[OAK-296] - PathUtils.isAncestor("/", "/") should return false but returns true
[OAK-299] - Node Type support: SQL2QueryResultTest fails
[OAK-311] - Remapping a namespace breaks existing content
[OAK-313] - Trailing slash not removed for simple path in JCR to Oak path conversion
[OAK-316] - CommitFailedException.throwRepositoryException swallows parts of the stack traces
[OAK-330] - Some MongoMK tests do not use CommitImpl constructor correctly
[OAK-332] - [MongoMK] Node is not visible in head revision
[OAK-334] - Add read-only lucene directory

Changes in Oak 0.4
------------------

New Features

  [OAK-182] - Support for "invisible" internal content
  [OAK-193] - TODO class for partially implemented features
  [OAK-227] - MicroKernel API: add depth parameter to diff method

Improvements

  [OAK-153] - Split the CommitHook interface
  [OAK-156] - Observation events need Session.refresh
  [OAK-158] - Specify fixed memory settings for unit and integration tests
  [OAK-161] - Refactor Tree#getChildStatus
  [OAK-163] - Move the JCR TCK back to the integrationTesting profile
  [OAK-164] - Replace Tree.remove(String) with Tree.remove()
  [OAK-165] - NodeDelegate should not use Tree.getChild() but rather Root.getTree()
  [OAK-166] - Add Tree.isRoot() method instead of relying on Tree.getParent() == null
  [OAK-171] - Add NodeState.compareAgainstBaseState()
  [OAK-172] - Optimize KernelNodeState equality checks
  [OAK-174] - Refactor RootImpl and TreeImpl to take advantage of the child node state builder introduced with OAK-170
  [OAK-176] - Reduce CoreValueFactoryImpl footprint
  [OAK-183] - Remove duplicate fields from NodeImpl and PropertyImpl which are already in the ItemImpl super class
  [OAK-184] - Allow PropertyState.getValues() to work on single-valued properties
  [OAK-186] - Avoid unnecessary rebase operations
  [OAK-192] - Define behavior of Tree#getParent() if the parent is not accessible
  [OAK-194] - Define behavior of Tree#getProperty(String) in case of lack of access
  [OAK-195] - State that Tree#hasProperty returns false of the property is not accessible
  [OAK-196] - Make Root interface permission aware
  [OAK-198] - Refactor RootImpl#merge
  [OAK-199] - KernelNodeStore defines 2 access methods for the CommitEditor
  [OAK-200] - Replace Commons Collections with Guava
  [OAK-232] - Hardcoded "childOrder" in NodeDelegate

Bug fixes

  [OAK-155] - Query: limited support for the deprecated JCR 1.0 query language Query.SQL
  [OAK-173] - MicroKernel filter syntax is not proper JSON
  [OAK-177] - Too fast timeout in MicroKernelIT.waitForCommit
  [OAK-179] - Tests should not fail if there is a jcr:system node
  [OAK-185] - Trying to remove a missing property throws PathNotFoundException
  [OAK-187] - ConcurrentModificationException during gc run
  [OAK-188] - Invalid JSOP encoding in CommitBuilder and KernelNodeStoreBranch
  [OAK-207] - TreeImpl#getStatus() never returns REMOVED
  [OAK-208] - RootImplFuzzIT test failures
  [OAK-209] - BlobStore: use SHA-256 instead of SHA-1, and use two directory levels for FileBlobStore
  [OAK-211] - CompositeEditor should keep the base node state stable
  [OAK-213] - Misleading exception message in NodeImpl#getParent
  [OAK-215] - Make definition of ItemDelegate#getParent permission aware
  [OAK-219] - SessionDelegate#getRoot throws IllegalStateException if the root node is not accessible
  [OAK-224] - Allow the ContentRepositoryImpl to receive a CommitEditor in the constructor

Changes in Oak 0.3
------------------

New Features

  [OAK-9] - Internal tree builder
  [OAK-12] - Implement a test suite for the MicroKernel
  [OAK-33] - Values in oak-core
  [OAK-45] - Add support for branching and merging of private copies to MicroKernel
  [OAK-68] - Extension point for commit validation
  [OAK-75] - specify format and semantics of 'filter' parameter in MicroKernel API
  [OAK-100] - Proper CommitHook handling in NodeStore
  [OAK-119] - Oak performance benchmark
  [OAK-133] - Session.refresh(true) should allow for manual conflict reconciliation

Improvements

  [OAK-15] - Clean up oak-jcr
  [OAK-19] - Consolidate JSON utilities
  [OAK-32] - Drop MicroKernel.dispose()
  [OAK-40] - Define session-info like user identification for communication with oak-api
  [OAK-54] - IOUtils.readVarInt and readVarLong can result in an endless loop on EOF
  [OAK-65] - Naming of NodeState and related classes
  [OAK-80] - Implement batched writing for KernelNodeStore
  [OAK-84] - Delegates for Session, Node, Property and Item
  [OAK-86] - Make setProperty methods of NodeStateBuilder and Tree return the affected property
  [OAK-87] - Declarative services and OSGi configuration
  [OAK-89] - Improve exception handling
  [OAK-92] - Remove org.apache.jackrabbit.mk.HelloWorld
  [OAK-96] - PathUtils should use assertions to enable validation instead of system property
  [OAK-97] - Implement Item.toString() for logging and debugging purposes
  [OAK-102] - Expose the branch feature from NodeStore
  [OAK-106] - Use NodeStateBuilder instances to record changes in TreeImpl
  [OAK-109] - Efficient diffing against the base node state
  [OAK-112] - Refactor ModifiedNodeState and related classes to use type safe iterator utilities
  [OAK-113] - drop MicroKernel getNodes(String, String) convenience signature
  [OAK-115] - ItemDelegate and sub classes should throw IllegalItemStateException on stale items
  [OAK-116] - MicroKernel API: clarify semantics of getNodes depth, offset and count parameters
  [OAK-120] - MicroKernel API: specific retention policy of binaries
  [OAK-122] - Performance test suite
  [OAK-126] - remove unused code
  [OAK-138] - Move client/server package in oak-mk to separate project
  [OAK-145] - Set up Travis CI builds
  [OAK-142] - MicroKernel API: returning the :hash property should be optional
  [OAK-143] - Refactor conflict reconciliation from OAK-133: move inner classes to o.a.j.oak.plugins.value
  [OAK-148] - Drop feature checks from WorkspaceImpl
  [OAK-149] - Automatic session refresh after namespace registry changes
  [OAK-151] - Merge oak-it-jcr to oak-jcr
  [OAK-159] - Do not use in memory Microkernel for TCK

Bug fixes 

  [OAK-16] - Proper ValueFactory implementation and Value handling
  [OAK-43] - Incomplete journal when move and copy operations are involved
  [OAK-47] - Wrong results and NPE with copy operation
  [OAK-49] - Session.getRepository() should return the object through which the Session was acquired
  [OAK-55] - Provide reasonable way to set property on NodeStateEditor
  [OAK-58] - connection leak in h2 persistence
  [OAK-60] - occasional test case failure DbBlobStoreTest#testGarbageCollection
  [OAK-73] - JsopReader and JsopWriter lack javadocs
  [OAK-79] - Copy operation misses some child nodes
  [OAK-83] - Copy operation would recurse indefinitely if memory permitted
  [OAK-85] - NPE and wrong result on copy operation
  [OAK-93] - Tree has wrong parent after move
  [OAK-94] - oak-it/osgi fails due to required packages not being exported
  [OAK-95] - path mapping needs to deal with relative paths
  [OAK-99] - reading binary content fails for certain types of content
  [OAK-105] - Workspace move operation should not do sanity checks in the scope of the current session
  [OAK-110] - NPE in KernelNodeStoreBranch.diffToJsop
  [OAK-121] - Occasional test failure in MicroKernelIT.testBlobs: java.net.SocketException: Broken pipe
  [OAK-130] - Unexpected result of MicroKernel#getJournal after MicroKernel#merge
  [OAK-131] - Session.save() silently discards pending changes
  [OAK-134] - Session.save() should do an implicit refresh(true)
  [OAK-135] - Better support for RangeIterators
  [OAK-139] - Remove JsonBuilder
  [OAK-146] - Wrong value passed to before parameter of CommitHook.afterCommit in KernelNodeStore.merge
  [OAK-147] - Incorrect Comparator in CommitBuilder.persistStagedNodes

Changes in Oak 0.2.1
------------------

New features

  [OAK-59] - Implement Session.move
  [OAK-63] - Implement workspace copy and move

Improvements

  [OAK-29] - Simplify SessionContext
  [OAK-30] - Strongly typed wrapper for the MicroKernel
  [OAK-31] - In-memory MicroKernel for testing
  [OAK-44] - Release managements tweaks
  [OAK-46] - Efficient diffing of large child node lists
  [OAK-48] - MicroKernel.getNodes() should return null for not existing nodes instead of throwing an exception
  [OAK-52] - Create smoke-test build profile
  [OAK-53] - exclude longer running tests in the default maven profile
  [OAK-67] - Initial OSGi Bundle Setup
  [OAK-70] - MicroKernelInputStream test and optimization
  [OAK-71] - Logging dependencies
  [OAK-81] - Remove offset and count parameters from NodeState.getChildNodeEntries()

Bug fixes

  [OAK-20] - Remove usages of MK API from oak-jcr
  [OAK-62] - ConnectionImpl should not acquire Microkernel instance
  [OAK-69] - oak-run fails with NPE
  [OAK-78] - waitForCommit() test failure for MK remoting
  [OAK-82] - Running MicroKernelIT test with the InMem persistence creates a lot of GC threads

Changes in Oak 0.1
------------------

New features

  [OAK-3] - Internal tree model
  [OAK-4] - Runnable jar packaging
  [OAK-5] - JCR bindings for Oak
  [OAK-6] - Setup integration tests and TCK tests
  [OAK-7] - In-memory persistence

Improvements

  [OAK-1] - Setup basic build structure
  [OAK-2] - Use Java 6 as base platform
  [OAK-8] - Make return types of NodeState#getProperties() and NodeState#getChildNodeEntries() covariant
  [OAK-10] - Impedance mismatch between signatures of NodeState#getChildeNodeEntries and MicroKernel#getNodes
  [OAK-24] - Separate component for the microkernel
  [OAK-25] - Factor repository descriptors into separate class
  [OAK-26] - MVCC causes write skew
  [OAK-42] - Prepare for first release

Bug fixes

  [OAK-27] - Remove Authenticator and CredentialsInfo in oak-jcr
  [OAK-38] - KernelNodeState should handle multi valued properties
  [OAK-39] - KernelNodeState does not handle boolean values correctly


For more detailed information about all the changes in this and other
Oak releases, please see the Oak issue tracker at

  https://issues.apache.org/jira/browse/OAK

Release Contents
----------------

This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.md file for instructions on how to build this release.

The source archive is accompanied by SHA1 and MD5 checksums and a PGP
signature that you can use to verify the authenticity of your download.
The public key used for the PGP signature can be found at
https://svn.apache.org/repos/asf/jackrabbit/dist/KEYS.

About Apache Jackrabbit Oak
---------------------------

Oak is an effort implement a scalable and performant hierarchical content 
repository for use as the foundation of modern world-class web sites and 
other demanding content applications. 

The Oak effort is a part of the Apache Jackrabbit project. 
Apache Jackrabbit is a project of the Apache Software Foundation.

For more information, visit http://jackrabbit.apache.org/oak

About The Apache Software Foundation
------------------------------------

Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 100 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 2,500+ contributors.

For more information, visit http://www.apache.org/
