From 90f72c8adfd7438e797de58cc88195d3775f5f87 Mon Sep 17 00:00:00 2001 From: Alistair Jones Date: Tue, 2 Aug 2016 16:57:05 +0100 Subject: [PATCH] Make RoleProcedure return a single row of results. --- .../discovery/procedures/RoleProcedure.java | 25 ++++--------------- .../procedures/RoleProcedureTest.java | 14 ++++++++--- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/procedures/RoleProcedure.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/procedures/RoleProcedure.java index b35f719ffa1ea..f3be629f52d8a 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/procedures/RoleProcedure.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/procedures/RoleProcedure.java @@ -42,27 +42,12 @@ public RoleProcedure( CoreOrEdge role ) @Override public RawIterator apply( Context ctx, Object[] input ) throws ProcedureException { - return new RawIterator() - { - @Override - public boolean hasNext() throws ProcedureException - { - return true; - } + return RawIterator.of( new Object[]{name()} ); + } - @Override - public Object[] next() throws ProcedureException - { - try - { - return new Object[]{role.name()}; - } - catch ( NullPointerException npe ) - { - return new Object[]{"UNKNOWN"}; - } - } - }; + private String name() + { + return role == null ? "UNKNOWN" : role.name(); } public enum CoreOrEdge diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/procedures/RoleProcedureTest.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/procedures/RoleProcedureTest.java index b8302ee0b0a59..39b8e02446e61 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/procedures/RoleProcedureTest.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/procedures/RoleProcedureTest.java @@ -22,10 +22,13 @@ import org.junit.Test; import org.neo4j.collection.RawIterator; +import org.neo4j.helpers.collection.Iterators; import org.neo4j.kernel.api.exceptions.ProcedureException; import static org.junit.Assert.assertEquals; +import static org.neo4j.helpers.collection.Iterators.asList; + public class RoleProcedureTest { @Test @@ -38,7 +41,7 @@ public void shouldReturnCore() throws Exception RawIterator result = proc.apply( null, null ); // then - assertEquals( RoleProcedure.CoreOrEdge.CORE.name(), result.next()[0]); + assertEquals( RoleProcedure.CoreOrEdge.CORE.name(), single( result )[0]); } @Test @@ -51,7 +54,7 @@ public void shouldReturnEdge() throws Exception RawIterator result = proc.apply( null, null ); // then - assertEquals( RoleProcedure.CoreOrEdge.EDGE.name(), result.next()[0]); + assertEquals( RoleProcedure.CoreOrEdge.EDGE.name(), single( result )[0]); } @Test @@ -64,6 +67,11 @@ public void shouldReturnUnknown() throws Exception RawIterator result = proc.apply( null, null ); // then - assertEquals( "UNKNOWN", result.next()[0]); + assertEquals( "UNKNOWN", single( result )[0]); + } + + private Object[] single( RawIterator result ) throws ProcedureException + { + return Iterators.single( asList( result ).iterator() ); } }