[
https://issues.apache.org/jira/browse/TINKERPOP-1274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15428462#comment-15428462
]
ASF GitHub Bot commented on TINKERPOP-1274:
-------------------------------------------
GitHub user newkek opened a pull request:
https://github.com/apache/tinkerpop/pull/386
TINKERPOP-1274: GraphSON 2.0 [revised]
For context, a precise description is provided in the PR for the first
version of the fix: #351. Please see this first for initial context.
This PR provides initial set of features defined in #351, plus the
following:
- Types for Graph objects.
- Types for **all** numeric values.
- New type IDs format.
- Avoid serializing empty properties field.
As a reminder the format for types is the following:
- A value not typed : `value`
- A value typed : `{"@type":"typeName", "@value":value}`
## New type IDs format
A type ID is now composed of 2 parts, the "domain" and the type name. A
"domain" can be used by any implementor to implement their own data type,
avoiding collisions with the existing TinkerPop type IDs. The default domain
for Graph object is "gremlin".
## Types for all numeric values
A type is now present for every numeric value, the types have been renamed
to be more understandable with regards to their memory sizes or kinds. As a
reference, here is a description of all currently existing types and their
corresponding Java implementation:
- Java `Integer`: "gremlin:int32"
- Java `Long`: "gremlin:int64"
- Java `Short`: "gremlin:int16"
- Java `Float`: "gremlin:float"
- Java `Double`: "gremlin:double"
## Types for all Graph objects.
New typeIDs introduced in #351 (time types, UUIDs, etc..) now follow the
type format defined here: "domain:typename".
Types have now been included for Graph-specific objects, here is an
exhaustive list of the existing types handled so far and their corresponding
IDs:
- `Vertex` -> "gremlin:vertex"
- `Edge` -> "gremlin:edge"
- `VertexPropery` -> "gremlin:vertexproperty"
- `Property` -> "gremlin:property"
- `Path` -> "gremlin:path"
- `Tree` -> "gremlin:tree"
- `Graph` -> "gremlin:graph"
- `Metrics` -> "gremlin:metrics"
- `TraversalMetrics` -> `gremlin:traversalmetrics"
This improvement defines a requirement to the serialization format which is
that every type *must* have a Jackson serializer and deserializer defined on
the source `ObjectMapper`. Previous not defined serializers and deserializers
have been added in this PR.
Code-wise, it's pretty much the same than for #351, the big intake in code
here is the addition of the deserializers for all Graph objects, a big
simplification to the serializers (`GraphSONSerializersV2d0`), the addition of
the "domain" to the type system, and making that new typeID format configurable
to users through the `TinkerPopJacksonModule`.
`mvn clean install` test suite passes, and it's rebased on top of current
`master`.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/newkek/incubator-tinkerpop TINKERPOP-1274-rev
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tinkerpop/pull/386.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #386
----
commit 635be59cf6505a47a1ca1d27519d07e918fdc1ef
Author: Stephen Mallette <[email protected]>
Date: 2016-05-18T12:41:26Z
TINKERPOP-1274: GraphSON 2.0.
----
> GraphSON Version 2.0
> --------------------
>
> Key: TINKERPOP-1274
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1274
> Project: TinkerPop
> Issue Type: Improvement
> Components: io
> Affects Versions: 3.1.2-incubating
> Reporter: stephen mallette
> Priority: Minor
> Fix For: 3.2.2
>
>
> Develop a revised version of GraphSON that provides better support for
> non-JVM languages that consume it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)