I need a pipe, which returns a set of vertices for an input Vertex (wrapped in
User Defined Step). I use blueprints pipes with Neo4j. My current code is:
import org.junit.Test
import com.tinkerpop.blueprints.pgm.Graph
import com.tinkerpop.blueprints.pgm.Vertex
import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex
import com.tinkerpop.blueprints.pgm.impls.tg.TinkerGraphFactory
import com.tinkerpop.gremlin.Gremlin
import com.tinkerpop.pipes.AbstractPipe
import com.tinkerpop.pipes.Pipe
class MyUDSTest {
public static class MyPipe extends AbstractPipe<Vertex, Iterable<Vertex>> {
@Override
protected Iterable<Vertex> processNextStart() throws NoSuchElementException
{
def v = this.starts.next();
def nodes = [v, v, v].iterator;
return new Iterable<Vertex>() {
@Override
public Iterator<Vertex> iterator() {
return new Iterator<Vertex>() {
@Override
public boolean hasNext() {
return nodes.hasNext();
}
@Override
public Vertex next() {
return new Neo4jVertex(nodes.next(), graph);
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
};
}
}
@Test
public void testUDS()
{
Gremlin.load();
Graph g;
Gremlin.defineStep('myPipe',[Vertex,Pipe], { new MyPipe() })
g = TinkerGraphFactory.createTinkerGraph()
println "$g"
def result = []
g.v(1).myPipe.filter{true} >> result
result.each {
println "$it"
}
}
}
However it does not work property in the gremlin expression:
Gremlin.defineStep('myPipe',[Vertex,Pipe], { new MyPipe() })
...
def result = [];
g.v(1).myPipe >> result
result.each
{
println it
}
prints out: neo4j.MyUDSTest$MyPipe$1@49aacd5f. I would expect that I will get a
list of vertices. Could anybody help me with this pipe?
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user