| Release Notes -- Apache Jackrabbit Oak -- Version 0.4 |
| |
| 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.4 is to be considered alpha-level software. Use at your own risk |
| with no stability or compatibility guarantees. |
| |
| 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/ |