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();
     }