You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/06/16 01:21:54 UTC
incubator-tinkerpop git commit: Now that XMatchStep has a startKey,
there is only one start label for any one traversal pattern. less set
operations. good.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master f3c0ef6bd -> 5f8f586ef
Now that XMatchStep has a startKey, there is only one start label for any one traversal pattern. less set operations. good.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/5f8f586e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/5f8f586e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/5f8f586e
Branch: refs/heads/master
Commit: 5f8f586ef13d9de91ce12cbe9feb097e0fb6f91e
Parents: f3c0ef6
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jun 15 17:21:47 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jun 15 17:21:47 2015 -0600
----------------------------------------------------------------------
.../traversal/step/filter/exp/XMatchStep.java | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f8f586e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/exp/XMatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/exp/XMatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/exp/XMatchStep.java
index f0b890d..6e3f78e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/exp/XMatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/exp/XMatchStep.java
@@ -300,14 +300,14 @@ public final class XMatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
public interface MatchAlgorithm extends Function<Traverser.Admin<Object>, Traversal.Admin<Object, Object>> {
- public static Set<String> getStartLabels(final Traversal.Admin<Object, Object> traversal) {
+ public static String getStartLabel(final Traversal.Admin<Object, Object> traversal) {
final Step<?, ?> startStep = traversal.getStartStep();
if (startStep instanceof XMatchStep)
- return ((XMatchStep) startStep).matchStartLabels;
+ return ((XMatchStep) startStep).startKey;
else if (startStep instanceof SelectOneStep)
- return ((SelectOneStep) startStep).getScopeKeys();
+ return ((SelectOneStep<?,?>) startStep).getScopeKeys().iterator().next();
else
- return Collections.emptySet();
+ throw new IllegalArgumentException("The provided start step must be either an XMatchStep or a SelectOneStep: " + startStep);
}
public void initialize(final List<Traversal.Admin<Object, Object>> traversals);
@@ -317,14 +317,14 @@ public final class XMatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
private List<Traversal.Admin<Object, Object>> traversals;
private List<String> traversalLabels = new ArrayList<>();
- private List<Set<String>> startLabels = new ArrayList<>();
+ private List<String> startLabels = new ArrayList<>();
@Override
public void initialize(final List<Traversal.Admin<Object, Object>> traversals) {
this.traversals = traversals;
for (final Traversal.Admin<Object, Object> traversal : this.traversals) {
this.traversalLabels.add(traversal.getStartStep().getId());
- this.startLabels.add(MatchAlgorithm.getStartLabels(traversal));
+ this.startLabels.add(MatchAlgorithm.getStartLabel(traversal));
}
}
@@ -332,7 +332,7 @@ public final class XMatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
public Traversal.Admin<Object, Object> apply(final Traverser.Admin<Object> traverser) {
final Path path = traverser.path();
for (int i = 0; i < this.traversals.size(); i++) {
- if (this.startLabels.get(i).stream().filter(path::hasLabel).findAny().isPresent() && !path.hasLabel(this.traversalLabels.get(i))) {
+ if (path.hasLabel(this.startLabels.get(i)) && !path.hasLabel(this.traversalLabels.get(i))) {
return this.traversals.get(i);
}
}
@@ -345,7 +345,7 @@ public final class XMatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
private List<Traversal.Admin<Object, Object>> traversals;
private List<Integer[]> counts = new ArrayList<>();
private List<String> traversalLabels = new ArrayList<>();
- private List<Set<String>> startLabels = new ArrayList<>();
+ private List<String> startLabels = new ArrayList<>();
@Override
public void initialize(final List<Traversal.Admin<Object, Object>> traversals) {
@@ -354,7 +354,7 @@ public final class XMatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
for (int i = 0; i < this.traversals.size(); i++) {
final Traversal.Admin<Object, Object> traversal = this.traversals.get(i);
this.traversalLabels.add(traversal.getStartStep().getId());
- this.startLabels.add(MatchAlgorithm.getStartLabels(traversal));
+ this.startLabels.add(MatchAlgorithm.getStartLabel(traversal));
this.counts.add(new Integer[]{i, 0});
}
}
@@ -364,7 +364,7 @@ public final class XMatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
Collections.sort(this.counts, (a, b) -> b[1].compareTo(a[1]));
final Path path = traverser.path();
for (final Integer[] indexCounts : this.counts) {
- if (this.startLabels.get(indexCounts[0]).stream().filter(path::hasLabel).findAny().isPresent() && !path.hasLabel(this.traversalLabels.get(indexCounts[0]))) {
+ if (path.hasLabel(this.startLabels.get(indexCounts[0])) && !path.hasLabel(this.traversalLabels.get(indexCounts[0]))) {
indexCounts[1]++;
return this.traversals.get(indexCounts[0]);
}