This is an automated email from the ASF dual-hosted git repository.

kenhuuu pushed a commit to branch v4-graphson-trim
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 02ae647474580e19e034e2c2bc2ea61879484be7
Author: Ken Hu <[email protected]>
AuthorDate: Tue Oct 29 15:12:17 2024 -0700

    Remove unsupported types in GraphSONv4 from core.
---
 .../structure/io/graphson/GraphSONModule.java      | 127 +--------
 .../io/graphson/GraphSONSerializersV4.java         | 161 -----------
 .../structure/io/graphson/GraphSONXModuleV4.java   |  34 ---
 .../io/graphson/JavaTimeSerializersV4.java         | 198 --------------
 .../io/graphson/TraversalSerializersV4.java        | 297 ---------------------
 .../graphson/GraphSONMapperEmbeddedTypeTest.java   |  50 +++-
 .../GraphSONMapperPartialEmbeddedTypeTest.java     |   9 +-
 .../structure/io/graphson/GraphSONMapperTest.java  |  27 ++
 .../server/GremlinServerHttpIntegrateTest.java     |   6 +-
 9 files changed, 74 insertions(+), 835 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
index 175114d149..c18f3b05c5 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java
@@ -158,70 +158,15 @@ abstract class GraphSONModule extends 
TinkerPopJacksonModule {
                     put(Set.class, "Set");
 
                     // TinkerPop Graph objects
-                    put(Lambda.class, "Lambda");
                     put(Vertex.class, "Vertex");
                     put(Edge.class, "Edge");
                     put(Property.class, "Property");
                     put(Path.class, "Path");
                     put(VertexProperty.class, "VertexProperty");
-                    put(Metrics.class, "Metrics");
-                    put(TraversalMetrics.class, "TraversalMetrics");
-                    put(TraversalExplanation.class, "TraversalExplanation");
                     put(Tree.class, "Tree");
-                    put(AndP.class, "P");
-                    put(OrP.class, "P");
-                    put(P.class, "P");
-                    put(TextP.class, "TextP");
                     Stream.of(
-                            VertexProperty.Cardinality.class,
-                            Column.class,
                             Direction.class,
-                            DT.class,
-                            Merge.class,
-                            Operator.class,
-                            Order.class,
-                            Pop.class,
-                            SackFunctions.Barrier.class,
-                            Pick.class,
-                            Scope.class,
                             T.class).forEach(e -> put(e, e.getSimpleName()));
-                    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 -> put(strategy, 
strategy.getSimpleName()));
-
-                    GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> 
put(s, s.getSimpleName()));
                 }});
 
         /**
@@ -237,9 +182,6 @@ abstract class GraphSONModule extends 
TinkerPopJacksonModule {
             addSerializer(Vertex.class, new 
GraphSONSerializersV4.VertexJacksonSerializer(normalize, typeInfo));
             addSerializer(VertexProperty.class, new 
GraphSONSerializersV4.VertexPropertyJacksonSerializer(normalize, true));
             addSerializer(Property.class, new 
GraphSONSerializersV4.PropertyJacksonSerializer());
-            addSerializer(Metrics.class, new 
GraphSONSerializersV4.MetricsJacksonSerializer());
-            addSerializer(TraversalMetrics.class, new 
GraphSONSerializersV4.TraversalMetricsJacksonSerializer());
-            addSerializer(TraversalExplanation.class, new 
GraphSONSerializersV4.TraversalExplanationJacksonSerializer());
             addSerializer(Path.class, new 
GraphSONSerializersV4.PathJacksonSerializer());
             addSerializer(DirectionalStarGraph.class, new 
StarGraphGraphSONSerializerV4(normalize));
             addSerializer(Tree.class, new 
GraphSONSerializersV4.TreeJacksonSerializer());
@@ -258,22 +200,9 @@ abstract class GraphSONModule extends 
TinkerPopJacksonModule {
 
             // traversal
             addSerializer(BulkSet.class, new 
TraversalSerializersV4.BulkSetJacksonSerializer());
-            addSerializer(Traversal.class, new 
TraversalSerializersV4.TraversalJacksonSerializer());
-            Stream.of(VertexProperty.Cardinality.class,
-                    Column.class,
+            Stream.of(
                     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 
TraversalSerializersV4.EnumJacksonSerializer()));
-            addSerializer(P.class, new 
TraversalSerializersV4.PJacksonSerializer());
-            addSerializer(Lambda.class, new 
TraversalSerializersV4.LambdaJacksonSerializer());
-            addSerializer(TraversalStrategy.class, new 
TraversalSerializersV4.TraversalStrategyJacksonSerializer());
 
             /////////////////////// DESERIALIZERS ////////////////////////////
 
@@ -282,10 +211,7 @@ abstract class GraphSONModule extends 
TinkerPopJacksonModule {
             addDeserializer(Edge.class, new 
GraphSONSerializersV4.EdgeJacksonDeserializer());
             addDeserializer(Property.class, new 
GraphSONSerializersV4.PropertyJacksonDeserializer());
             addDeserializer(Path.class, new 
GraphSONSerializersV4.PathJacksonDeserializer());
-            addDeserializer(TraversalExplanation.class, new 
GraphSONSerializersV4.TraversalExplanationJacksonDeserializer());
             addDeserializer(VertexProperty.class, new 
GraphSONSerializersV4.VertexPropertyJacksonDeserializer());
-            addDeserializer(Metrics.class, new 
GraphSONSerializersV4.MetricsJacksonDeserializer());
-            addDeserializer(TraversalMetrics.class, new 
GraphSONSerializersV4.TraversalMetricsJacksonDeserializer());
             addDeserializer(Tree.class, new 
GraphSONSerializersV4.TreeJacksonDeserializer());
 
             // java.util - use the standard jackson serializers for 
collections when types aren't embedded
@@ -300,58 +226,9 @@ abstract class GraphSONModule extends 
TinkerPopJacksonModule {
             addDeserializer(Double.class, new 
GraphSONSerializersV4.DoubleJacksonDeserializer());
 
             // traversal
-            Stream.of(VertexProperty.Cardinality.values(),
-                    Column.values(),
+            Stream.of(
                     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 
TraversalSerializersV4.EnumJacksonDeserializer(e.getDeclaringClass())));
-            addDeserializer(P.class, new 
TraversalSerializersV4.PJacksonDeserializer());
-            addDeserializer(TextP.class, new 
TraversalSerializersV4.TextPJacksonDeserializer());
-            addDeserializer(Lambda.class, new 
TraversalSerializersV4.LambdaJacksonDeserializer());
-            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 
TraversalSerializersV4.TraversalStrategyProxyJacksonDeserializer(strategy)));
-
-            GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> 
addDeserializer(s, new 
TraversalSerializersV4.TraversalStrategyProxyJacksonDeserializer(s)));
         }
 
         public static Builder build() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV4.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV4.java
index 0c6a06feef..f4625797c5 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV4.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV4.java
@@ -326,44 +326,6 @@ class GraphSONSerializersV4 {
         }
     }
 
-    final static class TraversalExplanationJacksonSerializer extends 
StdScalarSerializer<TraversalExplanation> {
-        public TraversalExplanationJacksonSerializer() {
-            super(TraversalExplanation.class);
-        }
-
-        @Override
-        public void serialize(final TraversalExplanation traversalExplanation, 
final JsonGenerator jsonGenerator,
-                              final SerializerProvider serializerProvider) 
throws IOException {
-            final Map<String, Object> m = new HashMap<>();
-            m.put(GraphSONTokens.ORIGINAL, 
getStepsAsList(traversalExplanation.getOriginalTraversal()));
-
-            final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> 
strategyTraversals = traversalExplanation.getStrategyTraversals();
-
-            final List<Map<String, Object>> intermediates = new ArrayList<>();
-            for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : 
strategyTraversals) {
-                final Map<String, Object> intermediate = new HashMap<>();
-                intermediate.put(GraphSONTokens.STRATEGY, 
pair.getValue0().toString());
-                intermediate.put(GraphSONTokens.CATEGORY, 
pair.getValue0().getTraversalCategory().getSimpleName());
-                intermediate.put(GraphSONTokens.TRAVERSAL, 
getStepsAsList(pair.getValue1()));
-                intermediates.add(intermediate);
-            }
-            m.put(GraphSONTokens.INTERMEDIATE, intermediates);
-
-            if (strategyTraversals.isEmpty())
-                m.put(GraphSONTokens.FINAL, 
getStepsAsList(traversalExplanation.getOriginalTraversal()));
-            else
-                m.put(GraphSONTokens.FINAL, 
getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 
1).getValue1()));
-
-            jsonGenerator.writeObject(m);
-        }
-
-        private List<String> getStepsAsList(final Traversal.Admin<?, ?> t) {
-            final List<String> steps = new ArrayList<>();
-            t.getSteps().iterator().forEachRemaining(s -> 
steps.add(s.toString()));
-            return steps;
-        }
-    }
-
     final static class IntegerGraphSONSerializer extends 
StdScalarSerializer<Integer> {
         public IntegerGraphSONSerializer() {
             super(Integer.class);
@@ -388,52 +350,6 @@ class GraphSONSerializersV4 {
         }
     }
 
-    final static class TraversalMetricsJacksonSerializer extends 
StdScalarSerializer<TraversalMetrics> {
-        public TraversalMetricsJacksonSerializer() {
-            super(TraversalMetrics.class);
-        }
-
-        @Override
-        public void serialize(final TraversalMetrics traversalMetrics, final 
JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            // creation of the map enables all the fields to be properly 
written with their type if required
-            final Map<String, Object> m = new HashMap<>();
-            m.put(GraphSONTokens.DURATION, 
traversalMetrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
-            final List<Metrics> metrics = new ArrayList<>();
-            metrics.addAll(traversalMetrics.getMetrics());
-            m.put(GraphSONTokens.METRICS, metrics);
-
-            jsonGenerator.writeObject(m);
-        }
-    }
-
-    final static class MetricsJacksonSerializer extends 
StdScalarSerializer<Metrics> {
-        public MetricsJacksonSerializer() {
-            super(Metrics.class);
-        }
-
-        @Override
-        public void serialize(final Metrics metrics, final JsonGenerator 
jsonGenerator,
-                              final SerializerProvider serializerProvider) 
throws IOException {
-            final Map<String, Object> m = new HashMap<>();
-            m.put(GraphSONTokens.ID, metrics.getId());
-            m.put(GraphSONTokens.NAME, metrics.getName());
-            m.put(GraphSONTokens.COUNTS, metrics.getCounts());
-            m.put(GraphSONTokens.DURATION, 
metrics.getDuration(TimeUnit.NANOSECONDS) / 1000000d);
-
-            if (!metrics.getAnnotations().isEmpty()) {
-                m.put(GraphSONTokens.ANNOTATIONS, metrics.getAnnotations());
-            }
-            if (!metrics.getNested().isEmpty()) {
-                final List<Metrics> nested = new ArrayList<>();
-                metrics.getNested().forEach(it -> nested.add(it));
-                m.put(GraphSONTokens.METRICS, nested);
-            }
-            jsonGenerator.writeObject(m);
-        }
-    }
-
-
     /**
      * Maps in the JVM can have {@link Object} as a key, but in JSON they must 
be a {@link String}.
      */
@@ -651,83 +567,6 @@ class GraphSONSerializersV4 {
         }
     }
 
-    static class TraversalExplanationJacksonDeserializer extends 
StdDeserializer<TraversalExplanation> {
-        public TraversalExplanationJacksonDeserializer() {
-            super(TraversalExplanation.class);
-        }
-
-        @Override
-        public TraversalExplanation deserialize(final JsonParser jsonParser, 
final DeserializationContext deserializationContext) throws IOException, 
JsonProcessingException {
-            final Map<String, Object> explainData = 
deserializationContext.readValue(jsonParser, Map.class);
-            final String originalTraversal = 
explainData.get(GraphSONTokens.ORIGINAL).toString();
-            final List<Triplet<String, String, String>> intermediates = new 
ArrayList<>();
-            final List<Map<String,Object>> listMap = 
(List<Map<String,Object>>) explainData.get(GraphSONTokens.INTERMEDIATE);
-            for (Map<String,Object> m : listMap) {
-                
intermediates.add(Triplet.with(m.get(GraphSONTokens.STRATEGY).toString(),
-                        m.get(GraphSONTokens.CATEGORY).toString(),
-                        m.get(GraphSONTokens.TRAVERSAL).toString()));
-            }
-
-            return new ImmutableExplanation(originalTraversal, intermediates);
-        }
-
-        @Override
-        public boolean isCachable() {
-            return true;
-        }
-    }
-
-    static class MetricsJacksonDeserializer extends StdDeserializer<Metrics> {
-        public MetricsJacksonDeserializer() {
-            super(Metrics.class);
-        }
-
-        @Override
-        public Metrics deserialize(final JsonParser jsonParser, final 
DeserializationContext deserializationContext) throws IOException, 
JsonProcessingException {
-            final Map<String, Object> metricsData = 
deserializationContext.readValue(jsonParser, Map.class);
-            final MutableMetrics m = new 
MutableMetrics((String)metricsData.get(GraphSONTokens.ID), 
(String)metricsData.get(GraphSONTokens.NAME));
-
-            m.setDuration(Math.round((Double) 
metricsData.get(GraphSONTokens.DURATION) * 1000000), TimeUnit.NANOSECONDS);
-            for (Map.Entry<String, Long> count : ((Map<String, 
Long>)metricsData.getOrDefault(GraphSONTokens.COUNTS, new 
LinkedHashMap<>(0))).entrySet()) {
-                m.setCount(count.getKey(), count.getValue());
-            }
-            for (Map.Entry<String, Long> count : ((Map<String, Long>) 
metricsData.getOrDefault(GraphSONTokens.ANNOTATIONS, new 
LinkedHashMap<>(0))).entrySet()) {
-                m.setAnnotation(count.getKey(), count.getValue());
-            }
-            for (MutableMetrics nested : 
(List<MutableMetrics>)metricsData.getOrDefault(GraphSONTokens.METRICS, new 
ArrayList<>(0))) {
-                m.addNested(nested);
-            }
-            return m;
-        }
-
-        @Override
-        public boolean isCachable() {
-            return true;
-        }
-    }
-
-    static class TraversalMetricsJacksonDeserializer extends 
StdDeserializer<TraversalMetrics> {
-
-        public TraversalMetricsJacksonDeserializer() {
-            super(TraversalMetrics.class);
-        }
-
-        @Override
-        public TraversalMetrics deserialize(final JsonParser jsonParser, final 
DeserializationContext deserializationContext) throws IOException, 
JsonProcessingException {
-            final Map<String, Object> traversalMetricsData = 
deserializationContext.readValue(jsonParser, Map.class);
-
-            return new DefaultTraversalMetrics(
-                    Math.round((Double) 
traversalMetricsData.get(GraphSONTokens.DURATION) * 1000000),
-                    (List<MutableMetrics>) 
traversalMetricsData.get(GraphSONTokens.METRICS)
-            );
-        }
-
-        @Override
-        public boolean isCachable() {
-            return true;
-        }
-    }
-
     static class TreeJacksonDeserializer extends StdDeserializer<Tree> {
 
         public TreeJacksonDeserializer() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV4.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV4.java
index aa7ad5e9ad..dfceb7a9ab 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV4.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV4.java
@@ -54,22 +54,10 @@ public final class GraphSONXModuleV4 extends GraphSONModule 
{
                 put(BigDecimal.class, "BigDecimal");
                 put(Byte.class, "Byte");
                 put(Character.class, "Char");
-                put(InetAddress.class, "InetAddress");
 
                 // Time serializers/deserializers
                 put(Duration.class, "Duration");
-                put(Instant.class, "Instant");
-                put(LocalDate.class, "LocalDate");
-                put(LocalDateTime.class, "LocalDateTime");
-                put(LocalTime.class, "LocalTime");
-                put(MonthDay.class, "MonthDay");
                 put(OffsetDateTime.class, "DateTime");
-                put(OffsetTime.class, "OffsetTime");
-                put(Period.class, "Period");
-                put(Year.class, "Year");
-                put(YearMonth.class, "YearMonth");
-                put(ZonedDateTime.class, "ZonedDateTime");
-                put(ZoneOffset.class, "ZoneOffset");
             }});
 
     /**
@@ -82,35 +70,13 @@ public final class GraphSONXModuleV4 extends GraphSONModule 
{
 
         // java.time
         addSerializer(Duration.class, new 
JavaTimeSerializersV4.DurationJacksonSerializer());
-        addSerializer(Instant.class, new 
JavaTimeSerializersV4.InstantJacksonSerializer());
-        addSerializer(LocalDate.class, new 
JavaTimeSerializersV4.LocalDateJacksonSerializer());
-        addSerializer(LocalDateTime.class, new 
JavaTimeSerializersV4.LocalDateTimeJacksonSerializer());
-        addSerializer(LocalTime.class, new 
JavaTimeSerializersV4.LocalTimeJacksonSerializer());
-        addSerializer(MonthDay.class, new 
JavaTimeSerializersV4.MonthDayJacksonSerializer());
         addSerializer(OffsetDateTime.class, new 
JavaTimeSerializersV4.OffsetDateTimeJacksonSerializer());
-        addSerializer(OffsetTime.class, new 
JavaTimeSerializersV4.OffsetTimeJacksonSerializer());
-        addSerializer(Period.class, new 
JavaTimeSerializersV4.PeriodJacksonSerializer());
-        addSerializer(Year.class, new 
JavaTimeSerializersV4.YearJacksonSerializer());
-        addSerializer(YearMonth.class, new 
JavaTimeSerializersV4.YearMonthJacksonSerializer());
-        addSerializer(ZonedDateTime.class, new 
JavaTimeSerializersV4.ZonedDateTimeJacksonSerializer());
-        addSerializer(ZoneOffset.class, new 
JavaTimeSerializersV4.ZoneOffsetJacksonSerializer());
 
         /////////////////////// DESERIALIZERS ////////////////////////////
 
         // java.time
         addDeserializer(Duration.class, new 
JavaTimeSerializersV4.DurationJacksonDeserializer());
-        addDeserializer(Instant.class, new 
JavaTimeSerializersV4.InstantJacksonDeserializer());
-        addDeserializer(LocalDate.class, new 
JavaTimeSerializersV4.LocalDateJacksonDeserializer());
-        addDeserializer(LocalDateTime.class, new 
JavaTimeSerializersV4.LocalDateTimeJacksonDeserializer());
-        addDeserializer(LocalTime.class, new 
JavaTimeSerializersV4.LocalTimeJacksonDeserializer());
-        addDeserializer(MonthDay.class, new 
JavaTimeSerializersV4.MonthDayJacksonDeserializer());
         addDeserializer(OffsetDateTime.class, new 
JavaTimeSerializersV4.OffsetDateTimeJacksonDeserializer());
-        addDeserializer(OffsetTime.class, new 
JavaTimeSerializersV4.OffsetTimeJacksonDeserializer());
-        addDeserializer(Period.class, new 
JavaTimeSerializersV4.PeriodJacksonDeserializer());
-        addDeserializer(Year.class, new 
JavaTimeSerializersV4.YearJacksonDeserializer());
-        addDeserializer(YearMonth.class, new 
JavaTimeSerializersV4.YearMonthJacksonDeserializer());
-        addDeserializer(ZonedDateTime.class, new 
JavaTimeSerializersV4.ZonedDateTimeJacksonDeserializer());
-        addDeserializer(ZoneOffset.class, new 
JavaTimeSerializersV4.ZoneOffsetJacksonDeserializer());
     }
 
     public static GraphSONModuleBuilder build() {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV4.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV4.java
index 891aa667d7..1a1633d294 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV4.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JavaTimeSerializersV4.java
@@ -110,96 +110,6 @@ final class JavaTimeSerializersV4 {
         }
     }
 
-    final static class InstantJacksonSerializer extends 
AbstractJavaTimeSerializer<Instant> {
-
-        public InstantJacksonSerializer() {
-            super(Instant.class);
-        }
-    }
-
-    final static class InstantJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<Instant> {
-        public InstantJacksonDeserializer() {
-            super(Instant.class);
-        }
-
-        @Override
-        public Instant parse(final String val) {
-            return Instant.parse(val);
-        }
-    }
-
-    final static class LocalDateJacksonSerializer extends 
AbstractJavaTimeSerializer<LocalDate> {
-
-        public LocalDateJacksonSerializer() {
-            super(LocalDate.class);
-        }
-    }
-
-    final static class LocalDateJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<LocalDate> {
-        public LocalDateJacksonDeserializer() {
-            super(LocalDate.class);
-        }
-
-        @Override
-        public LocalDate parse(final String val) {
-            return LocalDate.parse(val);
-        }
-    }
-
-    final static class LocalDateTimeJacksonSerializer extends 
AbstractJavaTimeSerializer<LocalDateTime> {
-
-        public LocalDateTimeJacksonSerializer() {
-            super(LocalDateTime.class);
-        }
-    }
-
-    final static class LocalDateTimeJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<LocalDateTime> {
-        public LocalDateTimeJacksonDeserializer() {
-            super(LocalDateTime.class);
-        }
-
-        @Override
-        public LocalDateTime parse(final String val) {
-            return LocalDateTime.parse(val);
-        }
-    }
-
-    final static class LocalTimeJacksonSerializer extends 
AbstractJavaTimeSerializer<LocalTime> {
-
-        public LocalTimeJacksonSerializer() {
-            super(LocalTime.class);
-        }
-    }
-
-    final static class LocalTimeJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<LocalTime> {
-        public LocalTimeJacksonDeserializer() {
-            super(LocalTime.class);
-        }
-
-        @Override
-        public LocalTime parse(final String val) {
-            return LocalTime.parse(val);
-        }
-    }
-
-    final static class MonthDayJacksonSerializer extends 
AbstractJavaTimeSerializer<MonthDay> {
-
-        public MonthDayJacksonSerializer() {
-            super(MonthDay.class);
-        }
-    }
-
-    final static class MonthDayJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<MonthDay> {
-        public MonthDayJacksonDeserializer() {
-            super(MonthDay.class);
-        }
-
-        @Override
-        public MonthDay parse(final String val) {
-            return MonthDay.parse(val);
-        }
-    }
-
     final static class OffsetDateTimeJacksonSerializer extends 
AbstractJavaTimeSerializer<OffsetDateTime> {
 
         public OffsetDateTimeJacksonSerializer() {
@@ -217,112 +127,4 @@ final class JavaTimeSerializersV4 {
             return OffsetDateTime.parse(val);
         }
     }
-
-    final static class OffsetTimeJacksonSerializer extends 
AbstractJavaTimeSerializer<OffsetTime> {
-
-        public OffsetTimeJacksonSerializer() {
-            super(OffsetTime.class);
-        }
-    }
-
-    final static class OffsetTimeJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<OffsetTime> {
-        public OffsetTimeJacksonDeserializer() {
-            super(OffsetTime.class);
-        }
-
-        @Override
-        public OffsetTime parse(final String val) {
-            return OffsetTime.parse(val);
-        }
-    }
-
-    final static class PeriodJacksonSerializer extends 
AbstractJavaTimeSerializer<Period> {
-
-        public PeriodJacksonSerializer() {
-            super(Period.class);
-        }
-    }
-
-    final static class PeriodJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<Period> {
-        public PeriodJacksonDeserializer() {
-            super(Period.class);
-        }
-
-        @Override
-        public Period parse(final String val) {
-            return Period.parse(val);
-        }
-    }
-
-    final static class YearJacksonSerializer extends 
AbstractJavaTimeSerializer<Year> {
-
-        public YearJacksonSerializer() {
-            super(Year.class);
-        }
-    }
-
-    final static class YearJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<Year> {
-        public YearJacksonDeserializer() {
-            super(Year.class);
-        }
-
-        @Override
-        public Year parse(final String val) {
-            return Year.parse(val);
-        }
-    }
-
-    final static class YearMonthJacksonSerializer extends 
AbstractJavaTimeSerializer<YearMonth> {
-
-        public YearMonthJacksonSerializer() {
-            super(YearMonth.class);
-        }
-    }
-
-    final static class YearMonthJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<YearMonth> {
-        public YearMonthJacksonDeserializer() {
-            super(YearMonth.class);
-        }
-
-        @Override
-        public YearMonth parse(final String val) {
-            return YearMonth.parse(val);
-        }
-    }
-
-    final static class ZonedDateTimeJacksonSerializer extends 
AbstractJavaTimeSerializer<ZonedDateTime> {
-
-        public ZonedDateTimeJacksonSerializer() {
-            super(ZonedDateTime.class);
-        }
-    }
-
-    final static class ZonedDateTimeJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<ZonedDateTime> {
-        public ZonedDateTimeJacksonDeserializer() {
-            super(ZonedDateTime.class);
-        }
-
-        @Override
-        public ZonedDateTime parse(final String val) {
-            return ZonedDateTime.parse(val);
-        }
-    }
-
-    final static class ZoneOffsetJacksonSerializer extends 
AbstractJavaTimeSerializer<ZoneOffset> {
-
-        public ZoneOffsetJacksonSerializer() {
-            super(ZoneOffset.class);
-        }
-    }
-
-    final static class ZoneOffsetJacksonDeserializer extends 
AbstractJavaTimeJacksonDeserializer<ZoneOffset> {
-        public ZoneOffsetJacksonDeserializer() {
-            super(ZoneOffset.class);
-        }
-
-        @Override
-        public ZoneOffset parse(final String val) {
-            return ZoneOffset.of(val);
-        }
-    }
 }
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TraversalSerializersV4.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TraversalSerializersV4.java
index 77a905cc35..1754ee6bd8 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TraversalSerializersV4.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/TraversalSerializersV4.java
@@ -19,37 +19,16 @@
 
 package org.apache.tinkerpop.gremlin.structure.io.graphson;
 
-import org.apache.commons.configuration2.ConfigurationConverter;
-import org.apache.commons.configuration2.MapConfiguration;
-import org.apache.tinkerpop.gremlin.process.traversal.P;
-import org.apache.tinkerpop.gremlin.process.traversal.TextP;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.AndP;
-import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
-import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
-import org.apache.tinkerpop.gremlin.util.function.Lambda;
 import org.apache.tinkerpop.shaded.jackson.core.JsonGenerator;
 import org.apache.tinkerpop.shaded.jackson.core.JsonParser;
 import org.apache.tinkerpop.shaded.jackson.core.JsonProcessingException;
-import org.apache.tinkerpop.shaded.jackson.core.JsonToken;
 import org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext;
 import org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider;
 import org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer;
-import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
 import 
org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdScalarSerializer;
-import org.apache.tinkerpop.shaded.jackson.databind.ser.std.StdSerializer;
 
 import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -63,26 +42,6 @@ final class TraversalSerializersV4 {
     // SERIALIZERS //
     ////////////////
 
-    final static class TraversalJacksonSerializer extends 
StdSerializer<Traversal> {
-
-        public TraversalJacksonSerializer() {
-            super(Traversal.class);
-        }
-
-        @Override
-        public void serialize(final Traversal traversal, final JsonGenerator 
jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            jsonGenerator.writeObject(traversal.asAdmin().getGremlinLang());
-        }
-
-        @Override
-        public void serializeWithType(final Traversal traversal, final 
JsonGenerator jsonGenerator, final SerializerProvider serializerProvider, final 
TypeSerializer typeSerializer)
-                throws IOException {
-            serialize(traversal, jsonGenerator, serializerProvider);
-        }
-
-    }
-
     static class EnumJacksonSerializer extends StdScalarSerializer<Enum> {
 
         public EnumJacksonSerializer() {
@@ -97,49 +56,6 @@ final class TraversalSerializersV4 {
 
     }
 
-    final static class PJacksonSerializer extends StdScalarSerializer<P> {
-
-        public PJacksonSerializer() {
-            super(P.class);
-        }
-
-        @Override
-        public void serialize(final P p, final JsonGenerator jsonGenerator, 
final SerializerProvider serializerProvider)
-                throws IOException {
-            jsonGenerator.writeStartObject();
-            jsonGenerator.writeStringField(GraphSONTokens.PREDICATE, 
p.getPredicateName());
-            if (p instanceof ConnectiveP) {
-                jsonGenerator.writeArrayFieldStart(GraphSONTokens.VALUE);
-                for (final P<?> predicate : ((ConnectiveP<?>) 
p).getPredicates()) {
-                    jsonGenerator.writeObject(predicate);
-                }
-                jsonGenerator.writeEndArray();
-            } else
-                jsonGenerator.writeObjectField(GraphSONTokens.VALUE, 
p.getValue());
-
-            jsonGenerator.writeEndObject();
-        }
-
-    }
-
-    final static class LambdaJacksonSerializer extends 
StdScalarSerializer<Lambda> {
-
-        public LambdaJacksonSerializer() {
-            super(Lambda.class);
-        }
-
-        @Override
-        public void serialize(final Lambda lambda, final JsonGenerator 
jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            jsonGenerator.writeStartObject();
-            jsonGenerator.writeStringField(GraphSONTokens.SCRIPT, 
lambda.getLambdaScript());
-            jsonGenerator.writeStringField(GraphSONTokens.LANGUAGE, 
lambda.getLambdaLanguage());
-            jsonGenerator.writeNumberField(GraphSONTokens.ARGUMENTS, 
lambda.getLambdaArguments());
-            jsonGenerator.writeEndObject();
-        }
-
-    }
-
     final static class BulkSetJacksonSerializer extends 
StdScalarSerializer<BulkSet> {
 
         public BulkSetJacksonSerializer() {
@@ -157,23 +73,6 @@ final class TraversalSerializersV4 {
         }
     }
 
-    final static class TraversalStrategyJacksonSerializer extends 
StdScalarSerializer<TraversalStrategy> {
-
-        public TraversalStrategyJacksonSerializer() {
-            super(TraversalStrategy.class);
-        }
-
-        @Override
-        public void serialize(final TraversalStrategy traversalStrategy, final 
JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
-                throws IOException {
-            jsonGenerator.writeStartObject();
-            for (final Map.Entry<Object, Object> entry : 
ConfigurationConverter.getMap(traversalStrategy.getConfiguration()).entrySet()) 
{
-                jsonGenerator.writeObjectField((String) entry.getKey(), 
entry.getValue());
-            }
-            jsonGenerator.writeEndObject();
-        }
-    }
-
     ///////////////////
     // DESERIALIZERS //
     //////////////////
@@ -200,200 +99,4 @@ final class TraversalSerializersV4 {
             return true;
         }
     }
-
-    final static class PJacksonDeserializer extends 
AbstractReflectJacksonDeserializer<P> {
-
-        public PJacksonDeserializer() {
-            super(P.class);
-        }
-
-        @Override
-        public P deserialize(final JsonParser jsonParser, final 
DeserializationContext deserializationContext) throws IOException, 
JsonProcessingException {
-            String predicate = null;
-            Object value = null;
-
-            while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
-                if 
(jsonParser.getCurrentName().equals(GraphSONTokens.PREDICATE)) {
-                    jsonParser.nextToken();
-                    predicate = jsonParser.getText();
-                } else if 
(jsonParser.getCurrentName().equals(GraphSONTokens.VALUE)) {
-                    jsonParser.nextToken();
-                    value = deserializationContext.readValue(jsonParser, 
Object.class);
-                }
-            }
-
-            if (predicate.equals(GraphSONTokens.AND) || 
predicate.equals(GraphSONTokens.OR)) {
-                return predicate.equals(GraphSONTokens.AND) ? new 
AndP((List<P>) value) : new OrP((List<P>) value);
-            } else if (predicate.equals(GraphSONTokens.NOT) && value 
instanceof P) {
-                return P.not((P<?>) value);
-            } else {
-                try {
-                    if (value instanceof Collection) {
-                        if (predicate.equals("between"))
-                            return P.between(((List) value).get(0), ((List) 
value).get(1));
-                        else if (predicate.equals("inside"))
-                            return P.between(((List) value).get(0), ((List) 
value).get(1));
-                        else if (predicate.equals("outside"))
-                            return P.outside(((List) value).get(0), ((List) 
value).get(1));
-                        else if (predicate.equals("within"))
-                            return P.within((Collection) value);
-                        else if (predicate.equals("without"))
-                            return P.without((Collection) value);
-                        else
-                            return (P) tryFindMethod(P.class, predicate, 
Collection.class).invoke(null, (Collection) value);
-                    } else {
-                        try {
-                            return (P) tryFindMethod(P.class, predicate, 
Object.class).invoke(null, value);
-                        } catch (final NoSuchMethodException e) {
-                            return (P) tryFindMethod(P.class, predicate, 
Object[].class).invoke(null, (Object) new Object[]{value});
-                        }
-                    }
-                } catch (final Exception e) {
-                    throw new IllegalStateException(e.getMessage(), e);
-                }
-            }
-        }
-
-        @Override
-        public boolean isCachable() {
-            return true;
-        }
-    }
-
-    /**
-     * Deserializers that make reflection calls can use this class as a base 
and thus cache reflected methods to avoid
-     * future lookups.
-     */
-    static abstract class AbstractReflectJacksonDeserializer<T> extends 
StdDeserializer<T> {
-        private final Map<CacheKey, Method> CACHE = new ConcurrentHashMap<>();
-
-        public AbstractReflectJacksonDeserializer(final Class<? extends T> 
clazz) {
-            super(clazz);
-        }
-
-        protected Method tryFindMethod(final Class<?> base, final String 
methodName, final Class<?> parameterType) throws Exception {
-            return CACHE.computeIfAbsent(new CacheKey(methodName, 
parameterType),
-                    cacheKey -> {
-                        try {
-                            return base.getMethod(methodName, parameterType);
-                        } catch (Exception e) {
-                            throw new IllegalStateException(e.getMessage(), e);
-                        }
-                    });
-        }
-
-        private static class CacheKey {
-            private final String predicate;
-            private final Class<?> parameterType;
-
-            public CacheKey(final String predicate, final Class<?> 
parameterType) {
-                this.predicate = Objects.requireNonNull(predicate);
-                this.parameterType = Objects.requireNonNull(parameterType);
-            }
-
-            @Override
-            public boolean equals(final Object o) {
-                if (this == o) return true;
-                if (o == null || getClass() != o.getClass()) return false;
-                final CacheKey cacheKey = (CacheKey) o;
-                return predicate.equals(cacheKey.predicate) &&
-                        parameterType.equals(cacheKey.parameterType);
-            }
-
-            @Override
-            public int hashCode() {
-                return Objects.hash(predicate, parameterType);
-            }
-        }
-    }
-
-    final static class TextPJacksonDeserializer extends 
AbstractReflectJacksonDeserializer<TextP> {
-
-        public TextPJacksonDeserializer() {
-            super(TextP.class);
-        }
-
-        @Override
-        public TextP deserialize(final JsonParser jsonParser, final 
DeserializationContext deserializationContext) throws IOException, 
JsonProcessingException {
-            String predicate = null;
-            String value = null;
-
-            while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
-                if 
(jsonParser.getCurrentName().equals(GraphSONTokens.PREDICATE)) {
-                    jsonParser.nextToken();
-                    predicate = jsonParser.getText();
-                } else if 
(jsonParser.getCurrentName().equals(GraphSONTokens.VALUE)) {
-                    jsonParser.nextToken();
-                    value = deserializationContext.readValue(jsonParser, 
String.class);
-                }
-            }
-
-            try {
-                return (TextP) tryFindMethod(TextP.class, predicate, 
String.class).invoke(null, value);
-            } catch (final Exception e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        }
-
-        @Override
-        public boolean isCachable() {
-            return true;
-        }
-    }
-
-    final static class LambdaJacksonDeserializer extends 
StdDeserializer<Lambda> {
-
-        public LambdaJacksonDeserializer() {
-            super(Lambda.class);
-        }
-
-        @Override
-        public Lambda deserialize(final JsonParser jsonParser, final 
DeserializationContext deserializationContext) throws IOException, 
JsonProcessingException {
-            String script = null;
-            String language = null;
-            int arguments = -1;
-
-            while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
-                if (jsonParser.getCurrentName().equals(GraphSONTokens.SCRIPT)) 
{
-                    jsonParser.nextToken();
-                    script = jsonParser.getText();
-                } else if 
(jsonParser.getCurrentName().equals(GraphSONTokens.LANGUAGE)) {
-                    jsonParser.nextToken();
-                    language = jsonParser.getText();
-                } else if 
(jsonParser.getCurrentName().equals(GraphSONTokens.ARGUMENTS)) {
-                    jsonParser.nextToken();
-                    arguments = jsonParser.getIntValue();
-                }
-            }
-
-            if (-1 == arguments || arguments > 2)
-                return new Lambda.UnknownArgLambda(script, language, 
arguments);
-            else if (0 == arguments)
-                return new Lambda.ZeroArgLambda<>(script, language);
-            else if (1 == arguments)
-                return new Lambda.OneArgLambda<>(script, language);
-            else
-                return new Lambda.TwoArgLambda<>(script, language);
-        }
-
-        @Override
-        public boolean isCachable() {
-            return true;
-        }
-    }
-
-    final static class TraversalStrategyProxyJacksonDeserializer<T extends 
TraversalStrategy> extends AbstractObjectDeserializer<TraversalStrategyProxy> {
-
-        private final Class<T> clazz;
-
-        public TraversalStrategyProxyJacksonDeserializer(final Class<T> clazz) 
{
-            super(TraversalStrategyProxy.class);
-            this.clazz = clazz;
-        }
-
-        @Override
-        public TraversalStrategyProxy<T> createObject(final Map<String, 
Object> data) {
-            return new TraversalStrategyProxy<>(this.clazz, new 
MapConfiguration(data));
-        }
-    }
 }
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
index 872df275e2..b35423c70b 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperEmbeddedTypeTest.java
@@ -109,7 +109,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleTraversalExplanation() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final TraversalExplanation o = __().out().outV().outE().explain();
         final TraversalExplanation deser = serializeDeserialize(mapper, o, 
TraversalExplanation.class);
@@ -195,7 +195,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleBiFunctionLambda() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final Lambda o = (Lambda) Lambda.biFunction("x,y -> 'test'");
         assertEquals(o, serializeDeserialize(mapper, o, Lambda.class));
@@ -203,7 +203,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleComparatorLambda() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final Lambda o = (Lambda) Lambda.comparator("x,y -> x <=> y");
         assertEquals(o, serializeDeserialize(mapper, o, Lambda.class));
@@ -211,7 +211,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleConsumerLambda() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final Lambda o = (Lambda) Lambda.consumer("x -> x");
         assertEquals(o, serializeDeserialize(mapper, o, Lambda.class));
@@ -219,7 +219,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleFunctionLambda() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final Lambda o = (Lambda) Lambda.function("x -> x");
         assertEquals(o, serializeDeserialize(mapper, o, Lambda.class));
@@ -227,7 +227,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePredicateLambda() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final Lambda o = (Lambda) Lambda.predicate("x -> true");
         assertEquals(o, serializeDeserialize(mapper, o, Lambda.class));
@@ -235,7 +235,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleSupplierLambda() throws Exception {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final Lambda o = (Lambda) Lambda.supplier("'test'");
         assertEquals(o, serializeDeserialize(mapper, o, Lambda.class));
@@ -249,30 +249,40 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleInstant() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final Instant o = Instant.ofEpochMilli(System.currentTimeMillis());
         assertEquals(o, serializeDeserialize(mapper, o, Instant.class));
     }
 
     @Test
     public void shouldHandleLocalDate() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final LocalDate o = LocalDate.now();
         assertEquals(o, serializeDeserialize(mapper, o, LocalDate.class));
     }
 
     @Test
     public void shouldHandleLocalDateTime() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final LocalDateTime o = LocalDateTime.now();
         assertEquals(o, serializeDeserialize(mapper, o, LocalDateTime.class));
     }
 
     @Test
     public void shouldHandleLocalTime() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final LocalTime o = LocalTime.now();
         assertEquals(o, serializeDeserialize(mapper, o, LocalTime.class));
     }
 
     @Test
     public void shouldHandleMonthDay() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final MonthDay o = MonthDay.now();
         assertEquals(o, serializeDeserialize(mapper, o, MonthDay.class));
     }
@@ -285,36 +295,48 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandleOffsetTime() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final OffsetTime o = OffsetTime.now();
         assertEquals(o, serializeDeserialize(mapper, o, OffsetTime.class));
     }
 
     @Test
     public void shouldHandlePeriod() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final Period o = Period.ofDays(3);
         assertEquals(o, serializeDeserialize(mapper, o, Period.class));
     }
 
     @Test
     public void shouldHandleYear() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final Year o = Year.now();
         assertEquals(o, serializeDeserialize(mapper, o, Year.class));
     }
 
     @Test
     public void shouldHandleYearMonth() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final YearMonth o = YearMonth.now();
         assertEquals(o, serializeDeserialize(mapper, o, YearMonth.class));
     }
 
     @Test
     public void shouldHandleZonedDateTime() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final ZonedDateTime o = ZonedDateTime.now();
         assertEquals(o, serializeDeserialize(mapper, o, ZonedDateTime.class));
     }
 
     @Test
     public void shouldHandleZonedOffset() throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final ZoneOffset o  = ZonedDateTime.now().getOffset();
         assertEquals(o, serializeDeserialize(mapper, o, ZoneOffset.class));
     }
@@ -365,7 +387,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePMultiValue() throws Exception  {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final P o = P.within(1,2,3,null);
         assertEquals(o, serializeDeserialize(mapper, o, P.class));
@@ -373,7 +395,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePSingleValue() throws Exception  {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final P o = P.within(1);
         assertEquals(o, serializeDeserialize(mapper, o, P.class));
@@ -381,7 +403,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePMultiValueAsList() throws Exception  {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final P o = P.within(Arrays.asList(1,2,3,null));
         assertEquals(o, serializeDeserialize(mapper, o, P.class));
@@ -389,7 +411,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePMultiValueAsSet() throws Exception  {
-        assumeThat(version, either(startsWith("v3")).or(startsWith("v4")));
+        assumeThat(version, startsWith("v3"));
 
         final P o = P.within(new HashSet<>(Arrays.asList(1,2,3)));
         assertEquals(o, serializeDeserialize(mapper, o, P.class));
@@ -397,7 +419,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePBetween() throws Exception  {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final P o = P.between(1, 100);
         assertEquals(o, serializeDeserialize(mapper, o, P.class));
@@ -407,7 +429,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
     public void shouldReadPWithJsonArray() throws Exception {
         // for some reason v3 is forgiving about the naked json array - 
leaving this here for backward compatibility,
         // but should be a g:List (i think)
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final P o = P.within(Arrays.asList(1,2,3));
         assertEquals(o, mapper.readValue("{\"@type\": \"g:P\", \"@value\": 
{\"predicate\": \"within\", \"value\": [{\"@type\": \"g:Int32\", \"@value\": 
1},{\"@type\": \"g:Int32\", \"@value\": 2},{\"@type\": \"g:Int32\", \"@value\": 
3}]}}", Object.class));
@@ -452,7 +474,7 @@ public class GraphSONMapperEmbeddedTypeTest extends 
AbstractGraphSONTest {
 
     @Test
     public void shouldHandlePExt() throws Exception  {
-        assumeThat(version, not(startsWith("v1")));
+        assumeThat(version, either(startsWith("v2")).or(startsWith("v3")));
 
         final P o = PExt.mix("bah");
         assertEquals(o, serializeDeserialize(mapper, o, P.class));
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperPartialEmbeddedTypeTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperPartialEmbeddedTypeTest.java
index 5315c1a9ec..99b45a8685 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperPartialEmbeddedTypeTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperPartialEmbeddedTypeTest.java
@@ -31,6 +31,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.time.Instant;
+import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
@@ -145,7 +146,7 @@ public class GraphSONMapperPartialEmbeddedTypeTest extends 
AbstractGraphSONTest
 
     @Test
     public void shouldFailIfTypeSpecifiedIsNotSameTypeInPayload() {
-        final ZoneOffset o = ZonedDateTime.now().getOffset();
+        final OffsetDateTime o = OffsetDateTime.now();
         final ByteArrayOutputStream stream = new ByteArrayOutputStream();
         try {
             mapper.writeValue(stream, o);
@@ -155,9 +156,9 @@ public class GraphSONMapperPartialEmbeddedTypeTest extends 
AbstractGraphSONTest
             fail("Should have failed decoding the value");
         } catch (Exception e) {
             if (version.startsWith("v4")) {
-                assertThat(e.getMessage(), containsString("Could not 
deserialize the JSON value as required. Nested exception: 
java.lang.InstantiationException: Cannot deserialize the value with the 
detected type contained in the JSON ('" + GraphSONTokens.GREMLIN_TYPE_NAMESPACE 
+ ":ZoneOffset') to the type specified in parameter to the object mapper (class 
java.time.Instant). Those types are incompatible."));
+                assertThat(e.getMessage(), containsString("Could not 
deserialize the JSON value as required. Nested exception: 
java.lang.InstantiationException: Cannot deserialize the value with the 
detected type contained in the JSON ('" + GraphSONTokens.GREMLIN_TYPE_NAMESPACE 
+ ":DateTime') to the type specified in parameter to the object mapper (class 
java.time.Instant). Those types are incompatible."));
             } else {
-                assertThat(e.getMessage(), containsString("Could not 
deserialize the JSON value as required. Nested exception: 
java.lang.InstantiationException: Cannot deserialize the value with the 
detected type contained in the JSON ('" + 
GraphSONTokens.GREMLINX_TYPE_NAMESPACE + ":ZoneOffset') to the type specified 
in parameter to the object mapper (class java.time.Instant). Those types are 
incompatible."));
+                assertThat(e.getMessage(), containsString("Could not 
deserialize the JSON value as required. Nested exception: 
java.lang.InstantiationException: Cannot deserialize the value with the 
detected type contained in the JSON ('" + 
GraphSONTokens.GREMLINX_TYPE_NAMESPACE + ":OffsetDateTime') to the type 
specified in parameter to the object mapper (class java.time.Instant). Those 
types are incompatible."));
             }
         }
     }
@@ -276,6 +277,8 @@ public class GraphSONMapperPartialEmbeddedTypeTest extends 
AbstractGraphSONTest
 
     @Test
     public void shouldHandleVariantsOfP() throws Exception {
+        if (version.startsWith("v4")) return;
+
         final List<P> variantsOfP = Arrays.asList(
                 P.between(1,2),
                 P.eq(1),
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
index 052e95b15b..27ad64a369 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapperTest.java
@@ -53,7 +53,10 @@ import java.util.HashMap;
 import java.util.HashSet;
 
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__;
+import static org.hamcrest.core.IsNot.not;
+import static org.hamcrest.core.StringStartsWith.startsWith;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeThat;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -172,6 +175,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleTraversalExplanation() throws Exception {
+        assumeThat(version, not(startsWith("v4")));
+
         final TraversalExplanation te = __().out().outV().outE().explain();
         final String json = mapper.writeValueAsString(te);
         
assertEquals("{\"original\":[\"InjectStep([])\",\"VertexStep(OUT,vertex)\",\"EdgeVertexStep(OUT)\",\"VertexStep(OUT,edge)\"],\"intermediate\":[],\"final\":[\"InjectStep([])\",\"VertexStep(OUT,vertex)\",\"EdgeVertexStep(OUT)\",\"VertexStep(OUT,edge)\"]}",
 json);
@@ -186,6 +191,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleInstant()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final Instant o = Instant.ofEpochMilli(System.currentTimeMillis());
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -193,6 +200,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleLocalDate()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final LocalDate o = LocalDate.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -200,6 +209,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleLocalDateTime()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final LocalDateTime o = LocalDateTime.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -207,6 +218,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleLocalTime()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final LocalTime o = LocalTime.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -214,6 +227,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleMonthDay()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final MonthDay o = MonthDay.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -228,6 +243,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleOffsetTime()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final OffsetTime o = OffsetTime.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -235,6 +252,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandlePeriod()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final Period o = Period.ofDays(3);
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -242,6 +261,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleYear()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final Year o = Year.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -249,6 +270,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleYearMonth()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final YearMonth o = YearMonth.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -256,6 +279,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleZonedDateTime()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final ZonedDateTime o = ZonedDateTime.now();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
@@ -263,6 +288,8 @@ public class GraphSONMapperTest {
 
     @Test
     public void shouldHandleZoneOffset()throws Exception  {
+        assumeThat(version, not(startsWith("v4")));
+
         final ZoneOffset o = ZonedDateTime.now().getOffset();
         final String json = mapper.writeValueAsString(o);
         assertEquals("\"" + o.toString() + "\"", json);
diff --git 
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
 
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index 0ebcc28473..a9a179f4d7 100644
--- 
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ 
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -61,7 +61,7 @@ import javax.script.SimpleBindings;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Field;
-import java.time.Instant;
+import java.time.OffsetDateTime;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.List;
@@ -478,14 +478,14 @@ public class GremlinServerHttpIntegrateTest extends 
AbstractGremlinServerIntegra
         final CloseableHttpClient httpclient = HttpClients.createDefault();
         final HttpPost httppost = new 
HttpPost(TestClientFactory.createURLString());
         httppost.addHeader("Content-Type", "application/json");
-        httppost.setEntity(new 
StringEntity("{\"gremlin\":\"java.time.Instant.MAX\"}", Consts.UTF_8));
+        httppost.setEntity(new 
StringEntity("{\"gremlin\":\"java.time.OffsetDateTime.MAX\"}", Consts.UTF_8));
 
         try (final CloseableHttpResponse response = 
httpclient.execute(httppost)) {
             assertEquals(200, response.getStatusLine().getStatusCode());
             assertEquals("application/json", 
response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(Instant.MAX, 
Instant.parse(node.get("result").get(TOKEN_DATA).get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asText()));
+            assertEquals(OffsetDateTime.MAX, 
OffsetDateTime.parse(node.get("result").get(TOKEN_DATA).get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).asText()));
         }
     }
 

Reply via email to