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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to