Github user newkek commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/499#discussion_r88770063
--- Diff:
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
---
@@ -459,9 +486,33 @@ public PropertyJacksonDeserializer() {
@Override
public Property createObject(final Map<String, Object> propData) {
- return new DetachedProperty(
- (String) propData.get(GraphSONTokens.KEY),
- propData.get(GraphSONTokens.VALUE));
+ final Object element = propData.get(GraphSONTokens.ELEMENT);
+ return element instanceof Element ? // graphson-non-embedded
is treated differently, but since this is a hard coded embedding...
+ new DetachedProperty<>((String)
propData.get(GraphSONTokens.KEY), propData.get(GraphSONTokens.VALUE), (Element)
element) :
+ new DetachedProperty<>((String)
propData.get(GraphSONTokens.KEY), propData.get(GraphSONTokens.VALUE));
+ }
+ }
+
+ static class VertexPropertyJacksonDeserializer extends
AbstractObjectDeserializer<VertexProperty> {
+
+ protected VertexPropertyJacksonDeserializer() {
+ super(VertexProperty.class);
+ }
+
+ @Override
+ public VertexProperty createObject(final Map<String, Object>
propData) {
+ return propData.containsKey(GraphSONTokens.VERTEX) ?
+ new DetachedVertexProperty<>(
+ propData.get(GraphSONTokens.ID),
+ (String) propData.get(GraphSONTokens.LABEL),
+ propData.get(GraphSONTokens.VALUE),
(Map<String, Object>) propData.get(GraphSONTokens.PROPERTIES),
+ new
DetachedVertex(propData.get(GraphSONTokens.VERTEX), Vertex.DEFAULT_LABEL,
null)) :
--- End diff --
Supposing it's a Vertex with VertexProperties that is deserialized (and not
only a VertexProperty on its own), will this really make the VertexProperty
link to the right parent Vertex? It looks like this will create another one.
However, I've recently found a nice way to make a deserializer sort of "context
aware" in order to, when a Vertex deserializer deserializes its own
VertexProperties, it can give to the VertexProperty deserializers the Vertex
object that's "above" them - the VertexProperty's parent. I haven't had time to
propose a fix here in TP but I intended to do so soon if you guys are
interested
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---