in gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java [599:714]
protected GraphSONModuleV2(final boolean normalize) {
super("graphson-2.0");
/////////////////////// SERIALIZERS ////////////////////////////
// graph
addSerializer(Edge.class, new GraphSONSerializersV2.EdgeJacksonSerializer(normalize));
addSerializer(Vertex.class, new GraphSONSerializersV2.VertexJacksonSerializer(normalize));
addSerializer(VertexProperty.class, new GraphSONSerializersV2.VertexPropertyJacksonSerializer(normalize, true));
addSerializer(Property.class, new GraphSONSerializersV2.PropertyJacksonSerializer());
addSerializer(Metrics.class, new GraphSONSerializersV2.MetricsJacksonSerializer());
addSerializer(TraversalMetrics.class, new GraphSONSerializersV2.TraversalMetricsJacksonSerializer());
addSerializer(TraversalExplanation.class, new GraphSONSerializersV2.TraversalExplanationJacksonSerializer());
addSerializer(Path.class, new GraphSONSerializersV2.PathJacksonSerializer());
addSerializer(DirectionalStarGraph.class, new StarGraphGraphSONSerializerV2(normalize));
addSerializer(Tree.class, new GraphSONSerializersV2.TreeJacksonSerializer());
// java.util
addSerializer(Map.Entry.class, new JavaUtilSerializersV2.MapEntryJacksonSerializer());
// need to explicitly add serializers for those types because Jackson doesn't do it at all.
addSerializer(Integer.class, new GraphSONSerializersV2.IntegerGraphSONSerializer());
addSerializer(Double.class, new GraphSONSerializersV2.DoubleGraphSONSerializer());
// traversal
addSerializer(Traversal.class, new TraversalSerializersV2.TraversalJacksonSerializer());
Stream.of(VertexProperty.Cardinality.class,
Column.class,
Direction.class,
DT.class,
Merge.class,
Operator.class,
Order.class,
Pop.class,
SackFunctions.Barrier.class,
Scope.class,
Pick.class,
T.class).forEach(e -> addSerializer(e, new TraversalSerializersV2.EnumJacksonSerializer()));
addSerializer(P.class, new TraversalSerializersV2.PJacksonSerializer());
addSerializer(Lambda.class, new TraversalSerializersV2.LambdaJacksonSerializer());
addSerializer(Traverser.class, new TraversalSerializersV2.TraverserJacksonSerializer());
addSerializer(TraversalStrategy.class, new TraversalSerializersV2.TraversalStrategyJacksonSerializer());
/////////////////////// DESERIALIZERS ////////////////////////////
// Tinkerpop Graph
addDeserializer(Vertex.class, new GraphSONSerializersV2.VertexJacksonDeserializer());
addDeserializer(Edge.class, new GraphSONSerializersV2.EdgeJacksonDeserializer());
addDeserializer(Property.class, new GraphSONSerializersV2.PropertyJacksonDeserializer());
addDeserializer(Path.class, new GraphSONSerializersV2.PathJacksonDeserializer());
addDeserializer(VertexProperty.class, new GraphSONSerializersV2.VertexPropertyJacksonDeserializer());
addDeserializer(TraversalExplanation.class, new GraphSONSerializersV2.TraversalExplanationJacksonDeserializer());
addDeserializer(Metrics.class, new GraphSONSerializersV2.MetricsJacksonDeserializer());
addDeserializer(TraversalMetrics.class, new GraphSONSerializersV2.TraversalMetricsJacksonDeserializer());
addDeserializer(Tree.class, new GraphSONSerializersV2.TreeJacksonDeserializer());
addDeserializer(TraversalStrategyProxy.class, new TraversalSerializersV2.TraversalStrategyProxyJacksonDeserializer<>());
// numbers
addDeserializer(Integer.class, new GraphSONSerializersV2.IntegerJacksonDeserializer());
addDeserializer(Double.class, new GraphSONSerializersV2.DoubleJacksonDeserializer());
// traversal
Stream.of(VertexProperty.Cardinality.values(),
Column.values(),
Direction.values(),
DT.values(),
Merge.values(),
Operator.values(),
Order.values(),
Pop.values(),
SackFunctions.Barrier.values(),
Scope.values(),
Pick.values(),
T.values()).flatMap(Stream::of).forEach(e -> addDeserializer(e.getClass(), new TraversalSerializersV2.EnumJacksonDeserializer(e.getDeclaringClass())));
addDeserializer(P.class, new TraversalSerializersV2.PJacksonDeserializer());
addDeserializer(TextP.class, new TraversalSerializersV2.TextPJacksonDeserializer());
addDeserializer(Lambda.class, new TraversalSerializersV2.LambdaJacksonDeserializer());
addDeserializer(Traverser.class, new TraversalSerializersV2.TraverserJacksonDeserializer());
Arrays.asList(
ConnectiveStrategy.class,
ElementIdStrategy.class,
EventStrategy.class,
HaltedTraverserStrategy.class,
PartitionStrategy.class,
SubgraphStrategy.class,
SeedStrategy.class,
LazyBarrierStrategy.class,
MatchAlgorithmStrategy.class,
AdjacentToIncidentStrategy.class,
ByModulatorOptimizationStrategy.class,
ProductiveByStrategy.class,
CountStrategy.class,
FilterRankingStrategy.class,
IdentityRemovalStrategy.class,
IncidentToAdjacentStrategy.class,
InlineFilterStrategy.class,
MatchPredicateStrategy.class,
OrderLimitStrategy.class,
OptionsStrategy.class,
PathProcessorStrategy.class,
PathRetractionStrategy.class,
RepeatUnrollStrategy.class,
ComputerVerificationStrategy.class,
LambdaRestrictionStrategy.class,
ReadOnlyStrategy.class,
StandardVerificationStrategy.class,
EarlyLimitStrategy.class,
EdgeLabelVerificationStrategy.class,
ReservedKeysVerificationStrategy.class,
//
GraphFilterStrategy.class,
VertexProgramStrategy.class
).forEach(strategy -> addDeserializer(strategy, new TraversalSerializersV2.TraversalStrategyProxyJacksonDeserializer(strategy)));
GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> addDeserializer(s, new TraversalSerializersV2.TraversalStrategyProxyJacksonDeserializer(s)));
}