You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2019/02/11 15:06:26 UTC
[tinkerpop] branch master updated: Dynamically register
SparqlStrategy for GraphSON CTR
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master by this push:
new e21e225 Dynamically register SparqlStrategy for GraphSON CTR
e21e225 is described below
commit e21e225af3e9895aef7d733d1624aa416c79be11
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Mon Feb 11 10:05:21 2019 -0500
Dynamically register SparqlStrategy for GraphSON CTR
---
CHANGELOG.asciidoc | 1 +
.../structure/io/graphson/GraphSONModule.java | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 487844b..ff4b1e0 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
This release also includes changes from <<release-3-3-6, 3.3.6>>.
* Added GraphBinary serializer for TraversalMetrics
+* Added registration for `SparqlStrategy` for GraphSON.
* Fixed up `SparqlStrategy` so that it could be used properly with `RemoteStrategy`.
* Fixed `ByteBuffer` serialization for GraphBinary.
* Added fallback resolver to `TypeSerializerRegistry` for GraphBinary.
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 c3ba80c..6a3c6a5 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
@@ -96,6 +96,7 @@ import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
@@ -116,6 +117,18 @@ abstract class GraphSONModule extends TinkerPopJacksonModule {
}
/**
+ * Attempt to load {@code SparqlStrategy} if it's on the path. Dynamically loading it from core makes it easier
+ * for users as they won't have to register special modules for serialization purposes.
+ */
+ private static Optional<Class<?>> tryLoadSparqlStrategy() {
+ try {
+ return Optional.of(Class.forName("org.apache.tinkerpop.gremlin.sparql.process.traversal.strategy.SparqlStrategy"));
+ } catch (Exception ignored) {
+ return Optional.empty();
+ }
+ }
+
+ /**
* Version 3.0 of GraphSON.
*/
static final class GraphSONModuleV3d0 extends GraphSONModule {
@@ -193,6 +206,8 @@ abstract class GraphSONModule extends TinkerPopJacksonModule {
GraphFilterStrategy.class,
VertexProgramStrategy.class
).forEach(strategy -> put(strategy, strategy.getSimpleName()));
+
+ GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> put(s, s.getSimpleName()));
}});
/**
@@ -314,6 +329,8 @@ abstract class GraphSONModule extends TinkerPopJacksonModule {
GraphFilterStrategy.class,
VertexProgramStrategy.class
).forEach(strategy -> addDeserializer(strategy, new TraversalSerializersV3d0.TraversalStrategyProxyJacksonDeserializer(strategy)));
+
+ GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> addDeserializer(s, new TraversalSerializersV3d0.TraversalStrategyProxyJacksonDeserializer(s)));
}
public static Builder build() {
@@ -416,6 +433,8 @@ abstract class GraphSONModule extends TinkerPopJacksonModule {
GraphFilterStrategy.class,
VertexProgramStrategy.class
).forEach(strategy -> put(strategy, strategy.getSimpleName()));
+
+ GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> put(s, s.getSimpleName()));
}});
/**
@@ -527,6 +546,8 @@ abstract class GraphSONModule extends TinkerPopJacksonModule {
GraphFilterStrategy.class,
VertexProgramStrategy.class
).forEach(strategy -> addDeserializer(strategy, new TraversalSerializersV2d0.TraversalStrategyProxyJacksonDeserializer(strategy)));
+
+ GraphSONModule.tryLoadSparqlStrategy().ifPresent(s -> addDeserializer(s, new TraversalSerializersV2d0.TraversalStrategyProxyJacksonDeserializer(s)));
}
public static Builder build() {