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/11 20:24:56 UTC
[3/5] incubator-tinkerpop git commit: Optimize MutablePath.getSingle
Optimize MutablePath.getSingle
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/027d6319
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/027d6319
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/027d6319
Branch: refs/heads/xmatch
Commit: 027d6319f9ff06ca26d785e83bf17b21364c3dca
Parents: 4939cf0
Author: mhfrantz <mf...@redsealnetworks.com>
Authored: Thu Jun 11 10:51:23 2015 -0700
Committer: mhfrantz <mf...@redsealnetworks.com>
Committed: Thu Jun 11 10:51:23 2015 -0700
----------------------------------------------------------------------
.../process/traversal/step/util/MutablePath.java | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/027d6319/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
index 0951bc7..edb771c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
@@ -19,6 +19,7 @@
package org.apache.tinkerpop.gremlin.process.traversal.step.util;
import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
import java.io.Serializable;
import java.util.ArrayList;
@@ -81,6 +82,23 @@ public class MutablePath implements Path, Serializable {
}
@Override
+ public <A> A getSingle(final Pop pop, final String label) {
+ // Override default to avoid building temporary list, and to stop looking when we find the label.
+ if (Pop.tail == pop) {
+ for (int i = this.labels.size() - 1; i >= 0; i--) {
+ if (labels.get(i).contains(label))
+ return (A) objects.get(i);
+ }
+ } else {
+ for (int i = 0; i != this.labels.size(); i++) {
+ if (labels.get(i).contains(label))
+ return (A) objects.get(i);
+ }
+ }
+ throw Path.Exceptions.stepWithProvidedLabelDoesNotExist(label);
+ }
+
+ @Override
public boolean hasLabel(final String label) {
return this.labels.stream().filter(l -> l.contains(label)).findAny().isPresent();
}