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 da...@apache.org on 2014/07/02 15:28:56 UTC
svn commit: r1607362 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/
test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/
Author: davide
Date: Wed Jul 2 13:28:56 2014
New Revision: 1607362
URL: http://svn.apache.org/r1607362
Log:
OAK-1892 - OrderedIndexConcurrentClusterIT takes too long
average 17-18% improvements of inserts
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStoreStrategy.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStorageStrategyTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStoreStrategy.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStoreStrategy.java?rev=1607362&r1=1607361&r2=1607362&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStoreStrategy.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStoreStrategy.java Wed Jul 2 13:28:56 2014
@@ -17,9 +17,12 @@
package org.apache.jackrabbit.oak.plugins.index.property.strategy;
+import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ENTRY_COUNT_PROPERTY_NAME;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_CONTENT_NODE_NAME;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.util.Collections;
import java.util.Deque;
import java.util.Iterator;
@@ -42,9 +45,11 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Charsets;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
@@ -114,10 +119,10 @@ public class OrderedContentMirrorStoreSt
// this is where the actual adding and maintenance of index's keys happen
NodeBuilder node = null;
NodeBuilder start = index.child(START);
- Predicate<ChildNodeEntry> condition = direction.isAscending()
+ Predicate<String> condition = direction.isAscending()
? new PredicateGreaterThan(key, true)
: new PredicateLessThan(key, true);
- ChildNodeEntry[] walked = new ChildNodeEntry[OrderedIndex.LANES];
+ String[] walked = new String[OrderedIndex.LANES];
if (Strings.isNullOrEmpty(getPropertyNext(start))) {
// it means we're in an empty/new index. Setting properly the :start's :next
@@ -126,8 +131,8 @@ public class OrderedContentMirrorStoreSt
// we use the seek for seeking the right spot. The walkedLanes will have all our
// predecessors
- ChildNodeEntry entry = seek(index.getNodeState(), condition, walked);
- if (entry != null && entry.getName().equals(key)) {
+ String entry = seek(index, condition, walked);
+ if (entry != null && entry.equals(key)) {
// it's an existing node. We should not need to update anything around pointers
node = index.getChildNode(key);
} else {
@@ -140,7 +145,7 @@ public class OrderedContentMirrorStoreSt
NodeBuilder predecessor;
for (int l = lane; l >= 0; l--) {
// let's update the predecessors starting from the coin-flip lane
- predecessor = index.getChildNode(walked[l].getName());
+ predecessor = index.getChildNode(walked[l]);
next = getPropertyNext(predecessor, l);
setPropertyNext(predecessor, key, l);
setPropertyNext(node, next, l);
@@ -157,26 +162,26 @@ public class OrderedContentMirrorStoreSt
return;
} else if (node.exists()) {
if (node.hasProperty(NEXT)) {
- ChildNodeEntry[] walkedLanes = new ChildNodeEntry[OrderedIndex.LANES];
- ChildNodeEntry entry;
+ String[] walkedLanes = new String[OrderedIndex.LANES];
+ String entry;
String lane0Next, prevNext, currNext;
// for as long as we have the an entry and we didn't update the lane0 we have
// to keep searching and update
do {
- entry = seek(index.getNodeState(),
+ entry = seek(index,
new PredicateEquals(key),
walkedLanes
);
- lane0Next = getPropertyNext(walkedLanes[0]);
+ lane0Next = getPropertyNext(index.getChildNode(walkedLanes[0]));
if (LOG.isDebugEnabled()) {
for (int i = 0; i < walkedLanes.length; i++) {
LOG.debug("prune() - walkedLanes[{}]: {}", i,
- walkedLanes[i].getName());
+ walkedLanes[i]);
}
}
for (int lane = walkedLanes.length - 1; lane >= 0; lane--) {
- prevNext = getPropertyNext(walkedLanes[lane], lane);
+ prevNext = getPropertyNext(index.getChildNode(walkedLanes[lane]), lane);
if (key.equals(prevNext)) {
// if it's actually pointing to us let's deal with it
currNext = getPropertyNext(node, lane);
@@ -184,11 +189,11 @@ public class OrderedContentMirrorStoreSt
LOG.debug(
"prune() - setting next for '{}' on lane '{}' with '{}'",
new Object[] {
- walkedLanes[lane].getName(),
+ walkedLanes[lane],
lane,
currNext});
}
- setPropertyNext(index.getChildNode(walkedLanes[lane].getName()),
+ setPropertyNext(index.getChildNode(walkedLanes[lane]),
currNext, lane);
}
}
@@ -264,26 +269,30 @@ public class OrderedContentMirrorStoreSt
final NodeState indexMeta, final String indexStorageNodeName,
final PropertyRestriction pr) {
- final NodeState index = indexMeta.getChildNode(indexStorageNodeName);
+ final NodeState indexState = indexMeta.getChildNode(indexStorageNodeName);
+ final NodeBuilder index = new ReadOnlyBuilder(indexState);
if (pr.first != null && !pr.first.equals(pr.last)) {
// '>' & '>=' and between use case
ChildNodeEntry firstValueableItem;
+ String firstValuableItemKey;
Iterable<String> it = Collections.emptyList();
Iterable<ChildNodeEntry> childrenIterable;
if (pr.last == null) {
LOG.debug("> & >= case.");
- firstValueableItem = seek(index,
+ firstValuableItemKey = seek(index,
new PredicateGreaterThan(pr.first.getValue(Type.STRING), pr.firstIncluding));
- if (firstValueableItem != null) {
+ if (firstValuableItemKey != null) {
+ firstValueableItem = new OrderedChildNodeEntry(firstValuableItemKey,
+ indexState.getChildNode(firstValuableItemKey));
if (direction.isAscending()) {
- childrenIterable = new SeekedIterable(index, firstValueableItem);
+ childrenIterable = new SeekedIterable(indexState, firstValueableItem);
it = new QueryResultsWrapper(filter, indexName, childrenIterable);
} else {
- it = new QueryResultsWrapper(filter, indexName, new BetweenIterable(index,
- firstValueableItem, pr.first.getValue(Type.STRING), pr.firstIncluding,
- direction));
+ it = new QueryResultsWrapper(filter, indexName, new BetweenIterable(
+ indexState, firstValueableItem, pr.first.getValue(Type.STRING),
+ pr.firstIncluding, direction));
}
}
} else {
@@ -302,17 +311,19 @@ public class OrderedContentMirrorStoreSt
}
if (direction.equals(OrderDirection.ASC)) {
- firstValueableItem = seek(index,
+ firstValuableItemKey = seek(index,
new PredicateGreaterThan(first, includeFirst));
} else {
- firstValueableItem = seek(index,
+ firstValuableItemKey = seek(index,
new PredicateLessThan(last, includeLast));
}
- LOG.debug("firstValueableItem: {}", firstValueableItem);
+ LOG.debug("firstValueableItem: {}", firstValuableItemKey);
- if (firstValueableItem != null) {
- childrenIterable = new BetweenIterable(index, firstValueableItem, last,
+ if (firstValuableItemKey != null) {
+ firstValueableItem = new OrderedChildNodeEntry(firstValuableItemKey,
+ indexState.getChildNode(firstValuableItemKey));
+ childrenIterable = new BetweenIterable(indexState, firstValueableItem, last,
includeLast, direction);
it = new QueryResultsWrapper(filter, indexName, childrenIterable);
}
@@ -323,22 +334,25 @@ public class OrderedContentMirrorStoreSt
// '<' & '<=' use case
final String searchfor = pr.last.getValue(Type.STRING);
final boolean include = pr.lastIncluding;
- Predicate<ChildNodeEntry> predicate = new PredicateLessThan(searchfor, include);
+ Predicate<String> predicate = new PredicateLessThan(searchfor, include);
LOG.debug("< & <= case. - searchfor: {} - include: {} - predicate: {}",
new Object[] { searchfor, include, predicate });
- ChildNodeEntry firstValueableItem = seek(index, predicate);
+ ChildNodeEntry firstValueableItem;
+ String firstValueableItemKey = seek(index, predicate);
- LOG.debug("firstValuableItem: {}", firstValueableItem);
+ LOG.debug("firstValuableItem: {}", firstValueableItemKey);
Iterable<String> it = Collections.emptyList();
- if (firstValueableItem != null) {
+ if (firstValueableItemKey != null) {
+ firstValueableItem = new OrderedChildNodeEntry(firstValueableItemKey,
+ indexState.getChildNode(firstValueableItemKey));
if (direction.isAscending()) {
- it = new QueryResultsWrapper(filter, indexName, new BetweenIterable(index,
+ it = new QueryResultsWrapper(filter, indexName, new BetweenIterable(indexState,
firstValueableItem, searchfor, include, direction));
} else {
- it = new QueryResultsWrapper(filter, indexName, new SeekedIterable(index,
+ it = new QueryResultsWrapper(filter, indexName, new SeekedIterable(indexState,
firstValueableItem));
}
}
@@ -349,11 +363,19 @@ public class OrderedContentMirrorStoreSt
return query(filter, indexName, indexMeta, values);
}
}
-
- private static String convert(String value) {
- return value.replaceAll("%3A", ":");
- }
+ private static String encode(@Nonnull final String value) {
+ checkNotNull(value);
+ String v;
+ try {
+ v = URLEncoder.encode(value, Charsets.UTF_8.name());
+ } catch (UnsupportedEncodingException e) {
+ LOG.error("Error while encoding value.");
+ v = value;
+ }
+ return v;
+ }
+
static class OrderedChildNodeEntry extends AbstractChildNodeEntry {
private final String name;
private final NodeState state;
@@ -421,7 +443,7 @@ public class OrderedContentMirrorStoreSt
} else if (lpr.first != null && !lpr.first.equals(lpr.last)) {
// > & >= in ascending index
value = lpr.first.getValue(Type.STRING);
- final String vv = value;
+ final String vv = encode(value);
final boolean include = lpr.firstIncluding;
final OrderDirection dd = direction;
@@ -456,7 +478,7 @@ public class OrderedContentMirrorStoreSt
int depthTotal = 0;
// seeking the right starting point
for (ChildNodeEntry child : children) {
- String converted = convert(child.getName());
+ String converted = child.getName();
if (predicate.apply(converted)) {
// here we are let's start counting
v = new CountingNodeVisitor(max);
@@ -476,7 +498,7 @@ public class OrderedContentMirrorStoreSt
} else if (lpr.last != null && !lpr.last.equals(lpr.first)) {
// < & <=
value = lpr.last.getValue(Type.STRING);
- final String vv = value;
+ final String vv = encode(value);
final boolean include = lpr.lastIncluding;
final OrderDirection dd = direction;
@@ -511,7 +533,7 @@ public class OrderedContentMirrorStoreSt
int depthTotal = 0;
// seeking the right starting point
for (ChildNodeEntry child : children) {
- String converted = convert(child.getName());
+ String converted = child.getName();
if (predicate.apply(converted)) {
// here we are let's start counting
v = new CountingNodeVisitor(max);
@@ -707,8 +729,7 @@ public class OrderedContentMirrorStoreSt
* see {@link #seek(NodeState, Predicate<ChildNodeEntry>, ChildNodeEntry[])} passing null as
* last argument
*/
- ChildNodeEntry seek(@Nonnull NodeState index,
- @Nonnull Predicate<ChildNodeEntry> condition) {
+ String seek(@Nonnull NodeBuilder index, @Nonnull Predicate<String> condition) {
return seek(index, condition, null);
}
@@ -725,18 +746,18 @@ public class OrderedContentMirrorStoreSt
* {@link IllegalArgumentException} will be raised
* @return the entry or null if not found
*/
- ChildNodeEntry seek(@Nonnull final NodeState index,
- @Nonnull final Predicate<ChildNodeEntry> condition,
- @Nullable final ChildNodeEntry[] walkedLanes) {
+ String seek(@Nonnull final NodeBuilder index,
+ @Nonnull final Predicate<String> condition,
+ @Nullable final String[] walkedLanes) {
boolean keepWalked = false;
String searchfor = condition.getSearchFor();
LOG.debug("seek() - Searching for: {}", condition.getSearchFor());
- Predicate<ChildNodeEntry> walkingPredicate = direction.isAscending()
+ Predicate<String> walkingPredicate = direction.isAscending()
? new PredicateLessThan(searchfor, true)
: new PredicateGreaterThan(searchfor, true);
// we always begin with :start
- ChildNodeEntry current = new OrderedChildNodeEntry(START, index.getChildNode(START));
- ChildNodeEntry found = null;
+ String currentKey = START;
+ String found = null;
if (walkedLanes != null) {
if (walkedLanes.length != OrderedIndex.LANES) {
@@ -746,7 +767,7 @@ public class OrderedContentMirrorStoreSt
}
// ensuring the right data
for (int i = 0; i < walkedLanes.length; i++) {
- walkedLanes[i] = current;
+ walkedLanes[i] = currentKey;
}
keepWalked = true;
}
@@ -754,7 +775,6 @@ public class OrderedContentMirrorStoreSt
int lane;
boolean stillLaning;
String nextkey;
- ChildNodeEntry next;
if ((direction.isAscending() && condition instanceof PredicateLessThan)
|| (direction.isDescending() && condition instanceof PredicateGreaterThan)) {
@@ -764,51 +784,45 @@ public class OrderedContentMirrorStoreSt
lane = 0;
do {
stillLaning = lane < OrderedIndex.LANES;
- nextkey = getPropertyNext(current, lane);
- next = (Strings.isNullOrEmpty(nextkey))
- ? null
- : new OrderedChildNodeEntry(nextkey, index.getChildNode(nextkey));
- if ((next == null || !walkingPredicate.apply(next)) && lane < OrderedIndex.LANES) {
+ nextkey = getPropertyNext(index.getChildNode(currentKey), lane);
+ if ((Strings.isNullOrEmpty(nextkey) || !walkingPredicate.apply(nextkey)) && lane < OrderedIndex.LANES) {
// if we're currently pointing to NIL or the next element does not fit the search
// but we still have lanes left
lane++;
} else {
- if (condition.apply(next)) {
- found = next;
+ if (condition.apply(nextkey)) {
+ found = nextkey;
} else {
- current = next;
- if (keepWalked && current != null) {
- walkedLanes[lane] = current;
+ currentKey = nextkey;
+ if (keepWalked && !Strings.isNullOrEmpty(currentKey)) {
+ walkedLanes[lane] = currentKey;
}
}
}
- } while (((next != null && walkingPredicate.apply(next)) || stillLaning) && (found == null));
+ } while (((!Strings.isNullOrEmpty(nextkey) && walkingPredicate.apply(nextkey)) || stillLaning) && (found == null));
} else {
lane = OrderedIndex.LANES - 1;
do {
stillLaning = lane > 0;
- nextkey = getPropertyNext(current, lane);
- next = (Strings.isNullOrEmpty(nextkey))
- ? null
- : new OrderedChildNodeEntry(nextkey, index.getChildNode(nextkey));
- if ((next == null || !walkingPredicate.apply(next)) && lane > 0) {
+ nextkey = getPropertyNext(index.getChildNode(currentKey), lane);
+ if ((Strings.isNullOrEmpty(nextkey) || !walkingPredicate.apply(nextkey)) && lane > 0) {
// if we're currently pointing to NIL or the next element does not fit the search
// but we still have lanes left, let's lower the lane;
lane--;
} else {
- if (condition.apply(next)) {
- found = next;
+ if (condition.apply(nextkey)) {
+ found = nextkey;
} else {
- current = next;
- if (keepWalked && current != null) {
+ currentKey = nextkey;
+ if (keepWalked && !Strings.isNullOrEmpty(currentKey)) {
for (int l = lane; l >= 0; l--) {
- walkedLanes[l] = current;
+ walkedLanes[l] = currentKey;
}
}
}
}
- } while (((next != null && walkingPredicate.apply(next)) || stillLaning) && (found == null));
+ } while (((!Strings.isNullOrEmpty(nextkey) && walkingPredicate.apply(nextkey)) || stillLaning) && (found == null));
}
return found;
@@ -817,7 +831,7 @@ public class OrderedContentMirrorStoreSt
/**
* predicate for evaluating 'key' equality across index
*/
- static class PredicateEquals implements Predicate<ChildNodeEntry> {
+ static class PredicateEquals implements Predicate<String> {
private String searchfor;
public PredicateEquals(@Nonnull String searchfor) {
@@ -825,8 +839,8 @@ public class OrderedContentMirrorStoreSt
}
@Override
- public boolean apply(ChildNodeEntry arg0) {
- return arg0 != null && searchfor.equals(arg0.getName());
+ public boolean apply(String arg0) {
+ return !Strings.isNullOrEmpty(arg0) && searchfor.equals(arg0);
}
@Override
@@ -839,8 +853,9 @@ public class OrderedContentMirrorStoreSt
* evaluates when the current element is greater than (>) and greater than equal
* {@code searchfor}
*/
- static class PredicateGreaterThan implements Predicate<ChildNodeEntry> {
- private String searchfor;
+ static class PredicateGreaterThan implements Predicate<String> {
+ private String searchforEncoded;
+ private String searchforDecoded;
private boolean include;
public PredicateGreaterThan(@Nonnull String searchfor) {
@@ -848,16 +863,17 @@ public class OrderedContentMirrorStoreSt
}
public PredicateGreaterThan(@Nonnull String searchfor, boolean include) {
- this.searchfor = searchfor;
+ this.searchforEncoded = encode(searchfor);
+ this.searchforDecoded = searchfor;
this.include = include;
}
@Override
- public boolean apply(ChildNodeEntry arg0) {
+ public boolean apply(String arg0) {
boolean b = false;
- if (arg0 != null) {
- String name = convert(arg0.getName());
- b = searchfor.compareTo(name) < 0 || (include && searchfor
+ if (!Strings.isNullOrEmpty(arg0)) {
+ String name = arg0;
+ b = searchforEncoded.compareTo(name) < 0 || (include && searchforEncoded
.equals(name));
}
@@ -866,15 +882,16 @@ public class OrderedContentMirrorStoreSt
@Override
public String getSearchFor() {
- return searchfor;
+ return searchforDecoded;
}
}
/**
* evaluates when the current element is less than (<) and less than equal {@code searchfor}
*/
- static class PredicateLessThan implements Predicate<ChildNodeEntry> {
- private String searchfor;
+ static class PredicateLessThan implements Predicate<String> {
+ private String searchforEncoded;
+ private String searchforOriginal;
private boolean include;
public PredicateLessThan(@Nonnull String searchfor) {
@@ -882,16 +899,18 @@ public class OrderedContentMirrorStoreSt
}
public PredicateLessThan(@Nonnull String searchfor, boolean include) {
- this.searchfor = searchfor;
+ this.searchforEncoded = encode(searchfor);
+ this.searchforOriginal = searchfor;
this.include = include;
}
@Override
- public boolean apply(ChildNodeEntry arg0) {
+ public boolean apply(String arg0) {
boolean b = false;
- if (arg0 != null) {
- String name = convert(arg0.getName());
- b = searchfor.compareTo(name) > 0 || (include && searchfor.equals(name));
+ if (!Strings.isNullOrEmpty(arg0)) {
+ String name = arg0;
+ b = searchforEncoded.compareTo(name) > 0
+ || (include && searchforEncoded.equals(name));
}
return b;
@@ -899,7 +918,7 @@ public class OrderedContentMirrorStoreSt
@Override
public String getSearchFor() {
- return searchfor;
+ return searchforOriginal;
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStorageStrategyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStorageStrategyTest.java?rev=1607362&r1=1607361&r2=1607362&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStorageStrategyTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/OrderedContentMirrorStorageStrategyTest.java Wed Jul 2 13:28:56 2014
@@ -1378,7 +1378,7 @@ public class OrderedContentMirrorStorage
store.update(index, "/a/b", EMPTY_KEY_SET, newHashSet(n3));
assertNull("The item should have not been found", store.seek(
- index.getNodeState(),
+ index,
new OrderedContentMirrorStoreStrategy.PredicateEquals(nonExisting)));
}
@@ -1399,11 +1399,11 @@ public class OrderedContentMirrorStorage
String searchFor = n1;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor));
assertNotNull("we should have found an item", item);
- assertEquals(searchFor, item.getName());
+ assertEquals(searchFor, item);
}
@Test
@@ -1423,7 +1423,7 @@ public class OrderedContentMirrorStorage
String searchFor = n1;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateGreaterThan(searchFor));
assertNull("no item should have been found", item);
@@ -1448,11 +1448,11 @@ public class OrderedContentMirrorStorage
String searchFor = n2;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateGreaterThan(searchFor));
assertNotNull("we should have found an item", item);
- assertEquals(n1, item.getName());
+ assertEquals(n1, item);
}
@Test
@@ -1470,7 +1470,7 @@ public class OrderedContentMirrorStorage
String searchFor = KEYS[3];
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateGreaterThan(searchFor, true));
assertNull("we should have not found an item", item);
@@ -1491,11 +1491,11 @@ public class OrderedContentMirrorStorage
String searchFor = n2;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateGreaterThan(searchFor, true));
assertNotNull("we should have found an item", item);
- assertEquals(n2, item.getName());
+ assertEquals(n2, item);
}
@Test
@@ -1514,10 +1514,10 @@ public class OrderedContentMirrorStorage
String searchFor = n3;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateLessThan(searchFor));
- assertNull("we should have not found an item", item);
+ assertNull("we should have not found an item. '" + item + "'", item);
}
@Test
@@ -1536,11 +1536,11 @@ public class OrderedContentMirrorStorage
String searchFor = n2;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateLessThan(searchFor));
assertNotNull("we should have found an item", item);
- assertEquals(n0, item.getName());
+ assertEquals(n0, item);
}
@Test
@@ -1559,7 +1559,7 @@ public class OrderedContentMirrorStorage
String searchFor = KEYS[0];
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateLessThan(searchFor, true));
assertNull("we should have not found an item", item);
@@ -1581,11 +1581,11 @@ public class OrderedContentMirrorStorage
String searchFor = n2;
- ChildNodeEntry item = store.seek(index.getNodeState(),
+ String item = store.seek(index,
new OrderedContentMirrorStoreStrategy.PredicateLessThan(searchFor, true));
assertNotNull("we should have found an item", item);
- assertEquals(n2, item.getName());
+ assertEquals(n2, item);
}
private static String getNext(@Nonnull NodeBuilder node) {
@@ -3131,15 +3131,13 @@ public class OrderedContentMirrorStorage
// testing the exception in case of wrong parameters
String searchFor = "wedontcareaswetesttheexception";
- NodeState node = index.getChildNode(searchFor);
- ChildNodeEntry entry = new OrderedChildNodeEntry(
- searchFor, node);
- ChildNodeEntry[] wl = new ChildNodeEntry[0];
- ChildNodeEntry item = null;
- ChildNodeEntry lane0, lane1, lane2, lane3;
+ String entry = searchFor;
+ String[] wl = new String[0];
+ String item = null;
+ String lane0, lane1, lane2, lane3;
try {
- item = store.seek(index,
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
fail("With a wrong size for the lane it should have raised an exception");
} catch (IllegalArgumentException e) {
@@ -3148,14 +3146,13 @@ public class OrderedContentMirrorStorage
// testing equality
searchFor = n12;
- lane3 = new OrderedChildNodeEntry(n10, index.getChildNode(n10));
- lane2 = new OrderedChildNodeEntry(n10, index.getChildNode(n10));
- lane1 = new OrderedChildNodeEntry(n10, index.getChildNode(n10));
- lane0 = new OrderedChildNodeEntry(n11, index.getChildNode(n11));
- entry = new OrderedChildNodeEntry(searchFor,
- index.getChildNode(searchFor));
- wl = new ChildNodeEntry[OrderedIndex.LANES];
- item = store.seek(index,
+ lane3 = n10;
+ lane2 = n10;
+ lane1 = n10;
+ lane0 = n11;
+ entry = searchFor;
+ wl = new String[OrderedIndex.LANES];
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
assertNotNull(wl);
assertEquals(OrderedIndex.LANES, wl.length);
@@ -3166,14 +3163,13 @@ public class OrderedContentMirrorStorage
assertEquals("Wrong item returned", entry, item);
searchFor = n08;
- lane3 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane2 = new OrderedChildNodeEntry(n07, index.getChildNode(n07));
- lane1 = new OrderedChildNodeEntry(n07, index.getChildNode(n07));
- lane0 = new OrderedChildNodeEntry(n07, index.getChildNode(n07));
- entry = new OrderedChildNodeEntry(searchFor,
- index.getChildNode(searchFor));
- wl = new ChildNodeEntry[OrderedIndex.LANES];
- item = store.seek(index,
+ lane3 = START;
+ lane2 = n07;
+ lane1 = n07;
+ lane0 = n07;
+ entry = searchFor;
+ wl = new String[OrderedIndex.LANES];
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
assertNotNull(wl);
assertEquals(OrderedIndex.LANES, wl.length);
@@ -3184,14 +3180,13 @@ public class OrderedContentMirrorStorage
assertEquals("Wrong item returned", entry, item);
searchFor = n06;
- lane3 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane2 = new OrderedChildNodeEntry(n03, index.getChildNode(n03));
- lane1 = new OrderedChildNodeEntry(n05, index.getChildNode(n05));
- lane0 = new OrderedChildNodeEntry(n05, index.getChildNode(n05));
- entry = new OrderedChildNodeEntry(searchFor,
- index.getChildNode(searchFor));
- wl = new ChildNodeEntry[OrderedIndex.LANES];
- item = store.seek(index,
+ lane3 = START;
+ lane2 = n03;
+ lane1 = n05;
+ lane0 = n05;
+ entry = searchFor;
+ wl = new String[OrderedIndex.LANES];
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
assertNotNull(wl);
assertEquals(OrderedIndex.LANES, wl.length);
@@ -3259,14 +3254,13 @@ public class OrderedContentMirrorStorage
// testing the exception in case of wrong parameters
String searchFor = "wedontcareaswetesttheexception";
NodeState node = index.getChildNode(searchFor);
- ChildNodeEntry entry = new OrderedChildNodeEntry(
- searchFor, node);
- ChildNodeEntry[] wl = new ChildNodeEntry[0];
- ChildNodeEntry item = null;
- ChildNodeEntry lane0, lane1, lane2, lane3;
+ String entry = searchFor;
+ String[] wl = new String[0];
+ String item = null;
+ String lane0, lane1, lane2, lane3;
try {
- item = store.seek(index,
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
fail("With a wrong size for the lane it should have raised an exception");
} catch (IllegalArgumentException e) {
@@ -3275,14 +3269,13 @@ public class OrderedContentMirrorStorage
// testing equality
searchFor = n12;
- lane3 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane2 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane1 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane0 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- entry = new OrderedChildNodeEntry(searchFor,
- index.getChildNode(searchFor));
- wl = new ChildNodeEntry[OrderedIndex.LANES];
- item = store.seek(index,
+ lane3 = START;
+ lane2 = START;
+ lane1 = START;
+ lane0 = START;
+ entry = searchFor;
+ wl = new String[OrderedIndex.LANES];
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
assertNotNull(wl);
assertEquals(OrderedIndex.LANES, wl.length);
@@ -3293,14 +3286,13 @@ public class OrderedContentMirrorStorage
assertEquals("Wrong item returned", entry, item);
searchFor = n08;
- lane3 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane2 = new OrderedChildNodeEntry(n09, index.getChildNode(n09));
- lane1 = new OrderedChildNodeEntry(n09, index.getChildNode(n09));
- lane0 = new OrderedChildNodeEntry(n09, index.getChildNode(n09));
- entry = new OrderedChildNodeEntry(searchFor,
- index.getChildNode(searchFor));
- wl = new ChildNodeEntry[OrderedIndex.LANES];
- item = store.seek(index,
+ lane3 = START;
+ lane2 = n09;
+ lane1 = n09;
+ lane0 = n09;
+ entry = searchFor;
+ wl = new String[OrderedIndex.LANES];
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
assertNotNull(wl);
assertEquals(OrderedIndex.LANES, wl.length);
@@ -3311,14 +3303,13 @@ public class OrderedContentMirrorStorage
assertEquals("Wrong item returned", entry, item);
searchFor = n06;
- lane3 = new OrderedChildNodeEntry(START, index.getChildNode(START));
- lane2 = new OrderedChildNodeEntry(n09, index.getChildNode(n09));
- lane1 = new OrderedChildNodeEntry(n07, index.getChildNode(n07));
- lane0 = new OrderedChildNodeEntry(n07, index.getChildNode(n07));
- entry = new OrderedChildNodeEntry(searchFor,
- index.getChildNode(searchFor));
- wl = new ChildNodeEntry[OrderedIndex.LANES];
- item = store.seek(index,
+ lane3 = START;
+ lane2 = n09;
+ lane1 = n07;
+ lane0 = n07;
+ entry = searchFor;
+ wl = new String[OrderedIndex.LANES];
+ item = store.seek(builder,
new OrderedContentMirrorStoreStrategy.PredicateEquals(searchFor), wl);
assertNotNull(wl);
assertEquals(OrderedIndex.LANES, wl.length);
@@ -3381,18 +3372,18 @@ public class OrderedContentMirrorStorage
@Test
public void predicateLessThan() {
- Predicate<ChildNodeEntry> predicate;
+ Predicate<String> predicate;
String searchfor;
- ChildNodeEntry entry;
+ String entry;
searchfor = "b";
predicate = new PredicateLessThan(searchfor, true);
- entry = new OrderedChildNodeEntry("a", EmptyNodeState.EMPTY_NODE);
+ entry = "a";
assertTrue(predicate.apply(entry));
searchfor = "a";
predicate = new PredicateLessThan(searchfor, true);
- entry = new OrderedChildNodeEntry("b", EmptyNodeState.EMPTY_NODE);
+ entry = "b";
assertFalse(predicate.apply(entry));
searchfor = "a";