/** * Spawns a {@link GraphTraversal} by adding a edge with the specified label. */ public GraphTraversal<Edge, Edge> addE(final String label) { final GraphTraversalSource clone = this.clone(); clone.bytecode.addStep(GraphTraversal.Symbols.addE, label); final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(clone); return traversal.addStep(new AddEdgeStartStep(traversal, label)); }
@Override protected Traverser.Admin<Edge> processNextStart() { if (this.first) { this.first = false; final TraverserGenerator generator = this.getTraversal().getTraverserGenerator(); final Traverser.Admin traverser = generator.generate(1, (Step) this, 1); // a dead traverser to trigger the traversal Vertex toVertex = (Vertex) this.parameters.get(traverser, TO, Collections::emptyList).get(0); Vertex fromVertex = (Vertex) this.parameters.get(traverser, FROM, Collections::emptyList).get(0); if (toVertex instanceof Attachable) toVertex = ((Attachable<Vertex>) toVertex) .attach(Attachable.Method.get(this.getTraversal().getGraph().orElse(EmptyGraph.instance()))); if (fromVertex instanceof Attachable) fromVertex = ((Attachable<Vertex>) fromVertex) .attach(Attachable.Method.get(this.getTraversal().getGraph().orElse(EmptyGraph.instance()))); final String edgeLabel = (String) this.parameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0); final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, this.parameters.getKeyValues(traverser, TO, FROM, T.label)); if (callbackRegistry != null) { final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(edge, true)); callbackRegistry.getCallbacks().forEach(c -> c.accept(vae)); } return generator.generate(edge, this, 1L); } else throw FastNoSuchElementException.instance(); }
/** * Spawns a {@link GraphTraversal} by adding a edge with a label as specified by the provided {@link Traversal}. */ public GraphTraversal<Edge, Edge> addE(final Traversal<?, String> edgeLabelTraversal) { final GraphTraversalSource clone = this.clone(); clone.bytecode.addStep(GraphTraversal.Symbols.addE, edgeLabelTraversal); final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(clone); return traversal.addStep(new AddEdgeStartStep(traversal, edgeLabelTraversal)); }
@Override protected Traverser.Admin<Edge> processNextStart() { if (this.first) { this.first = false; final TraverserGenerator generator = this.getTraversal().getTraverserGenerator(); final Traverser.Admin traverser = generator.generate(1, (Step) this, 1); // a dead traverser to trigger the traversal Vertex toVertex = (Vertex) this.parameters.get(traverser, TO, Collections::emptyList).get(0); Vertex fromVertex = (Vertex) this.parameters.get(traverser, FROM, Collections::emptyList).get(0); if (toVertex instanceof Attachable) toVertex = ((Attachable<Vertex>) toVertex) .attach(Attachable.Method.get(this.getTraversal().getGraph().orElse(EmptyGraph.instance()))); if (fromVertex instanceof Attachable) fromVertex = ((Attachable<Vertex>) fromVertex) .attach(Attachable.Method.get(this.getTraversal().getGraph().orElse(EmptyGraph.instance()))); final String edgeLabel = (String) this.parameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0); final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, this.parameters.getKeyValues(traverser, TO, FROM, T.label)); if (callbackRegistry != null) { final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(edge, true)); callbackRegistry.getCallbacks().forEach(c -> c.accept(vae)); } return generator.generate(edge, this, 1L); } else throw FastNoSuchElementException.instance(); }
@Override public CredentialTraversal<Edge, Edge> addE(String label) { CredentialTraversalSource clone = this.clone(); clone.getBytecode().addStep(GraphTraversal.Symbols.addV, label); DefaultCredentialTraversal traversal = new DefaultCredentialTraversal(clone); return (CredentialTraversal) traversal.asAdmin().addStep(new AddEdgeStartStep(traversal, label)); }
@Override public CredentialTraversal<Edge, Edge> addE(Traversal edgeLabelTraversal) { CredentialTraversalSource clone = this.clone(); clone.getBytecode().addStep(GraphTraversal.Symbols.addV, edgeLabelTraversal); DefaultCredentialTraversal traversal = new DefaultCredentialTraversal(clone); return (CredentialTraversal) traversal.asAdmin().addStep(new AddEdgeStartStep(traversal, edgeLabelTraversal)); }
/** * Spawns a {@link GraphTraversal} by adding a edge with a label as specified by the provided {@link Traversal}. */ public GraphTraversal<Edge, Edge> addE(final Traversal<?, String> edgeLabelTraversal) { final GraphTraversalSource clone = this.clone(); clone.bytecode.addStep(GraphTraversal.Symbols.addE, edgeLabelTraversal); final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(clone); return traversal.addStep(new AddEdgeStartStep(traversal, edgeLabelTraversal)); }
/** * Spawns a {@link GraphTraversal} by adding a edge with the specified label. */ public GraphTraversal<Edge, Edge> addE(final String label) { final GraphTraversalSource clone = this.clone(); clone.bytecode.addStep(GraphTraversal.Symbols.addE, label); final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(clone); return traversal.addStep(new AddEdgeStartStep(traversal, label)); }
@Override public CredentialTraversal<Edge, Edge> addE(String label) { CredentialTraversalSource clone = this.clone(); clone.getBytecode().addStep(GraphTraversal.Symbols.addV, label); DefaultCredentialTraversal traversal = new DefaultCredentialTraversal(clone); return (CredentialTraversal) traversal.asAdmin().addStep(new AddEdgeStartStep(traversal, label)); }
@Override public CredentialTraversal<Edge, Edge> addE(Traversal edgeLabelTraversal) { CredentialTraversalSource clone = this.clone(); clone.getBytecode().addStep(GraphTraversal.Symbols.addV, edgeLabelTraversal); DefaultCredentialTraversal traversal = new DefaultCredentialTraversal(clone); return (CredentialTraversal) traversal.asAdmin().addStep(new AddEdgeStartStep(traversal, edgeLabelTraversal)); }