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/04/16 11:39:20 UTC
svn commit: r1468338 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/core/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ oak-cor...
Author: jukka
Date: Tue Apr 16 09:39:19 2013
New Revision: 1468338
URL: http://svn.apache.org/r1468338
Log:
OAK-776: NodeState convenience accessors
Add NodeState.getBoolean(String) and NodeBuilder.hasProperty(String)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategy.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyNodeState.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/nodetype/RegistrationEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MergeDiff.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.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/NodeState.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/ReadOnlyBuilder.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategyTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexUpdate.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java Tue Apr 16 09:39:19 2013
@@ -568,7 +568,7 @@ public class TreeImpl implements Tree {
* {@code false} otherwise.
*/
private boolean hasOrderableChildren() {
- return internalGetProperty(OAK_CHILD_ORDER) != null;
+ return nodeBuilder.hasProperty(OAK_CHILD_ORDER);
}
/**
@@ -611,8 +611,7 @@ public class TreeImpl implements Tree {
* of the children as returned by {@link NodeBuilder#getChildNodeNames()}.
*/
private void ensureChildOrderProperty() {
- PropertyState childOrder = nodeBuilder.getProperty(OAK_CHILD_ORDER);
- if (childOrder == null) {
+ if (!nodeBuilder.hasProperty(OAK_CHILD_ORDER)) {
nodeBuilder.setProperty(
MultiStringPropertyState.stringProperty(OAK_CHILD_ORDER, nodeBuilder.getChildNodeNames()));
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategy.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategy.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategy.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategy.java Tue Apr 16 09:39:19 2013
@@ -25,8 +25,6 @@ import java.util.Set;
import java.util.TreeMap;
import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.plugins.memory.MemoryChildNodeEntry;
import org.apache.jackrabbit.oak.spi.query.Filter;
@@ -115,7 +113,7 @@ public class ContentMirrorStoreStrategy
// finally prune the index node
pruneNode(child);
if (child.getChildNodeCount() == 0
- && child.getProperty("match") == null) {
+ && !child.hasProperty("match")) {
index.removeNode(key);
}
}
@@ -127,7 +125,7 @@ public class ContentMirrorStoreStrategy
for (String name : parent.getChildNodeNames()) {
NodeBuilder segment = parent.child(name);
if (segment.getChildNodeCount() == 0
- && segment.getProperty("match") == null) {
+ && !segment.hasProperty("match")) {
parent.removeNode(name);
}
}
@@ -201,11 +199,6 @@ public class ContentMirrorStoreStrategy
}
return count;
}
-
- static boolean matches(NodeState state) {
- PropertyState ps = state.getProperty("match");
- return ps != null && !ps.isArray() && ps.getValue(Type.BOOLEAN);
- }
/**
* An iterator over paths within an index node.
@@ -274,7 +267,7 @@ public class ContentMirrorStoreStrategy
nodeIterators.addLast(node.getChildNodeEntries().iterator());
parentPath = currentPath;
- if (matches(node)) {
+ if (node.getBoolean("match")) {
return;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyNodeState.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/EmptyNodeState.java Tue Apr 16 09:39:19 2013
@@ -66,6 +66,11 @@ public final class EmptyNodeState implem
return null;
}
+ @Override
+ public boolean getBoolean(String name) {
+ return false;
+ }
+
@Override @Nonnull
public Iterable<? extends PropertyState> getProperties() {
return Collections.emptyList();
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=1468338&r1=1468337&r2=1468338&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 Tue Apr 16 09:39:19 2013
@@ -424,6 +424,11 @@ public class MemoryNodeBuilder implement
}
@Override
+ public boolean hasProperty(String name) {
+ return read().hasProperty(name);
+ }
+
+ @Override
public PropertyState getProperty(String name) {
return read().getProperty(name);
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/RegistrationEditor.java Tue Apr 16 09:39:19 2013
@@ -109,7 +109,7 @@ class RegistrationEditor extends Default
*/
private void mergeSupertypes(NodeBuilder types, NodeBuilder type)
throws CommitFailedException {
- if (type.getProperty(OAK_SUPERTYPES) == null) {
+ if (!type.hasProperty(OAK_SUPERTYPES)) {
List<String> empty = Collections.emptyList();
type.setProperty(OAK_SUPERTYPES, empty, NAMES);
@@ -275,8 +275,7 @@ class RegistrationEditor extends Default
definitions = definitions.child(escapedName);
// - jcr:mandatory (BOOLEAN) protected mandatory
- PropertyState mandatory = definition.getProperty(JCR_MANDATORY);
- if (mandatory != null && mandatory.getValue(BOOLEAN)) {
+ if (definition.getBoolean(JCR_MANDATORY)) {
addNameToList(type, OAK_MANDATORY_PROPERTIES, propertyName);
}
} else {
@@ -296,8 +295,7 @@ class RegistrationEditor extends Default
}
// - jcr:multiple (BOOLEAN) protected mandatory
- PropertyState multiple = definition.getProperty(JCR_MULTIPLE);
- if (multiple != null && multiple.getValue(BOOLEAN)) {
+ if (definition.getBoolean(JCR_MULTIPLE)) {
if ("BINARY".equals(key)) {
key = "BINARIES";
} else {
@@ -324,8 +322,7 @@ class RegistrationEditor extends Default
definitions = definitions.child(childNodeName);
// - jcr:mandatory (BOOLEAN) protected mandatory
- PropertyState mandatory = definition.getProperty(JCR_MANDATORY);
- if (mandatory != null && mandatory.getValue(BOOLEAN)) {
+ if (definition.getBoolean(JCR_MANDATORY)) {
addNameToList(type, OAK_MANDATORY_CHILD_NODES, childNodeName);
}
} else {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java Tue Apr 16 09:39:19 2013
@@ -24,7 +24,6 @@ import static org.apache.jackrabbit.JcrC
import static org.apache.jackrabbit.JcrConstants.JCR_REQUIREDTYPE;
import static org.apache.jackrabbit.JcrConstants.JCR_VALUECONSTRAINTS;
import static org.apache.jackrabbit.oak.api.CommitFailedException.CONSTRAINT;
-import static org.apache.jackrabbit.oak.api.Type.BOOLEAN;
import static org.apache.jackrabbit.oak.api.Type.NAME;
import static org.apache.jackrabbit.oak.api.Type.NAMES;
import static org.apache.jackrabbit.oak.api.Type.STRING;
@@ -244,10 +243,10 @@ class TypeEditor extends DefaultEditor {
if (!type.exists()) {
throw constraintViolation(
6, "Primary node type " + name + " does not exist");
- } else if (getBoolean(type, JCR_ISMIXIN)) {
+ } else if (type.getBoolean(JCR_ISMIXIN)) {
throw constraintViolation(
7, "Can not use mixin type " + name + " as primary");
- } else if (getBoolean(type, JCR_IS_ABSTRACT)) {
+ } else if (type.getBoolean(JCR_IS_ABSTRACT)) {
throw constraintViolation(
8, "Can not use abstract type " + name + " as primary");
}
@@ -265,10 +264,10 @@ class TypeEditor extends DefaultEditor {
if (!type.exists()) {
throw constraintViolation(
9, "Mixin node type " + name + " does not exist");
- } else if (!getBoolean(type, JCR_ISMIXIN)) {
+ } else if (!type.getBoolean(JCR_ISMIXIN)) {
throw constraintViolation(
10, "Can not use primary type " + name + " as mixin");
- } else if (getBoolean(type, JCR_IS_ABSTRACT)) {
+ } else if (type.getBoolean(JCR_IS_ABSTRACT)) {
throw constraintViolation(
11, "Can not use abstract type " + name + " as mixin");
}
@@ -280,11 +279,4 @@ class TypeEditor extends DefaultEditor {
effective = new EffectiveType(list);
}
- private boolean getBoolean(NodeState node, String name) {
- PropertyState property = node.getProperty(name);
- return property != null
- && property.getType() == BOOLEAN
- && property.getValue(BOOLEAN);
- }
-
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MergeDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MergeDiff.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MergeDiff.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MergeDiff.java Tue Apr 16 09:39:19 2013
@@ -31,8 +31,7 @@ class MergeDiff implements NodeStateDiff
@Override
public void propertyAdded(PropertyState after) {
- PropertyState other = builder.getProperty(after.getName());
- if (other == null) {
+ if (!builder.hasProperty(after.getName())) {
builder.setProperty(after);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java Tue Apr 16 09:39:19 2013
@@ -113,7 +113,7 @@ class ReadWriteVersionManager extends Re
for (Iterator<String> it = PathUtils.elements(relPath).iterator(); it.hasNext(); ) {
String name = it.next();
node = node.child(name);
- if (node.getProperty(JCR_PRIMARYTYPE) == null) {
+ if (!node.hasProperty(JCR_PRIMARYTYPE)) {
String nt;
if (it.hasNext()) {
nt = REP_VERSIONSTORAGE;
@@ -154,7 +154,7 @@ class ReadWriteVersionManager extends Re
IdentifierManager.generateUUID(), Type.STRING);
frozenNode.setProperty(JCR_PRIMARYTYPE, NT_FROZENNODE, Type.NAME);
Iterable<String> mixinTypes;
- if (versionable.getProperty(JCR_MIXINTYPES) != null) {
+ if (versionable.hasProperty(JCR_MIXINTYPES)) {
mixinTypes = versionable.getProperty(JCR_MIXINTYPES).getValue(Type.NAMES);
} else {
mixinTypes = Collections.emptyList();
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java Tue Apr 16 09:39:19 2013
@@ -75,7 +75,7 @@ public class VersionablePathHook impleme
&& nodeAfter.isVersionable(versionManager)) {
NodeBuilder vhBuilder = versionManager.getOrCreateVersionHistory(nodeAfter.builder);
- if (vhBuilder.getProperty(JcrConstants.JCR_MIXINTYPES) == null) {
+ if (!vhBuilder.hasProperty(JcrConstants.JCR_MIXINTYPES)) {
vhBuilder.setProperty(
JcrConstants.JCR_MIXINTYPES,
ImmutableSet.of(MIX_REP_VERSIONABLE_PATHS),
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java Tue Apr 16 09:39:19 2013
@@ -87,7 +87,7 @@ public class PermissionHook implements P
@Nonnull
private NodeBuilder getPermissionRoot(NodeBuilder rootBuilder) {
NodeBuilder permissionStore = rootBuilder.child(JCR_SYSTEM).child(REP_PERMISSION_STORE);
- if (permissionStore.getProperty(JCR_PRIMARYTYPE) == null) {
+ if (!permissionStore.hasProperty(JCR_PRIMARYTYPE)) {
permissionStore.setProperty(JCR_PRIMARYTYPE, NT_REP_PERMISSION_STORE, Type.NAME);
}
NodeBuilder permissionRoot;
@@ -337,7 +337,7 @@ public class PermissionHook implements P
private void writeTo(NodeBuilder permissionRoot) {
NodeBuilder principalRoot = permissionRoot.child(principalName);
- if (principalRoot.getProperty(JCR_PRIMARYTYPE) == null) {
+ if (!principalRoot.hasProperty(JCR_PRIMARYTYPE)) {
principalRoot.setProperty(JCR_PRIMARYTYPE, NT_REP_PERMISSION_STORE, Type.NAME);
}
NodeBuilder entry = principalRoot.child(nodeName)
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeState.java Tue Apr 16 09:39:19 2013
@@ -16,12 +16,15 @@
*/
package org.apache.jackrabbit.oak.spi.state;
+import static org.apache.jackrabbit.oak.api.Type.BOOLEAN;
+
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+
import org.apache.jackrabbit.oak.api.PropertyState;
/**
@@ -45,6 +48,13 @@ public abstract class AbstractNodeState
}
@Override
+ public boolean getBoolean(String name) {
+ PropertyState property = getProperty(name);
+ return property != null
+ && property.getType() == BOOLEAN
+ && property.getValue(BOOLEAN);
+ }
+ @Override
public PropertyState getProperty(String name) {
for (PropertyState property : getProperties()) {
if (name.equals(property.getName())) {
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=1468338&r1=1468337&r2=1468338&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 Tue Apr 16 09:39:19 2013
@@ -143,6 +143,17 @@ public interface NodeBuilder {
Iterable<? extends PropertyState> getProperties();
/**
+ * Checks whether the named property exists. The implementation is
+ * equivalent to {@code getProperty(name) != null}, but may be optimized
+ * to avoid having to load the property value.
+ *
+ * @param name property name
+ * @return {@code true} if the named property exists,
+ * {@code false} otherwise
+ */
+ boolean hasProperty(String name);
+
+ /**
* Returns the current state of the named property, or {@code null}
* if the property is not set.
*
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeState.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeState.java Tue Apr 16 09:39:19 2013
@@ -151,7 +151,22 @@ public interface NodeState {
* @return named property, or {@code null} if not found
*/
@CheckForNull
- PropertyState getProperty(String name);
+ PropertyState getProperty(@Nonnull String name);
+
+ /**
+ * Returns the boolean value of the named property. The implementation
+ * is equivalent to the following code, but may be optimized.
+ * <pre>
+ * PropertyState property = state.getProperty(name);
+ * return property != null
+ * && property.getType() == Type.BOOLEAN
+ * && property.getValue(Type.BOOLEAN);
+ * </pre>
+ *
+ * @param name property name
+ * @return boolean value of the named property, or {@code false}
+ */
+ boolean getBoolean(@Nonnull String name);
/**
* Returns the number of properties of this node.
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=1468338&r1=1468337&r2=1468338&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 Tue Apr 16 09:39:19 2013
@@ -103,6 +103,11 @@ public class ReadOnlyBuilder implements
}
@Override
+ public boolean hasProperty(String name) {
+ return state.hasProperty(name);
+ }
+
+ @Override
public PropertyState getProperty(String name) {
return state.getProperty(name);
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerTest.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexHookManagerTest.java Tue Apr 16 09:39:19 2013
@@ -129,7 +129,7 @@ public class IndexHookManagerTest {
checkPathExists(ns, ":index");
PropertyState ps = ns.getProperty(REINDEX_PROPERTY_NAME);
assertNotNull(ps);
- assertFalse(ps.getValue(Type.BOOLEAN).booleanValue());
+ assertFalse(ps.getValue(Type.BOOLEAN));
// next, lookup
Property2IndexLookup lookup = new Property2IndexLookup(indexed);
@@ -168,7 +168,7 @@ public class IndexHookManagerTest {
checkPathExists(ns, ":index");
PropertyState ps = ns.getProperty(REINDEX_PROPERTY_NAME);
assertNotNull(ps);
- assertFalse(ps.getValue(Type.BOOLEAN).booleanValue());
+ assertFalse(ps.getValue(Type.BOOLEAN));
// next, lookup
Property2IndexLookup lookup = new Property2IndexLookup(indexed);
@@ -208,7 +208,7 @@ public class IndexHookManagerTest {
checkPathExists(ns, ":index");
PropertyState ps = ns.getProperty(REINDEX_PROPERTY_NAME);
assertNotNull(ps);
- assertFalse(ps.getValue(Type.BOOLEAN).booleanValue());
+ assertFalse(ps.getValue(Type.BOOLEAN));
// next, lookup
Property2IndexLookup lookup = new Property2IndexLookup(indexed);
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategyTest.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategyTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/p2/strategy/ContentMirrorStoreStrategyTest.java Tue Apr 16 09:39:19 2013
@@ -97,7 +97,7 @@ public class ContentMirrorStoreStrategyT
check = check.child(p);
}
if (checkMatch) {
- Assert.assertNotNull(check.getProperty("match"));
+ Assert.assertTrue(check.hasProperty("match"));
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeBuilderTest.java Tue Apr 16 09:39:19 2013
@@ -52,9 +52,9 @@ public class MemoryNodeBuilderTest {
NodeBuilder childA = root.child("x");
NodeBuilder childB = root.child("x");
- assertNull(childA.getProperty("test"));
+ assertFalse(childA.hasProperty("test"));
childB.setProperty("test", "foo");
- assertNotNull(childA.getProperty("test"));
+ assertTrue(childA.hasProperty("test"));
}
@Test
@@ -79,8 +79,8 @@ public class MemoryNodeBuilderTest {
childB.setProperty("test", "foo");
childA.removeProperty("test");
- assertNull(childA.getProperty("test"));
- assertNull(childB.getProperty("test"));
+ assertFalse(childA.hasProperty("test"));
+ assertFalse(childB.hasProperty("test"));
childA.setProperty("test", "bar");
assertEquals("bar", childA.getProperty("test").getValue(STRING));
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexUpdate.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexUpdate.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexUpdate.java Tue Apr 16 09:39:19 2013
@@ -119,9 +119,8 @@ class LuceneIndexUpdate implements Close
}
boolean getAndResetReindexFlag() {
- boolean reindex = index.getProperty(REINDEX_PROPERTY_NAME) != null
- && index.getProperty(REINDEX_PROPERTY_NAME).getValue(
- Type.BOOLEAN);
+ PropertyState property = index.getProperty(REINDEX_PROPERTY_NAME);
+ boolean reindex = property != null && property.getValue(Type.BOOLEAN);
index.setProperty(REINDEX_PROPERTY_NAME, false);
return reindex;
}
Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java?rev=1468338&r1=1468337&r2=1468338&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java Tue Apr 16 09:39:19 2013
@@ -80,9 +80,8 @@ public class SolrIndexUpdate implements
}
boolean getAndResetReindexFlag() {
- boolean reindex = index.getProperty("reindex") != null
- && index.getProperty("reindex").getValue(
- Type.BOOLEAN);
+ boolean reindex = index.hasProperty("reindex")
+ && index.getProperty("reindex").getValue(Type.BOOLEAN);
index.setProperty("reindex", false);
return reindex;
}