You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/04/11 09:24:22 UTC
svn commit: r1324601 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/api/
oak-core/src/main/java/org/apache/jackrabbit/oak/core/
oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/
oak-core/src/test/java/org/apache/jac...
Author: jukka
Date: Wed Apr 11 07:24:21 2012
New Revision: 1324601
URL: http://svn.apache.org/viewvc?rev=1324601&view=rev
Log:
OAK-18: Define Oak API
Copy tree model interfaces from .mk.model in oak-mk to .oak.api in oak-core.
This makes .oak.api independent of oak-mk.
Remove Scalar and NodeStateEditor from oak-mk as they are not used there
Remove PropertyState.getEncodedValue from oak-core as it's not used there
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChildNodeEntry.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateDiff.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateEditor.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStore.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Scalar.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractChildNodeEntry.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractNodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractPropertyState.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ScalarImpl.java
- copied, changed from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/ScalarImpl.java
Removed:
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/ScalarImpl.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Connection.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelChildNodeEntry.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelPropertyState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorFuzzIT.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/LargeKernelNodeStateTest.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/json/JsonBuilder.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/AbstractRevisionStore.java
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/StoredNodeAsState.java
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChildNodeEntry.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChildNodeEntry.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChildNodeEntry.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/ChildNodeEntry.java Wed Apr 11 07:24:21 2012
@@ -6,7 +6,7 @@
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,32 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
-
-import java.io.InputStream;
+package org.apache.jackrabbit.oak.api;
/**
- * An immutable, typed scalar value.
+ * TODO: document
+ *
+ * <h2>Equality and hash codes</h2>
+ * <p>
+ * Two child node entries are considered equal if and only if their names
+ * and referenced node states match. The {@link Object#equals(Object)}
+ * method needs to be implemented so that it complies with this definition.
+ * And while child node entries are not meant for use as hash keys, the
+ * {@link Object#hashCode()} method should still be implemented according
+ * to this equality contract.
*/
-public interface Scalar {
- enum Type {BOOLEAN, LONG, DOUBLE, BINARY, STRING, NULL}
+public interface ChildNodeEntry {
/**
- * Returns the value type.
- * <p>
- *
- * @return value type
+ * TODO: document
*/
- Type getType();
-
- boolean getBoolean();
-
- long getLong();
+ String getName();
- double getDouble();
-
- InputStream getInputStream();
-
- String getString();
+ /**
+ * TODO: document
+ */
+ NodeState getNode();
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Connection.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Connection.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Connection.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Connection.java Wed Apr 11 07:24:21 2012
@@ -16,9 +16,6 @@
*/
package org.apache.jackrabbit.oak.api;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.NodeStateEditor;
-
import java.io.Closeable;
/**
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeState.java?rev=1324601&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeState.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeState.java Wed Apr 11 07:24:21 2012
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.api;
+
+/**
+ * A content tree consists of nodes and properties, each of which
+ * evolves through different states during its lifecycle. This interface
+ * represents a specific, immutable state of a node in a content tree.
+ * A node consists of an unordered set of name -> item mappings, where
+ * each item is either a property or a child node.
+ * <p>
+ * Depending on context, a NodeState instance can be interpreted as
+ * representing the state of just that node, of the subtree starting at
+ * that node, or of an entire tree in case it's a root node.
+ * <p>
+ * The crucial difference between this interface and the similarly named
+ * class in Jackrabbit 2.x is that this interface represents a specific,
+ * immutable state of a node, whereas the Jackrabbit 2.x class represented
+ * the <em>current</em> state of a node.
+ *
+ * <h2>Immutability and thread-safety</h2>
+ * <p>
+ * As mentioned above, all node and property states are always immutable.
+ * Thus repeating a method call is always guaranteed to produce the same
+ * result as before unless some internal error occurs (see below). This
+ * immutability only applies to a specific state instance. Different states
+ * of a node can obviously be different, and in some cases even different
+ * instances of the same state may behave slightly differently. For example
+ * due to performance optimization or other similar changes the iteration
+ * order of properties or child nodes may be different for two instances
+ * of the same state.
+ * <p>
+ * In addition to being immutable, a specific state instance guaranteed to
+ * be fully thread-safe. Possible caching or other internal changes need to
+ * be properly synchronized so that any number of concurrent clients can
+ * safely access a state instance.
+ *
+ * <h2>Persistence and error-handling</h2>
+ * <p>
+ * A node state can be (and often is) backed by local files or network
+ * resources. All IO operations or related concerns like caching should be
+ * handled transparently below this interface. Potential IO problems and
+ * recovery attempts like retrying a timed-out network access need to be
+ * handled below this interface, and only hard errors should be thrown up
+ * as {@link RuntimeException unchecked exceptions} that higher level code
+ * is not expected to be able to recover from.
+ * <p>
+ * Since this interface exposes no higher level constructs like access
+ * controls, locking, node types or even path parsing, there's no way
+ * for content access to fail because of such concerns. Such functionality
+ * and related checked exceptions or other control flow constructs should
+ * be implemented on a higher level above this interface.
+ *
+ * <h2>Decoration and virtual content</h2>
+ * <p>
+ * Not all content exposed by this interface needs to be backed by actual
+ * persisted data. An implementation may want to provide derived data,
+ * like for example the aggregate size of the entire subtree as an
+ * extra virtual property. A virtualization, sharding or caching layer
+ * could provide a composite view over multiple underlying content trees.
+ * Or a basic access control layer could decide to hide certain content
+ * based on specific rules. All such features need to be implemented
+ * according to the API contract of this interface. A separate higher level
+ * interface needs to be used if an implementation can't for example
+ * guarantee immutability of exposed content as discussed above.
+ *
+ * <h2>Equality and hash codes</h2>
+ * <p>
+ * Two node states are considered equal if and only if their properties and
+ * child nodes match, regardless of ordering. The
+ * {@link Object#equals(Object)} method needs to be implemented so that it
+ * complies with this definition. And while node states are not meant for
+ * use as hash keys, the {@link Object#hashCode()} method should still be
+ * implemented according to this equality contract.
+ */
+public interface NodeState {
+
+ /**
+ * Returns the named property. The name is an opaque string and
+ * is not parsed or otherwise interpreted by this method.
+ * <p>
+ * The namespace of properties and child nodes is shared, so if
+ * this method returns a non-<code>null</code> value for a given
+ * name, then {@link #getChildNode(String)} is guaranteed to return
+ * <code>null</code> for the same name.
+ *
+ * @param name name of the property to return
+ * @return named property, or <code>null</code> if not found
+ */
+ PropertyState getProperty(String name);
+
+ /**
+ * Returns the number of properties of this node.
+ *
+ * @return number of properties
+ */
+ long getPropertyCount();
+
+ /**
+ * Returns an iterable of the properties of this node. Multiple
+ * iterations are guaranteed to return the properties in the same
+ * order, but the specific order used is implementation-dependent
+ * and may change across different states of the same node.
+ *
+ * @return properties in some stable order
+ */
+ Iterable<? extends PropertyState> getProperties();
+
+ /**
+ * Returns the named child node. The name is an opaque string and
+ * is not parsed or otherwise interpreted by this method.
+ * <p>
+ * The namespace of properties and child nodes is shared, so if
+ * this method returns a non-<code>null</code> value for a given
+ * name, then {@link #getProperty(String)} is guaranteed to return
+ * <code>null</code> for the same name.
+ *
+ * @param name name of the child node to return
+ * @return named child node, or <code>null</code> if not found
+ */
+ NodeState getChildNode(String name);
+
+ /**
+ * Returns the number of child nodes of this node.
+ *
+ * @return number of child nodes
+ */
+ long getChildNodeCount();
+
+ /**
+ * Returns an iterable of the child node entries starting from the
+ * given offset. Multiple iterations are guaranteed to return the
+ * child nodes in the same order, but the specific order used is
+ * implementation-dependent and may change across different states
+ * of the same node. An empty iterable is returned if the given
+ * offset is greater than the offset of the last child node entry.
+ *
+ * @param offset zero-based offset of the first entry to return
+ * @param count maximum number of entries to return,
+ * or -1 for all remaining entries
+ * @return requested child node entries in some stable order
+ */
+ Iterable<? extends ChildNodeEntry> getChildNodeEntries(long offset, int count);
+
+}
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateDiff.java?rev=1324601&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateDiff.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateDiff.java Wed Apr 11 07:24:21 2012
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.api;
+
+/**
+ * Handler of node state differences.
+ * The {@link NodeStore#compare(NodeState, NodeState, NodeStateDiff)} reports
+ * detected node state differences by calling methods of a handler instance
+ * that implements this interface. The compare method will go through all
+ * properties and child nodes of the two states, calling the relevant
+ * added, changed or deleted methods where appropriate. Differences in
+ * the ordering of properties or child nodes do not affect the comparison,
+ * and the order in which such differences are reported is unspecified.
+ */
+public interface NodeStateDiff {
+
+ /**
+ * Called for all added properties.
+ *
+ * @param after property state after the change
+ */
+ void propertyAdded(PropertyState after);
+
+ /**
+ * Called for all changed properties. The names of the given two
+ * property states are guaranteed to be the same.
+ *
+ * @param before property state before the change
+ * @param after property state after the change
+ */
+ void propertyChanged(PropertyState before, PropertyState after);
+
+ /**
+ * Called for all deleted properties.
+ *
+ * @param before property state before the change
+ */
+ void propertyDeleted(PropertyState before);
+
+ /**
+ * Called for all added child nodes.
+ *
+ * @param name name of the added child node
+ * @param after child node state after the change
+ */
+ void childNodeAdded(String name, NodeState after);
+
+ /**
+ * Called for all changed child nodes.
+ *
+ * @param name name of the changed child node
+ * @param before child node state before the change
+ * @param after child node state after the change
+ */
+ void childNodeChanged(String name, NodeState before, NodeState after);
+
+ /**
+ * Called for all deleted child nodes.
+ *
+ * @param name name of the deleted child node
+ * @param before child node state before the change
+ */
+ void childNodeDeleted(String name, NodeState before);
+
+}
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateEditor.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateEditor.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateEditor.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStateEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStateEditor.java Wed Apr 11 07:24:21 2012
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.api;
import java.util.List;
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStore.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStore.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStore.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/NodeStore.java Wed Apr 11 07:24:21 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.api;
/**
* Storage abstraction for content trees. At any given point in time
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/PropertyState.java Wed Apr 11 07:24:21 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.api;
/**
* Immutable property state. A property consists of a name and
@@ -37,11 +37,6 @@ public interface PropertyState {
String getName();
/**
- * @return the JSON encoded value of this property state.
- */
- String getEncodedValue();
-
- /**
* Determine whether this is a multi valued property
* @return {@code true} if and only if this is a multi valued property.
*/
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Scalar.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Scalar.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Scalar.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/Scalar.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Scalar.java Wed Apr 11 07:24:21 2012
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.api;
import java.io.InputStream;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java Wed Apr 11 07:24:21 2012
@@ -18,12 +18,12 @@ package org.apache.jackrabbit.oak.core;
import org.apache.jackrabbit.mk.MicroKernelFactory;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.NodeStateEditor;
-import org.apache.jackrabbit.mk.model.NodeStore;
import org.apache.jackrabbit.oak.api.AuthInfo;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.Connection;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.NodeStateEditor;
+import org.apache.jackrabbit.oak.api.NodeStore;
import org.apache.jackrabbit.oak.api.QueryEngine;
import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
import org.apache.jackrabbit.oak.query.QueryEngineImpl;
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractChildNodeEntry.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractChildNodeEntry.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractChildNodeEntry.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractChildNodeEntry.java Wed Apr 11 07:24:21 2012
@@ -14,56 +14,47 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.kernel;
-import org.apache.jackrabbit.mk.json.JsonBuilder;
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
/**
- * Abstract base class for {@link PropertyState} implementations.
+ * Abstract base class for {@link ChildNodeEntry} implementations.
* This base class contains default implementations of the
* {@link #equals(Object)} and {@link #hashCode()} methods based on
* the implemented interface.
*/
-public abstract class AbstractPropertyState implements PropertyState {
+public abstract class AbstractChildNodeEntry implements ChildNodeEntry {
/**
- * Default implementation delegating to {@link JsonBuilder#encode(Scalar)}.
- * Derived classes may override this with more efficient implementations.
- */
- @Override
- public String getEncodedValue() {
- return isArray()
- ? JsonBuilder.encode(getArray())
- : JsonBuilder.encode(getScalar());
- }
-
- /**
- * Checks whether the given object is equal to this one. Two property
- * states are considered equal if both their names and encoded values
- * match. Subclasses may override this method with a more efficient
+ * Checks whether the given object is equal to this one. Two child node
+ * entries are considered equal if both their names and referenced node
+ * states match. Subclasses may override this method with a more efficient
* equality check if one is available.
*
* @param that target of the comparison
- * @return {@code true} if the objects are equal, {@code false} otherwise
+ * @return <code>true</code> if the objects are equal,
+ * <code>false</code> otherwise
*/
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
- } else if (that instanceof PropertyState) {
- PropertyState other = (PropertyState) that;
+ } else if (that instanceof ChildNodeEntry) {
+ ChildNodeEntry other = (ChildNodeEntry) that;
return getName().equals(other.getName())
- && getEncodedValue().equals(other.getEncodedValue());
+ && getNode().equals(other.getNode());
} else {
return false;
}
+
}
/**
* Returns a hash code that's compatible with how the
* {@link #equals(Object)} method is implemented. The current
- * implementation simply returns the hash code of the property name
- * since {@link PropertyState} instances are not intended for use as
+ * implementation simply returns the hash code of the child node name
+ * since {@link ChildNodeEntry} instances are not intended for use as
* hash keys.
*
* @return hash code
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractNodeState.java?rev=1324601&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractNodeState.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractNodeState.java Wed Apr 11 07:24:21 2012
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.kernel;
+
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.PropertyState;
+
+/**
+ * Abstract base class for {@link NodeState} implementations.
+ * This base class contains default implementations of the
+ * {@link #equals(Object)} and {@link #hashCode()} methods based on
+ * the implemented interface.
+ * <p>
+ * This class also implements trivial (and potentially very slow) versions of
+ * the {@link #getProperty(String)} and {@link #getPropertyCount()} methods
+ * based on {@link #getProperties()}. The {@link #getChildNode(String)} and
+ * {@link #getChildNodeCount()} methods are similarly implemented based on
+ * {@link #getChildNodeEntries(long, int)}. Subclasses should normally
+ * override these method with a more efficient alternatives.
+ */
+public abstract class AbstractNodeState implements NodeState {
+
+ @Override
+ public PropertyState getProperty(String name) {
+ for (PropertyState property : getProperties()) {
+ if (name.equals(property.getName())) {
+ return property;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ @SuppressWarnings("unused")
+ public long getPropertyCount() {
+ long count = 0;
+ for (PropertyState property : getProperties()) {
+ count++;
+ }
+ return count;
+ }
+
+ @Override
+ public NodeState getChildNode(String name) {
+ for (ChildNodeEntry entry : getChildNodeEntries(0, -1)) {
+ if (name.equals(entry.getName())) {
+ return entry.getNode();
+ }
+ }
+ return null;
+ }
+
+ @Override
+ @SuppressWarnings("unused")
+ public long getChildNodeCount() {
+ long count = 0;
+ for (ChildNodeEntry entry : getChildNodeEntries(0, -1)) {
+ count++;
+ }
+ return count;
+ }
+
+ /**
+ * Checks whether the given object is equal to this one. Two node states
+ * are considered equal if all their properties and child nodes match,
+ * regardless of ordering. Subclasses may override this method with a
+ * more efficient equality check if one is available.
+ *
+ * @param that target of the comparison
+ * @return <code>true</code> if the objects are equal,
+ * <code>false</code> otherwise
+ */
+ @Override
+ public boolean equals(Object that) {
+ if (this == that) {
+ return true;
+ } else if (that == null || !(that instanceof NodeState)) {
+ return false;
+ }
+
+ NodeState other = (NodeState) that;
+
+ long propertyCount = 0;
+ for (PropertyState property : getProperties()) {
+ if (!property.equals(other.getProperty(property.getName()))) {
+ return false;
+ }
+ propertyCount++;
+ }
+ if (propertyCount != other.getPropertyCount()) {
+ return false;
+ }
+
+ long childNodeCount = 0;
+ for (ChildNodeEntry entry : getChildNodeEntries(0, -1)) {
+ if (!entry.getNode().equals(other.getChildNode(entry.getName()))) {
+ return false;
+ }
+ childNodeCount++;
+ }
+ if (childNodeCount != other.getChildNodeCount()) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns a hash code that's compatible with how the
+ * {@link #equals(Object)} method is implemented. The current
+ * implementation simply returns zero for everything since
+ * {@link NodeState} instances are not intended for use as hash keys.
+ *
+ * @return hash code
+ */
+ @Override
+ public int hashCode() {
+ return 0;
+ }
+
+}
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractPropertyState.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractPropertyState.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractPropertyState.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/AbstractPropertyState.java Wed Apr 11 07:24:21 2012
@@ -14,9 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.kernel;
-import org.apache.jackrabbit.mk.json.JsonBuilder;
+import java.util.Iterator;
+
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Scalar;
/**
* Abstract base class for {@link PropertyState} implementations.
@@ -27,17 +30,6 @@ import org.apache.jackrabbit.mk.json.Jso
public abstract class AbstractPropertyState implements PropertyState {
/**
- * Default implementation delegating to {@link JsonBuilder#encode(Scalar)}.
- * Derived classes may override this with more efficient implementations.
- */
- @Override
- public String getEncodedValue() {
- return isArray()
- ? JsonBuilder.encode(getArray())
- : JsonBuilder.encode(getScalar());
- }
-
- /**
* Checks whether the given object is equal to this one. Two property
* states are considered equal if both their names and encoded values
* match. Subclasses may override this method with a more efficient
@@ -52,13 +44,28 @@ public abstract class AbstractPropertySt
return true;
} else if (that instanceof PropertyState) {
PropertyState other = (PropertyState) that;
- return getName().equals(other.getName())
- && getEncodedValue().equals(other.getEncodedValue());
+ return getName().equals(other.getName()) && valueEquals(other);
} else {
return false;
}
}
+ private boolean valueEquals(PropertyState other) {
+ if (isArray() != other.isArray()) {
+ return false;
+ } else if (isArray()) {
+ Iterator<Scalar> iterator = other.getArray().iterator();
+ for (Scalar scalar : getArray()) {
+ if (!iterator.hasNext() || !scalar.equals(iterator.next())) {
+ return false;
+ }
+ }
+ return !iterator.hasNext();
+ } else {
+ return getScalar().equals(other.getScalar());
+ }
+ }
+
/**
* Returns a hash code that's compatible with how the
* {@link #equals(Object)} method is implemented. The current
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelChildNodeEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelChildNodeEntry.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelChildNodeEntry.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelChildNodeEntry.java Wed Apr 11 07:24:21 2012
@@ -18,8 +18,7 @@
*/
package org.apache.jackrabbit.oak.kernel;
-import org.apache.jackrabbit.mk.model.AbstractChildNodeEntry;
-import org.apache.jackrabbit.mk.model.NodeState;
+import org.apache.jackrabbit.oak.api.NodeState;
class KernelChildNodeEntry extends AbstractChildNodeEntry {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java Wed Apr 11 07:24:21 2012
@@ -18,15 +18,13 @@
*/
package org.apache.jackrabbit.oak.kernel;
-import org.apache.jackrabbit.mk.model.Scalar;
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.json.JsopReader;
import org.apache.jackrabbit.mk.json.JsopTokenizer;
-import org.apache.jackrabbit.mk.model.AbstractNodeState;
-import org.apache.jackrabbit.mk.model.ChildNodeEntry;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.model.ScalarImpl;
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Scalar;
import java.util.ArrayList;
import java.util.Iterator;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditor.java Wed Apr 11 07:24:21 2012
@@ -19,10 +19,11 @@
package org.apache.jackrabbit.oak.kernel;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.NodeStateEditor;
-import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.model.Scalar;
+import org.apache.jackrabbit.mk.json.JsonBuilder;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.NodeStateEditor;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Scalar;
import java.util.List;
@@ -97,7 +98,7 @@ public class KernelNodeStateEditor imple
PropertyState propertyState = new KernelPropertyState(name, value);
transientState.setProperty(propertyState);
jsop.append("^\"").append(path(propertyState.getName())).append("\":")
- .append(propertyState.getEncodedValue());
+ .append(encode(propertyState));
}
@Override
@@ -105,7 +106,7 @@ public class KernelNodeStateEditor imple
PropertyState propertyState = new KernelPropertyState(name, values);
transientState.setProperty(propertyState);
jsop.append("^\"").append(path(propertyState.getName())).append("\":")
- .append(propertyState.getEncodedValue());
+ .append(encode(propertyState));
}
@Override
@@ -218,4 +219,36 @@ public class KernelNodeStateEditor imple
return path.isEmpty() ? name : path + '/' + name;
}
+ private String encode(PropertyState state) {
+ if (state.isArray()) {
+ return encode(state.getArray());
+ } else {
+ return encode(state.getScalar());
+ }
+ }
+
+ private String encode(Scalar scalar) {
+ switch (scalar.getType()) {
+ case BOOLEAN: return JsonBuilder.encode(scalar.getBoolean());
+ case LONG: return JsonBuilder.encode(scalar.getLong());
+ case DOUBLE: return JsonBuilder.encode(scalar.getDouble());
+ case BINARY: return null; // TODO implement encoding of binaries
+ case STRING: return JsonBuilder.encode(scalar.getString());
+ case NULL: return "null";
+ }
+ throw new IllegalStateException("unreachable"); // Make javac happy
+ }
+
+ private String encode(Iterable<Scalar> scalars) {
+ StringBuilder sb = new StringBuilder();
+ sb.append('[');
+ for (Scalar scalar : scalars) {
+ sb.append(encode(scalar));
+ sb.append(',');
+ }
+ sb.deleteCharAt(sb.length() - 1);
+ sb.append(']');
+ return sb.toString();
+ }
+
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java Wed Apr 11 07:24:21 2012
@@ -19,10 +19,10 @@
package org.apache.jackrabbit.oak.kernel;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.NodeStateDiff;
-import org.apache.jackrabbit.mk.model.NodeStateEditor;
-import org.apache.jackrabbit.mk.model.NodeStore;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.NodeStateDiff;
+import org.apache.jackrabbit.oak.api.NodeStateEditor;
+import org.apache.jackrabbit.oak.api.NodeStore;
/**
* {@link MicroKernel}-based {@link NodeStore} implementation.
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelPropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelPropertyState.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelPropertyState.java Wed Apr 11 07:24:21 2012
@@ -18,12 +18,11 @@
*/
package org.apache.jackrabbit.oak.kernel;
-import org.apache.jackrabbit.mk.model.AbstractPropertyState;
-import org.apache.jackrabbit.mk.model.Scalar;
-
import java.util.Collections;
import java.util.List;
+import org.apache.jackrabbit.oak.api.Scalar;
+
class KernelPropertyState extends AbstractPropertyState {
private final String name;
private final Scalar value;
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ScalarImpl.java (from r1324586, jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/ScalarImpl.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ScalarImpl.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ScalarImpl.java&p1=jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/ScalarImpl.java&r1=1324586&r2=1324601&rev=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/ScalarImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ScalarImpl.java Wed Apr 11 07:24:21 2012
@@ -14,13 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.mk.model;
+package org.apache.jackrabbit.oak.kernel;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.concurrent.Callable;
+import org.apache.jackrabbit.oak.api.Scalar;
+
public abstract class ScalarImpl implements Scalar {
public static Scalar numberScalar(String value) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/TransientNodeState.java Wed Apr 11 07:24:21 2012
@@ -22,9 +22,9 @@ import org.apache.commons.collections.it
import org.apache.commons.collections.iterators.FilterIterator;
import org.apache.commons.collections.iterators.IteratorChain;
import org.apache.commons.collections.iterators.TransformIterator;
-import org.apache.jackrabbit.mk.model.ChildNodeEntry;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.PropertyState;
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.kernel.TransientNodeState.Iterators.PagedIterator;
import java.util.HashMap;
@@ -75,7 +75,8 @@ public class TransientNodeState {
private final Set<String> removedNodes = new HashSet<String>();
/** Transiently added property states */
- private final Map<String, PropertyState> addedProperties = new HashMap<String, PropertyState>();
+ private final Map<String, PropertyState> addedProperties =
+ new HashMap<String, PropertyState>();
/** Transiently removed property states */
private final Set<String> removedProperties = new HashSet<String>();
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorFuzzIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorFuzzIT.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorFuzzIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorFuzzIT.java Wed Apr 11 07:24:21 2012
@@ -19,12 +19,11 @@
package org.apache.jackrabbit.oak.kernel;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.ChildNodeEntry;
-import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.model.Scalar;
-import org.apache.jackrabbit.mk.model.ScalarImpl;
import org.apache.jackrabbit.mk.simple.SimpleKernelImpl;
import org.apache.jackrabbit.mk.util.PathUtils;
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Scalar;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateEditorTest.java Wed Apr 11 07:24:21 2012
@@ -19,12 +19,10 @@
package org.apache.jackrabbit.oak.kernel;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.model.Scalar;
-import org.apache.jackrabbit.mk.model.Scalar.Type;
-import org.apache.jackrabbit.mk.model.ScalarImpl;
import org.apache.jackrabbit.mk.simple.SimpleKernelImpl;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Scalar;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -78,7 +76,7 @@ public class KernelNodeStateEditorTest {
propertyState = transientState.getProperty("a");
assertNotNull(propertyState);
assertFalse(propertyState.isArray());
- assertEquals(Type.LONG, propertyState.getScalar().getType());
+ assertEquals(Scalar.Type.LONG, propertyState.getScalar().getType());
assertEquals(1, propertyState.getScalar().getLong());
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateTest.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStateTest.java Wed Apr 11 07:24:21 2012
@@ -29,10 +29,10 @@ import java.util.Collections;
import java.util.List;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.ChildNodeEntry;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.PropertyState;
import org.apache.jackrabbit.mk.simple.SimpleKernelImpl;
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.junit.Before;
import org.junit.Test;
@@ -59,26 +59,27 @@ public class KernelNodeStateTest {
@Test
public void testGetProperty() {
assertEquals("a", state.getProperty("a").getName());
- assertEquals("1", state.getProperty("a").getEncodedValue());
+ assertEquals(1, state.getProperty("a").getScalar().getLong());
assertEquals("b", state.getProperty("b").getName());
- assertEquals("2", state.getProperty("b").getEncodedValue());
+ assertEquals(2, state.getProperty("b").getScalar().getLong());
assertEquals("c", state.getProperty("c").getName());
- assertEquals("3", state.getProperty("c").getEncodedValue());
+ assertEquals(3, state.getProperty("c").getScalar().getLong());
assertNull(state.getProperty("x"));
}
@Test
public void testGetProperties() {
List<String> names = new ArrayList<String>();
- List<String> values = new ArrayList<String>();
+ List<Long> values = new ArrayList<Long>();
for (PropertyState property : state.getProperties()) {
names.add(property.getName());
- values.add(property.getEncodedValue());
+ values.add(property.getScalar().getLong());
}
Collections.sort(names);
Collections.sort(values);
assertEquals(Arrays.asList("a", "b", "c"), names);
- assertEquals(Arrays.asList("1", "2", "3"), values);
+ assertEquals(Arrays.asList(
+ Long.valueOf(1), Long.valueOf(2), Long.valueOf(3)), values);
}
@Test
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/LargeKernelNodeStateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/LargeKernelNodeStateTest.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/LargeKernelNodeStateTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/LargeKernelNodeStateTest.java Wed Apr 11 07:24:21 2012
@@ -24,9 +24,9 @@ import static junit.framework.Assert.ass
import static junit.framework.Assert.assertNull;
import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.model.ChildNodeEntry;
-import org.apache.jackrabbit.mk.model.NodeState;
import org.apache.jackrabbit.mk.simple.SimpleKernelImpl;
+import org.apache.jackrabbit.oak.api.ChildNodeEntry;
+import org.apache.jackrabbit.oak.api.NodeState;
import org.junit.Before;
import org.junit.Test;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemStateProvider.java Wed Apr 11 07:24:21 2012
@@ -1,7 +1,7 @@
package org.apache.jackrabbit.oak.jcr;
-import org.apache.jackrabbit.mk.model.PropertyState;
import org.apache.jackrabbit.mk.util.PathUtils;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.kernel.TransientNodeState;
public class ItemStateProvider {
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java Wed Apr 11 07:24:21 2012
@@ -19,9 +19,8 @@ package org.apache.jackrabbit.oak.jcr;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
import org.apache.jackrabbit.commons.iterator.PropertyIteratorAdapter;
-import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.model.ScalarImpl;
import org.apache.jackrabbit.mk.util.PathUtils;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.jcr.util.Function1;
import org.apache.jackrabbit.oak.jcr.util.ItemNameMatcher;
import org.apache.jackrabbit.oak.jcr.util.Iterators;
@@ -29,6 +28,7 @@ import org.apache.jackrabbit.oak.jcr.uti
import org.apache.jackrabbit.oak.jcr.util.Predicate;
import org.apache.jackrabbit.oak.jcr.util.ValueConverter;
import org.apache.jackrabbit.oak.kernel.KernelNodeStateEditor;
+import org.apache.jackrabbit.oak.kernel.ScalarImpl;
import org.apache.jackrabbit.oak.kernel.TransientNodeState;
import org.apache.jackrabbit.value.ValueHelper;
import org.slf4j.Logger;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java Wed Apr 11 07:24:21 2012
@@ -16,8 +16,8 @@
*/
package org.apache.jackrabbit.oak.jcr;
-import org.apache.jackrabbit.mk.model.PropertyState;
import org.apache.jackrabbit.mk.util.PathUtils;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.jcr.util.LogUtil;
import org.apache.jackrabbit.oak.jcr.util.ValueConverter;
import org.apache.jackrabbit.oak.kernel.KernelNodeStateEditor;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Wed Apr 11 07:24:21 2012
@@ -17,10 +17,10 @@
package org.apache.jackrabbit.oak.jcr;
import org.apache.jackrabbit.commons.AbstractSession;
-import org.apache.jackrabbit.mk.model.NodeState;
-import org.apache.jackrabbit.mk.model.NodeStateEditor;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.Connection;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.NodeStateEditor;
import org.apache.jackrabbit.oak.kernel.KernelNodeStateEditor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/util/ValueConverter.java Wed Apr 11 07:24:21 2012
@@ -19,8 +19,8 @@
package org.apache.jackrabbit.oak.jcr.util;
-import org.apache.jackrabbit.mk.model.Scalar;
-import org.apache.jackrabbit.mk.model.ScalarImpl;
+import org.apache.jackrabbit.oak.api.Scalar;
+import org.apache.jackrabbit.oak.kernel.ScalarImpl; // FIXME: Use only the API
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/json/JsonBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/json/JsonBuilder.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/json/JsonBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/json/JsonBuilder.java Wed Apr 11 07:24:21 2012
@@ -19,8 +19,6 @@
package org.apache.jackrabbit.mk.json;
-import org.apache.jackrabbit.mk.model.Scalar;
-
import java.io.IOException;
/**
@@ -443,28 +441,5 @@ public final class JsonBuilder {
sb.append(']');
return sb.toString();
}
-
- public static String encode(Scalar scalar) {
- switch (scalar.getType()) {
- case BOOLEAN: return encode(scalar.getBoolean());
- case LONG: return encode(scalar.getLong());
- case DOUBLE: return encode(scalar.getDouble());
- case BINARY: return null; // TODO implement encoding of binaries
- case STRING: return encode(scalar.getString());
- case NULL: return "null";
- }
- throw new IllegalStateException("unreachable"); // Make javac happy
- }
- public static String encode(Iterable<Scalar> scalars) {
- StringBuilder sb = new StringBuilder();
- sb.append('[');
- for (Scalar scalar : scalars) {
- sb.append(encode(scalar));
- sb.append(',');
- }
- sb.deleteCharAt(sb.length() - 1);
- sb.append(']');
- return sb.toString();
- }
}
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/AbstractPropertyState.java Wed Apr 11 07:24:21 2012
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.mk.model;
-import org.apache.jackrabbit.mk.json.JsonBuilder;
-
/**
* Abstract base class for {@link PropertyState} implementations.
* This base class contains default implementations of the
@@ -27,17 +25,6 @@ import org.apache.jackrabbit.mk.json.Jso
public abstract class AbstractPropertyState implements PropertyState {
/**
- * Default implementation delegating to {@link JsonBuilder#encode(Scalar)}.
- * Derived classes may override this with more efficient implementations.
- */
- @Override
- public String getEncodedValue() {
- return isArray()
- ? JsonBuilder.encode(getArray())
- : JsonBuilder.encode(getScalar());
- }
-
- /**
* Checks whether the given object is equal to this one. Two property
* states are considered equal if both their names and encoded values
* match. Subclasses may override this method with a more efficient
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/NodeStore.java Wed Apr 11 07:24:21 2012
@@ -19,10 +19,6 @@ package org.apache.jackrabbit.mk.model;
/**
* Storage abstraction for content trees. At any given point in time
* the stored content tree is rooted at a single immutable node state.
- * Changes in the tree are constructed by branching off a private copy
- * using the {@link #branch(NodeState)} method which can be modified
- * and merged back using the {@link #merge(NodeStateEditor, NodeState)}
- * method.
* <p>
* This is a low-level interface that doesn't cover functionality like
* merging concurrent changes or rejecting new tree states based on some
@@ -38,28 +34,6 @@ public interface NodeStore {
NodeState getRoot();
/**
- * Creates a private branch from a {@code base} node state
- * for editing. The branch can later be merged back into
- * the node store using the {@link #merge(NodeStateEditor, NodeState) merge}
- * method.
- *
- * @param base base node state
- * @return a private branch rooted at {@code base}
- */
- NodeStateEditor branch(NodeState base);
-
- /**
- * Atomically merges the changes from {@code branch} back into the
- * {@code target}.
- *
- * @param branch branch for merging into {@code target}
- * @param target target of the merge operation
- * @return node state resulting from merging {@code branch} into
- * {@code target}.
- */
- NodeState merge(NodeStateEditor branch, NodeState target);
-
- /**
* Compares the given two node states. Any found differences are
* reported by calling the relevant added, changed or deleted methods
* of the given handler.
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/PropertyState.java Wed Apr 11 07:24:21 2012
@@ -41,22 +41,4 @@ public interface PropertyState {
*/
String getEncodedValue();
- /**
- * Determine whether this is a multi valued property
- * @return {@code true} if and only if this is a multi valued property.
- */
- boolean isArray();
-
- /**
- * @return the single value of this property or {@code null} if this is a multi
- * valued property.
- */
- Scalar getScalar();
-
- /**
- * @return an iterable of the values of this multi valued property or
- * {@code null} if this is not a multi valued property.
- */
- Iterable<Scalar> getArray();
-
}
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/AbstractRevisionStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/AbstractRevisionStore.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/AbstractRevisionStore.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/AbstractRevisionStore.java Wed Apr 11 07:24:21 2012
@@ -23,7 +23,6 @@ import org.apache.jackrabbit.mk.model.Ch
import org.apache.jackrabbit.mk.model.Id;
import org.apache.jackrabbit.mk.model.NodeState;
import org.apache.jackrabbit.mk.model.NodeStateDiff;
-import org.apache.jackrabbit.mk.model.NodeStateEditor;
import org.apache.jackrabbit.mk.model.PropertyState;
import org.apache.jackrabbit.mk.model.StoredNode;
@@ -64,16 +63,6 @@ abstract class AbstractRevisionStore imp
}
@Override
- public NodeStateEditor branch(NodeState base) {
- throw new UnsupportedOperationException(); // TODO
- }
-
- @Override
- public NodeState merge(NodeStateEditor branch, NodeState target) {
- throw new UnsupportedOperationException(); // TODO
- }
-
- @Override
public void compare(NodeState before, NodeState after, NodeStateDiff diff) {
compareProperties(before, after, diff);
compareChildNodes(before, after, diff);
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/StoredNodeAsState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/StoredNodeAsState.java?rev=1324601&r1=1324600&r2=1324601&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/StoredNodeAsState.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/store/StoredNodeAsState.java Wed Apr 11 07:24:21 2012
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.mk.store;
-import org.apache.jackrabbit.mk.json.JsopReader;
-import org.apache.jackrabbit.mk.json.JsopTokenizer;
import org.apache.jackrabbit.mk.model.AbstractChildNodeEntry;
import org.apache.jackrabbit.mk.model.AbstractNodeState;
import org.apache.jackrabbit.mk.model.AbstractPropertyState;
@@ -26,14 +24,10 @@ import org.apache.jackrabbit.mk.model.Ch
import org.apache.jackrabbit.mk.model.Id;
import org.apache.jackrabbit.mk.model.NodeState;
import org.apache.jackrabbit.mk.model.PropertyState;
-import org.apache.jackrabbit.mk.model.Scalar;
-import org.apache.jackrabbit.mk.model.ScalarImpl;
import org.apache.jackrabbit.mk.model.StoredNode;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
class StoredNodeAsState extends AbstractNodeState {
@@ -71,50 +65,6 @@ class StoredNodeAsState extends Abstract
return value;
}
- @Override
- public boolean isArray() {
- return !value.isEmpty() && value.charAt(0) == '[';
- }
-
- @Override
- public Scalar getScalar() {
- if (isArray()) {
- throw new IllegalStateException("Array cannot be accessed as scalar");
- }
-
- return readScalar(new JsopTokenizer(value));
- }
-
- @Override
- public Iterable<Scalar> getArray() {
- if (!isArray()) {
- throw new IllegalStateException("Scalar cannot be accessed as array");
- }
-
- List<Scalar> scalars = new ArrayList<Scalar>();
- JsopReader reader = new JsopTokenizer(value);
- reader.read('[');
- while (!reader.matches(']')) {
- scalars.add(readScalar(reader));
- reader.matches(',');
- }
- return scalars;
- }
-
- private static Scalar readScalar(JsopReader reader) {
- if (reader.matches(JsopTokenizer.NUMBER)) {
- return ScalarImpl.numberScalar(reader.getToken());
- } else if (reader.matches(JsopTokenizer.STRING)) {
- return ScalarImpl.stringScalar(reader.getToken());
- } else if (reader.matches(JsopTokenizer.TRUE)) {
- return ScalarImpl.booleanScalar(true);
- } else if (reader.matches(JsopTokenizer.FALSE)) {
- return ScalarImpl.booleanScalar(false);
- } else {
- throw new IllegalArgumentException("Unexpected token: " + reader.getToken());
- }
- }
-
}
@Override