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 2013/11/04 19:05:55 UTC

svn commit: r1538700 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: core/ kernel/ plugins/memory/ plugins/mongomk/ spi/state/

Author: jukka
Date: Mon Nov  4 18:05:55 2013
New Revision: 1538700

URL: http://svn.apache.org/r1538700
Log:
OAK-781: Clarify / fix effects of MISSING_NODE as base state of NodeBuilder

NodeBuilder.getBaseState() can no longer return null

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRootBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoRootBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/ReadOnlyBuilder.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java?rev=1538700&r1=1538699&r2=1538700&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/SecureNodeBuilder.java Mon Nov  4 18:05:55 2013
@@ -115,13 +115,9 @@ class SecureNodeBuilder implements NodeB
         this.builder = parent.builder.getChildNode(name);
     }
 
-    @Override @CheckForNull
+    @Override @Nonnull
     public NodeState getBaseState() {
-        NodeState base = builder.getBaseState();
-        if (base != null) { // TODO: should use a missing state instead of null
-            base = new SecureNodeState(base, getSecurityContext());
-        }
-        return base;
+        return new SecureNodeState(builder.getBaseState(), getSecurityContext());
     }
 
     @Override @Nonnull

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRootBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRootBuilder.java?rev=1538700&r1=1538699&r2=1538700&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRootBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelRootBuilder.java Mon Nov  4 18:05:55 2013
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.kernel
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
@@ -48,6 +50,7 @@ class KernelRootBuilder extends MemoryNo
      * This differs from the base state of super since the latter one reflects
      * the base created by the last purge.
      */
+    @Nonnull
     private NodeState base;
 
     /**
@@ -70,14 +73,14 @@ class KernelRootBuilder extends MemoryNo
     //--------------------------------------------------< MemoryNodeBuilder >---
 
 
-    @Override
+    @Override @Nonnull
     public NodeState getBaseState() {
         return base;
     }
 
     @Override
-    public void reset(NodeState newBase) {
-        base = newBase;
+    public void reset(@Nonnull NodeState newBase) {
+        base = checkNotNull(newBase);
         super.reset(newBase);
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java?rev=1538700&r1=1538699&r2=1538700&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilder.java Mon Nov  4 18:05:55 2013
@@ -108,6 +108,7 @@ public class MemoryNodeBuilder implement
      * The base state of this builder, possibly non-existent if this builder
      * represents a new node that didn't yet exist in the base content tree.
      */
+    @Nonnull
     private NodeState base;
 
     /**
@@ -222,7 +223,7 @@ public class MemoryNodeBuilder implement
      *
      * @param newBase new base state
      */
-    public void reset(NodeState newBase) {
+    public void reset(@Nonnull NodeState newBase) {
         checkState(parent == null);
         base = checkNotNull(newBase);
         baseRevision = rootHead().setState(newBase) + 1;
@@ -242,12 +243,12 @@ public class MemoryNodeBuilder implement
 
     //--------------------------------------------------------< NodeBuilder >---
 
-    @Override
+    @Override @Nonnull
     public NodeState getNodeState() {
         return head().getImmutableNodeState();
     }
 
-    @Override
+    @Override @Nonnull
     public NodeState getBaseState() {
         return base();
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoRootBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoRootBuilder.java?rev=1538700&r1=1538699&r2=1538700&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoRootBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoRootBuilder.java Mon Nov  4 18:05:55 2013
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.plugin
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
@@ -46,6 +48,7 @@ class MongoRootBuilder extends MongoNode
      * This differs from the base state of super since the latter one reflects
      * the base created by the last purge.
      */
+    @Nonnull
     private NodeState base;
 
     /**
@@ -68,14 +71,14 @@ class MongoRootBuilder extends MongoNode
     //--------------------------------------------------< MemoryNodeBuilder >---
 
 
-    @Override
+    @Override @Nonnull
     public NodeState getBaseState() {
         return base;
     }
 
     @Override
-    public void reset(NodeState newBase) {
-        base = newBase;
+    public void reset(@Nonnull NodeState newBase) {
+        base = checkNotNull(newBase);
         super.reset(newBase);
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java?rev=1538700&r1=1538699&r2=1538700&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java Mon Nov  4 18:05:55 2013
@@ -84,12 +84,13 @@ public interface NodeBuilder {
 
     /**
      * Returns the original base state that this builder is modifying.
-     * Returns {@code null} if this builder represents a new node that
+     * The return value may be non-existent (i.e. its {@code exists} method
+     * returns {@code false}) if this builder represents a new node that
      * didn't exist in the base content tree.
      *
-     * @return base node state, or {@code null}
+     * @return base node state, possibly non-existent
      */
-    @CheckForNull
+    @Nonnull
     NodeState getBaseState();
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/ReadOnlyBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/ReadOnlyBuilder.java?rev=1538700&r1=1538699&r2=1538700&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/ReadOnlyBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/ReadOnlyBuilder.java Mon Nov  4 18:05:55 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.spi.state;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -32,10 +34,11 @@ import org.apache.jackrabbit.oak.api.Typ
  */
 public class ReadOnlyBuilder implements NodeBuilder {
 
+    @Nonnull
     private final NodeState state;
 
-    public ReadOnlyBuilder(NodeState state) {
-        this.state = state;
+    public ReadOnlyBuilder(@Nonnull NodeState state) {
+        this.state = checkNotNull(state);
     }
 
     protected RuntimeException unsupported() {
@@ -57,12 +60,12 @@ public class ReadOnlyBuilder implements 
         return false;
     }
 
-    @Override
+    @Override @Nonnull
     public NodeState getNodeState() {
         return state;
     }
 
-    @Override
+    @Override @Nonnull
     public NodeState getBaseState() {
         return state;
     }