spmallette closed pull request #951: Optimizes Set with enum using the EnumSet implementation [tp32] URL: https://github.com/apache/tinkerpop/pull/951
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java index 2aa9f77c63..f2bb7a6314 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java @@ -23,7 +23,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; -import java.util.HashSet; +import java.util.Collections; +import java.util.EnumSet; import java.util.NoSuchElementException; import java.util.Set; @@ -36,7 +37,13 @@ public RequirementsStep(final Traversal.Admin traversal, final Set<TraverserRequirement> requirements) { super(traversal); - this.requirements = new HashSet<>(requirements); + + if (requirements == null || requirements.isEmpty()) { + this.requirements = EnumSet.noneOf(TraverserRequirement.class); + } else { + this.requirements = EnumSet.copyOf(requirements); + } + } public void addRequirement(final TraverserRequirement requirement) { diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java index fc3f181520..78c48b8d8d 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java @@ -29,7 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; import java.util.Collections; -import java.util.HashSet; +import java.util.EnumSet; import java.util.Set; /** @@ -37,7 +37,7 @@ */ public final class RequirementsStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy { - private final Set<TraverserRequirement> requirements = new HashSet<>(); + private final Set<TraverserRequirement> requirements = EnumSet.noneOf(TraverserRequirement.class); private RequirementsStrategy() { } diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java index 585a82b9d1..6e805bc69a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java @@ -37,7 +37,7 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; +import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; @@ -148,7 +148,7 @@ public void applyStrategies() throws IllegalStateException { public Set<TraverserRequirement> getTraverserRequirements() { if (null == this.requirements) { // if (!this.locked) this.applyStrategies(); - this.requirements = new HashSet<>(); + this.requirements = EnumSet.noneOf(TraverserRequirement.class); for (final Step<?, ?> step : this.getSteps()) { this.requirements.addAll(step.getRequirements()); } diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java index eda836a562..9956f26072 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java @@ -51,6 +51,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.EnumSet; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; @@ -594,7 +595,7 @@ public static boolean hasLabels(final Traversal.Admin<?, ?> traversal) { } public static Set<Scoping.Variable> getVariableLocations(final Traversal.Admin<?, ?> traversal) { - return TraversalHelper.getVariableLocations(new HashSet<>(), traversal); + return TraversalHelper.getVariableLocations(EnumSet.noneOf(Scoping.Variable.class), traversal); } private static Set<Scoping.Variable> getVariableLocations(final Set<Scoping.Variable> variables, final Traversal.Admin<?, ?> traversal) { ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services