You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ke...@apache.org on 2024/10/29 22:12:42 UTC

(tinkerpop) branch v4-graphson-trim created (now 2689d8f614)

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

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


      at 2689d8f614 Remove unsupported types in GraphSONv4 from core.

This branch includes the following new commits:

     new 2689d8f614 Remove unsupported types in GraphSONv4 from core.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(tinkerpop) 01/01: Remove unsupported types in GraphSONv4 from core.

Posted by ke...@apache.org.
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 2689d8f6145b15033e0f365cdc9cff77c766568c
Author: Ken Hu <10...@users.noreply.github.com>
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 ++
 8 files changed, 71 insertions(+), 832 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);