TINKERPOP-1589 Made some adjustments to Traversal.close() Implemented AutoCloseable on TraversalParent.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/67e0b373 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/67e0b373 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/67e0b373 Branch: refs/heads/TINKERPOP-1545-tp32 Commit: 67e0b373b9586d29b67b0672882a76b65106e962 Parents: 3597dc5 Author: Stephen Mallette <[email protected]> Authored: Thu Jan 5 10:00:22 2017 -0500 Committer: Stephen Mallette <[email protected]> Committed: Thu Jan 5 10:00:22 2017 -0500 ---------------------------------------------------------------------- .../tinkerpop/gremlin/process/traversal/Traversal.java | 5 +++-- .../process/traversal/step/TraversalParent.java | 13 ++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67e0b373/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java index 13a2b7d..988e4ea 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java @@ -259,8 +259,9 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable, A */ @Override public default void close() throws Exception { - for (AutoCloseable closeableStep : TraversalHelper.getStepsOfAssignableClassRecursively(AutoCloseable.class, asAdmin())) { - closeableStep.close(); + for(final Step<?,?> step : this.asAdmin().getSteps()) { + if(step instanceof AutoCloseable) + ((AutoCloseable) step).close(); } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/67e0b373/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java index 33272ab..10df950 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java @@ -31,7 +31,7 @@ import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public interface TraversalParent { +public interface TraversalParent extends AutoCloseable { public default <S, E> List<Traversal.Admin<S, E>> getGlobalChildren() { return Collections.emptyList(); @@ -81,4 +81,15 @@ public interface TraversalParent { childTraversal.setSideEffects(this.asStep().getTraversal().getSideEffects()); return (Traversal.Admin<S, E>) childTraversal; } + + @Override + default void close() throws Exception { + for(final Traversal.Admin<?,?> traversal : this.getLocalChildren()) { + traversal.close(); + } + + for(final Traversal.Admin<?,?> traversal: this.getGlobalChildren()) { + traversal.close(); + } + } }
