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 md...@apache.org on 2012/10/19 13:27:12 UTC
svn commit: r1400045 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core:
OrderedChildrenEditor.java TreeImpl.java
Author: mduerig
Date: Fri Oct 19 11:27:12 2012
New Revision: 1400045
URL: http://svn.apache.org/viewvc?rev=1400045&view=rev
Log:
OAK-389: Simplify code by using PropertyBuilder
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/OrderedChildrenEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/OrderedChildrenEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/OrderedChildrenEditor.java?rev=1400045&r1=1400044&r2=1400045&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/OrderedChildrenEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/OrderedChildrenEditor.java Fri Oct 19 11:27:12 2012
@@ -16,23 +16,20 @@
*/
package org.apache.jackrabbit.oak.core;
-import java.util.Set;
-
import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryPropertyBuilder;
import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.DefaultNodeStateDiff;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
-
-import com.google.common.collect.Sets;
+import org.apache.jackrabbit.oak.spi.state.PropertyBuilder;
import static org.apache.jackrabbit.oak.core.TreeImpl.OAK_CHILD_ORDER;
@@ -96,27 +93,20 @@ public class OrderedChildrenEditor imple
private void updateChildOrder() {
PropertyState childOrder = builder.getProperty(OAK_CHILD_ORDER);
if (childOrder != null) {
- Set<String> children = Sets.newLinkedHashSet();
- for (int i = 0; i < childOrder.count(); i++) {
- String name = childOrder.getValue(Type.STRING, i);
- // ignore hidden
- if (NodeStateUtils.isHidden(name)) {
- continue;
- }
- if (builder.hasChildNode(name)) {
- children.add(name);
+ PropertyBuilder<String> children = MemoryPropertyBuilder.create(Type.STRING, childOrder);
+ // Remove removed
+ for (String name : children.getValues()) {
+ if (NodeStateUtils.isHidden(name) || !builder.hasChildNode(name)) {
+ children.removeValue(name);
}
}
- // make sure we have all
+ // Add added
for (String name : builder.getChildNodeNames()) {
- // ignore hidden
- if (NodeStateUtils.isHidden(name)) {
- continue;
+ if (!NodeStateUtils.isHidden(name) && !children.hasValue(name)) {
+ children.addValue(name);
}
- // will only add it if not yet present in set
- children.add(name);
}
- builder.setProperty(PropertyStates.stringProperty(OAK_CHILD_ORDER, children));
+ builder.setProperty(children.getPropertyState(true));
}
}
}
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=1400045&r1=1400044&r2=1400045&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 Fri Oct 19 11:27:12 2012
@@ -26,22 +26,22 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.collect.Iterables;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.TreeLocation;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.core.RootImpl.PurgeListener;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryPropertyBuilder;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.collect.Iterables;
-
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
@@ -266,11 +266,10 @@ public class TreeImpl implements Tree, P
if (!hasChild(name)) {
getNodeBuilder().child(name);
if (hasOrderableChildren()) {
- getNodeBuilder().setProperty(PropertyStates.stringProperty(
- OAK_CHILD_ORDER,
- Iterables.concat(
- getOrderedChildNames(),
- Collections.singleton(name))));
+ getNodeBuilder().setProperty(
+ MemoryPropertyBuilder.create(Type.STRING, internalGetProperty(OAK_CHILD_ORDER))
+ .addValue(name)
+ .getPropertyState(true));
}
root.purge();
}
@@ -292,14 +291,11 @@ public class TreeImpl implements Tree, P
parent.children.remove(name);
removed = true;
if (parent.hasOrderableChildren()) {
- builder.setProperty(PropertyStates.stringProperty(
- OAK_CHILD_ORDER,
- Iterables.filter(parent.getOrderedChildNames(), new Predicate<String>() {
- @Override
- public boolean apply(@Nullable String input) {
- return !name.equals(input);
- }
- })));
+ builder.setProperty(
+ MemoryPropertyBuilder.create(Type.STRING, parent.internalGetProperty(OAK_CHILD_ORDER))
+ .removeValue(name)
+ .getPropertyState(true)
+ );
}
root.purge();
return true;