Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1592 c94f4df03 -> 3fcce8ddc


added test cases for edge selection and fixed an NPE in DeflatedVertex.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3fcce8dd
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3fcce8dd
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3fcce8dd

Branch: refs/heads/TINKERPOP-1592
Commit: 3fcce8ddcf23888465dbe38486960cbac62114fa
Parents: c94f4df
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Mon Jun 26 14:41:07 2017 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Mon Jun 26 14:41:07 2017 -0600

----------------------------------------------------------------------
 .../structure/util/deflated/DeflatedVertex.java | 21 +++++------
 .../util/deflated/DeflatedVertexTest.java       | 39 ++++++++++++++++++--
 2 files changed, 46 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fcce8dd/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertex.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertex.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertex.java
index a4cde6c..d04352d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertex.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertex.java
@@ -144,20 +144,19 @@ public class DeflatedVertex extends 
DeflatedElement<Vertex> implements Vertex {
             if (null == this.outEdges || this.outEdges.isEmpty())
                 return Collections.emptyIterator();
             else
-                return Stream.of(edgeLabels).map(label -> 
this.outEdges.get(label)).flatMap(List::stream).iterator();
+                return edgeLabels.length == 0 ?
+                        
this.outEdges.values().stream().flatMap(List::stream).iterator() :
+                        Stream.of(edgeLabels).map(label -> 
this.outEdges.getOrDefault(label, 
Collections.emptyList())).flatMap(List::stream).iterator();
+
         } else if (direction.equals(Direction.IN)) {
-            if (null == this.outEdges || this.outEdges.isEmpty())
-                return Collections.emptyIterator();
-            else
-                return Stream.of(edgeLabels).map(label -> 
this.inEdges.get(label)).flatMap(List::stream).iterator();
-        } else {
-            if ((null == this.outEdges || this.outEdges.isEmpty()) && (null == 
this.inEdges || this.inEdges.isEmpty()))
+            if (null == this.inEdges || this.inEdges.isEmpty())
                 return Collections.emptyIterator();
             else
-                return Stream.concat(
-                        Stream.of(edgeLabels).map(label -> 
this.outEdges.get(label)).flatMap(List::stream),
-                        Stream.of(edgeLabels).map(label -> 
this.outEdges.get(label)).flatMap(List::stream)).iterator();
-        }
+                return edgeLabels.length == 0 ?
+                        
this.inEdges.values().stream().flatMap(List::stream).iterator() :
+                        Stream.of(edgeLabels).map(label -> 
this.inEdges.getOrDefault(label, 
Collections.emptyList())).flatMap(List::stream).iterator();
+        } else
+            return IteratorUtils.concat(this.edges(Direction.OUT, edgeLabels), 
this.edges(Direction.IN, edgeLabels));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fcce8dd/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertexTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertexTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertexTest.java
index bac6c03..ad16000 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertexTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/deflated/DeflatedVertexTest.java
@@ -21,9 +21,8 @@ package org.apache.tinkerpop.gremlin.structure.util.deflated;
 
 import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.FeatureRequirementSet;
+import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.junit.Test;
 
 import java.util.Arrays;
@@ -45,6 +44,40 @@ public class DeflatedVertexTest extends AbstractGremlinTest {
 
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
+    public void shouldIterateEdgesOnDeflate() {
+        final Vertex v1 = graph.addVertex("name", "daniel", "state", "happy");
+        final Vertex v2 = graph.addVertex("name", "marko", "state", "stoked");
+        v1.addEdge("knows", v2, "weight", 1.0, "time", "always");
+        v1.addEdge("likes", v2);
+        v2.addEdge("knows", v1);
+
+        // NO EDGES
+        Vertex deflated = DeflatedFactory.detach(v1, new HashMap<String, 
Set<String>>() {{
+            put("properties", new HashSet<>(Arrays.asList("name", "state")));
+        }});
+        assertTrue(deflated.properties().hasNext());
+        assertFalse(deflated.edges(Direction.OUT).hasNext());
+        assertFalse(deflated.edges(Direction.IN).hasNext());
+        assertFalse(deflated.edges(Direction.BOTH).hasNext());
+        // SOME EDGES
+        deflated = DeflatedFactory.detach(v1, new HashMap<String, 
Set<String>>() {{
+            put("properties", new HashSet<>(Arrays.asList("name", "state", 
"weight")));
+            put("outE", Collections.singleton("knows"));
+        }});
+        assertTrue(deflated.properties().hasNext());
+        assertTrue(deflated.edges(Direction.OUT).hasNext());
+        assertTrue(deflated.edges(Direction.OUT, "knows").hasNext());
+        assertFalse(deflated.edges(Direction.OUT, "likes").hasNext());
+        assertFalse(deflated.edges(Direction.IN).hasNext());
+        assertFalse(deflated.edges(Direction.IN, "knows").hasNext());
+        assertFalse(deflated.edges(Direction.IN, "likes").hasNext());
+        assertFalse(deflated.edges(Direction.BOTH, "likes").hasNext());
+        assertEquals(1.0d, deflated.edges(Direction.OUT, 
"knows").next().value("weight"), 0.01d);
+        assertFalse(deflated.edges(Direction.OUT, 
"knows").next().property("time").isPresent());
+    }
+
+    @Test
+    @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldIteratePropertiesOnDeflate() {
         final Vertex v = graph.addVertex("name", "daniel", "favoriteColor", 
"red", "state", "happy");
         // ALL PROPERTIES
@@ -89,7 +122,7 @@ public class DeflatedVertexTest extends AbstractGremlinTest {
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldHashAndEqualCorrectly() {
-        final Vertex v = graph.addVertex("name","blah");
+        final Vertex v = graph.addVertex("name", "blah");
         final Set<Vertex> set = new HashSet<>();
         for (int i = 0; i < 100; i++) {
             set.add(DeflatedFactory.detach(v, Collections.emptyMap()));

Reply via email to