Merge branch 'tp32'
Conflicts:
docs/src/dev/io/graphson.asciidoc
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4788420b
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4788420b
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4788420b
Branch: refs/heads/TINKERPOP-1878
Commit: 4788420bfcb0601f32bf30b3fbe0ac12f910ba03
Parents: 082432d d5b6ebb
Author: Stephen Mallette <[email protected]>
Authored: Wed Jan 24 08:35:14 2018 -0500
Committer: Stephen Mallette <[email protected]>
Committed: Wed Jan 24 08:35:14 2018 -0500
----------------------------------------------------------------------
docs/src/dev/io/graphson.asciidoc | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4788420b/docs/src/dev/io/graphson.asciidoc
----------------------------------------------------------------------
diff --cc docs/src/dev/io/graphson.asciidoc
index 9ab937f,7324cee..d6875a2
--- a/docs/src/dev/io/graphson.asciidoc
+++ b/docs/src/dev/io/graphson.asciidoc
@@@ -99,134 -81,21 +99,134 @@@ file.withWriter { writer -
result(Arrays.asList(graph.vertices().next())).create()
writer.write(toJson(msg, "Standard Result", "The following
`ResponseMessage` is a typical example of the typical successful response
Gremlin Server will return when returning results from a script."))
+}
+
+mapper = GraphSONMapper.build().
+ addRegistry(TinkerIoRegistryV2d0.instance()).
+ typeInfo(TypeInfo.PARTIAL_TYPES).
+
addCustomModule(GraphSONXModuleV2d0.build().create(false)).
+ addCustomModule(new
org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0.GremlinServerModule()).
+ version(GraphSONVersion.V2_0).create().createMapper()
+
+file = new File("io-output/out-graphson-2d0-partial.txt")
+file.withWriter { writer ->
+
+ writer.write("=== Core\n\n")
+ writer.write(toJson(File, "Class", "", "v2d0-partial"))
+ writer.write(toJson(new Date(1481750076295L), "Date", "", "v2d0-partial"))
+ writer.write(toJson(100.00d, "Double", "", "v2d0-partial"))
+ writer.write(toJson(100.00f, "Float", "", "v2d0-partial"))
+ writer.write(toJson(100, "Integer", "", "v2d0-partial"))
+ writer.write(toJson(100L, "Long", "", "v2d0-partial"))
+ writer.write(toJson(new java.sql.Timestamp(1481750076295L), "Timestamp",
"", "v2d0-partial"))
+
writer.write(toJson(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786"),
"UUID", "", "v2d0-partial"))
+
+ writer.write("\n")
+ writer.write("=== Graph Structure\n\n")
+ writer.write(toJson(graph.edges().next(), "Edge", "", "v2d0-partial"))
+ writer.write(toJson(g.V().out().out().path().next(), "Path", "",
"v2d0-partial"))
+ writer.write(toJson(graph.edges().next().properties().next(), "Property",
"", "v2d0-partial"))
+ writer.write(toJson(new
org.apache.tinkerpop.gremlin.structure.util.star.DirectionalStarGraph(org.apache.tinkerpop.gremlin.structure.util.star.StarGraph.of(graph.vertices().next()),
Direction.BOTH), "StarGraph", "", "v2d0-partial"))
+ writer.write(toJson(graph, "TinkerGraph", "`TinkerGraph` has a custom
serializer that is registered as part of the `TinkerIoRegistry`.",
"v2d0-partial"))
+ writer.write(toJson(g.V().out().out().tree().next(), "Tree", "",
"v2d0-partial"))
+ writer.write(toJson(graph.vertices().next(), "Vertex", "", "v2d0-partial"))
+ writer.write(toJson(graph.vertices().next().properties().next(),
"VertexProperty", "", "v2d0-partial"))
+
+ writer.write("\n")
+ writer.write("=== Graph Process\n\n")
+ writer.write(toJson(SackFunctions.Barrier.normSack, "Barrier", "",
"v2d0-partial"))
+ writer.write(toJson(new Bytecode.Binding("x", 1), "Binding", "A \"Binding\"
refers to a `Bytecode.Binding`.", "v2d0-partial"))
+ writer.write(toJson(g.V().hasLabel('person').out().in().tree(), "Bytecode",
"The following `Bytecode` example represents the traversal of
`g.V().hasLabel('person').out().in().tree()`. Obviously the serialized
`Bytecode` would be quite different for the endless variations of commands that
could be used together in the Gremlin language.", "v2d0-partial"))
+ writer.write(toJson(VertexProperty.Cardinality.list, "Cardinality", "",
"v2d0-partial"))
+ writer.write(toJson(Column.keys, "Column", "", "v2d0-partial"))
+ writer.write(toJson(Direction.OUT, "Direction", "", "v2d0-partial"))
+ writer.write(toJson(Operator.sum, "Operator", "", "v2d0-partial"))
+ writer.write(toJson(Order.incr, "Order", "", "v2d0-partial"))
+
writer.write(toJson(org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.any,
"Pick", "", "v2d0-partial"))
+ writer.write(toJson(Pop.all, "Pop", "", "v2d0-partial"))
+
writer.write(toJson(org.apache.tinkerpop.gremlin.util.function.Lambda.function("{
it.get() }"), "Lambda", "", "v2d0-partial"))
+ tm = g.V().hasLabel('person').out().out().tree().profile().next()
+ metrics = new
org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics(tm.getMetrics(0));
+ metrics.addNested(new
org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics(tm.getMetrics(1)));
+ writer.write(toJson(metrics, "Metrics", "", "v2d0-partial"))
- writer.write(toJson(P.gt(0), "P", "", "v2d0-partial"))
- writer.write(toJson(P.within(1), "P within", "v2d0-partial"))
- writer.write(toJson(P.without(1,2), "P without", "v2d0-partial"))
++ writer.write(toJson(P.gt(0), "P", "`P` expects a single value of a `List`
of values. There is special handling for `List` values when it comes to
`within`, `without`, `inside`, `outside` and `between`. For `inside`, `outside`
and `between`, the expectation is that the collection contain two objects (the
rest will be ignored) and those two objects become the arguments to those
methods. For `within` and `without`, these methods will accept an arbitrary
number of objects in the collection.", "v2d0-partial"))
++ writer.write(toJson(P.within(1), "P within", "Please see <<p,P>> for
additional information on `within`.", "v2d0-partial"))
++ writer.write(toJson(P.without(1,2), "P without", "Please see <<p,P>> for
additional information on `within`.", "v2d0-partial"))
+ writer.write(toJson(P.gt(0).and(P.lt(10)), "P and", "", "v2d0-partial"))
+ writer.write(toJson(P.gt(0).or(P.within(-1, -10, -100)), "P or", "",
"v2d0-partial"))
+ writer.write(toJson(Scope.local, "Scope", "", "v2d0-partial"))
+ writer.write(toJson(T.label, "T", "", "v2d0-partial"))
+
writer.write(toJson(g.V().hasLabel('person').out().out().tree().profile().next(),
"TraversalMetrics", "", "v2d0-partial"))
+ writer.write(toJson(g.V().hasLabel('person').nextTraverser(), "Traverser",
"", "v2d0-partial"))
+
+ writer.write("\n")
+ writer.write("=== RequestMessage\n\n")
+ msg = RequestMessage.build("authentication").
+
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("saslMechanism", "PLAIN", "sasl",
"AHN0ZXBocGhlbgBwYXNzd29yZA==").create()
+ writer.write(toJson(msg, "Authentication Response", "The following
`RequestMessage` is an example of the response that should be made to a
SASL-based authentication challenge.", "v2d0-partial"))
+ msg = RequestMessage.build("eval").processor("session").
+
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("gremlin", "g.V(x)", "bindings", [x: 1], "language",
"gremlin-groovy", "session",
UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).create()
+ writer.write(toJson(msg, "Session Eval", "The following `RequestMessage` is
an example of a simple session request for a script evaluation with
parameters.", "v2d0-partial"))
+ msg = RequestMessage.build("eval").processor("session").
+
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("gremlin", "social.V(x)", "bindings", [x: 1], "language",
"gremlin-groovy", "aliases", [g: "social"], "session",
UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).create()
+ writer.write(toJson(msg, "Session Eval Aliased", "The following
`RequestMessage` is an example of a session request for a script evaluation
with an alias that binds the `TraversalSource` of \"g\" to \"social\".",
"v2d0-partial"))
+ msg = RequestMessage.build("close").processor("session").
+
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("session",
UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).create()
+ writer.write(toJson(msg, "Session Close", "The following `RequestMessage`
is an example of a request to close a session.", "v2d0-partial"))
+ msg = RequestMessage.build("eval").
+
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("gremlin", "g.V(x)", "bindings", [x: 1], "language",
"gremlin-groovy").create()
+ writer.write(toJson(msg, "Sessionless Eval", "The following
`RequestMessage` is an example of a simple sessionless request for a script
evaluation with parameters.", "v2d0-partial"))
+ msg = RequestMessage.build("eval").
+
overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
+ add("gremlin", "social.V(x)", "bindings", [x: 1], "language",
"gremlin-groovy", "aliases", [g: "social"]).create()
+ writer.write(toJson(msg, "Sessionless Eval Aliased", "The following
`RequestMessage` is an example of a sessionless request for a script evaluation
with an alias that binds the `TraversalSource` of \"g\" to \"social\".",
"v2d0-partial"))
+
+ writer.write("\n")
+ writer.write("=== ResponseMessage\n\n")
+ msg =
ResponseMessage.build(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).
+
code(org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode.AUTHENTICATE).create()
- writer.write(toJson(msg, "Authentication Challenge", "When authentication
is enabled, an initial request to the server will result in an authentication
challenge. The typical response message will appear as follows, but handling it
could be different dependending on the SASL implementation (e.g. multiple
challenges maybe requested in some cases, but no in the default provided by
Gremlin Server).", "v2d0-partial"))
++ writer.write(toJson(msg, "Authentication Challenge", "When authentication
is enabled, an initial request to the server will result in an authentication
challenge. The typical response message will appear as follows, but handling it
could be different dependending on the SASL implementation (e.g. multiple
challenges may be requested in some cases, but no in the default provided by
Gremlin Server).", "v2d0-partial"))
+ msg =
ResponseMessage.build(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).
+
code(org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode.SUCCESS).
+
result(Arrays.asList(graph.vertices().next())).create()
+ writer.write(toJson(msg, "Standard Result", "The following
`ResponseMessage` is a typical example of the typical successful response
Gremlin Server will return when returning results from a script.",
"v2d0-partial"))
+
writer.write("\n")
- writer.write("=== Time\n\n")
- writer.write(toJson(Duration.ofDays(5), "Duration", "The following example
is a `Duration` of five days."))
- writer.write(toJson(Instant.now(), "Instant"))
- writer.write(toJson(LocalDate.of(2016, 1, 1), "LocalDate"))
- writer.write(toJson(LocalDateTime.of(2016, 1, 1, 12, 30), "LocalDateTime"))
- writer.write(toJson(LocalTime.of(12, 30, 45), "LocalTime"))
- writer.write(toJson(MonthDay.of(1, 1), "MonthDay"))
- writer.write(toJson(OffsetDateTime.now(), "OffsetDateTime"))
- writer.write(toJson(OffsetTime.now(), "OffsetTime"))
- writer.write(toJson(Period.of(1, 6, 15), "Period", "The following example
is a `Period` of one year, six months and fifteen days."))
- writer.write(toJson(Year.of(2016), "Year", "The following example is of the
`Year` \"2016\"."))
- writer.write(toJson(YearMonth.of(2016, 6), "YearMonth", "The following
example is a `YearMonth` of \"June 2016\""))
- writer.write(toJson(ZonedDateTime.now(), "ZonedDateTime"))
- writer.write(toJson(ZoneOffset.ofHoursMinutesSeconds(3, 6, 9),
"ZoneOffset", "The following example is a `ZoneOffset` of three hours, six
minutes, and nine seconds."))
+ writer.write("=== Extended\n\n")
+ writer.write("""Note that the "extended" types require the addition of the
separate `GraphSONXModuleV2d0` module as follows:\n
+[source,java]
+----
+mapper = GraphSONMapper.build().
+ typeInfo(TypeInfo.PARTIAL_TYPES).
+
addCustomModule(GraphSONXModuleV2d0.build().create(false)).
+ version(GraphSONVersion.V2_0).create().createMapper()
+----\n
+""")
+ writer.write(toJson(new java.math.BigDecimal(new
java.math.BigInteger("123456789987654321123456789987654321")), "BigDecimal",
"", "v2d0-partial"))
+ writer.write(toJson(new
java.math.BigInteger("123456789987654321123456789987654321"), "BigInteger", "",
"v2d0-partial"))
+ writer.write(toJson(new Byte("1"), "Byte", "", "v2d0-partial"))
+ writer.write(toJson(java.nio.ByteBuffer.wrap("some bytes for
you".getBytes()), "ByteBuffer", "", "v2d0-partial"))
+ writer.write(toJson("x".charAt(0), "Char", "", "v2d0-partial"))
+ writer.write(toJson(Duration.ofDays(5), "Duration", "The following example
is a `Duration` of five days.", "v2d0-partial"))
+ writer.write(toJson(java.net.InetAddress.getByName("localhost"),
"InetAddress", "", "v2d0-partial"))
+ writer.write(toJson(Instant.parse("2016-12-14T16:39:19.349Z"), "Instant",
"", "v2d0-partial"))
+ writer.write(toJson(LocalDate.of(2016, 1, 1), "LocalDate", "",
"v2d0-partial"))
+ writer.write(toJson(LocalDateTime.of(2016, 1, 1, 12, 30), "LocalDateTime",
"", "v2d0-partial"))
+ writer.write(toJson(LocalTime.of(12, 30, 45), "LocalTime", "",
"v2d0-partial"))
+ writer.write(toJson(MonthDay.of(1, 1), "MonthDay", "", "v2d0-partial"))
+ writer.write(toJson(OffsetDateTime.parse("2007-12-03T10:15:30+01:00"),
"OffsetDateTime", "", "v2d0-partial"))
+ writer.write(toJson(OffsetTime.parse("10:15:30+01:00"), "OffsetTime", "",
"v2d0-partial"))
+ writer.write(toJson(Period.of(1, 6, 15), "Period", "The following example
is a `Period` of one year, six months and fifteen days.", "v2d0-partial"))
+ writer.write(toJson(new Short("100"), "Short", "", "v2d0-partial"))
+ writer.write(toJson(Year.of(2016), "Year", "The following example is of the
`Year` \"2016\".", "v2d0-partial"))
+ writer.write(toJson(YearMonth.of(2016, 6), "YearMonth", "The following
example is a `YearMonth` of \"June 2016\"", "v2d0-partial"))
+ writer.write(toJson(ZonedDateTime.of(2016, 12, 23, 12, 12, 24, 36,
ZoneId.of("GMT+2")), "ZonedDateTime", "", "v2d0-partial"))
+ writer.write(toJson(ZoneOffset.ofHoursMinutesSeconds(3, 6, 9),
"ZoneOffset", "The following example is a `ZoneOffset` of three hours, six
minutes, and nine seconds.", "v2d0-partial"))
}
@@@ -5762,7 -4086,7 +5768,7 @@@ The following `RequestMessage` is an ex
==== Authentication Challenge
- When authentication is enabled, an initial request to the server will result
in an authentication challenge. The typical response message will appear as
follows, but handling it could be different depending on the SASL
implementation (e.g. multiple challenges maybe requested in some cases, but not
in the default provided by Gremlin Server).
-When authentication is enabled, an initial request to the server will result
in an authentication challenge. The typical response message will appear as
follows, but handling it could be different dependending on the SASL
implementation (e.g. multiple challenges maybe requested in some cases, but not
in the default provided by Gremlin Server).
++When authentication is enabled, an initial request to the server will result
in an authentication challenge. The typical response message will appear as
follows, but handling it could be different depending on the SASL
implementation (e.g. multiple challenges may be requested in some cases, but
not in the default provided by Gremlin Server).
[source,json]
----