I am trying to return a Vertex (in tinkerpop format) that it was just created with Gremlin:
DseCluster dseCluster = DseCluster.builder()
.addContactPoint
In Datastax 1.1
it seems that you can't cast to Vertex
directly, there is no indication of this in the documentation.
Instead you can access VertexProperty
(org.apache.tinkerpop.gremlin.structure.VertexProperty
) using .getProperties(String)
.
GraphNode n = dseSession.executeGraph("g.V().hasLabel('test_vertex_meta_props')").one();
Vertex vertex = n.asVertex();
// there can be more than one VertexProperty with the key "meta_property"
Iterator<VertexProperty> metaProps = vertex.getProperties("meta_property");
VertexProperty metaProp1 = metaProps.next();
// the value of the meta property
int metaProp1Value = metaProp1.getValue().asInt();
// the properties of the meta property itself
Iterator<Property> simpleProps1 = metaProp1.getProperties();
Property simpleProp11 = simpleProps1.next();
double simplePropValue11 = simpleProp11.getValue().asDouble();
Property simpleProp12 = simpleProps1.next();
double simplePropValue12 = simpleProp12.getValue().asDouble();
// **multi value** meta property.
VertexProperty metaProp2 = metaProps.next();
Via: Datastax Manual (1.1)
According to the lengthy discussion I had with Datastax Team through jira and emails:
It is indeed possible to have Fluent API and get back pure Gremlin/tinkerpop objects. This is possible as illustrated here (java-dse graph 1.x documentation) using next(), toList() directly on GraphTraversalSource and not using executeGraph() which will return the DSE Objects.
So the above code changes to:
Vertex user = graph.addV("User")
.property("username", "testuser").next();
where graph
is a GraphTraversalSource<Vertex,Vertex>
object and Vertex
is a org.apache.tinkerpop.gremlin.structure.Vertex
object.