TINKERPOP-1565 Reverted GraphSON 3.0 changes These changes were part of the original work on this branch to alter the structure of GraphSON 2.0. I'd migrated those changes to 3.0 to avoid breaking change. Since that time there has been a lot of work on and off this branch related to this work and it seems that including GraphSON 3.0 changes to format is just complicating this ticket. As such the ticket itself has been modified to just be about setting up for GraphSON 3.0 and at this point 3.0 is equivalent to 2.0.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/99a27038 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/99a27038 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/99a27038 Branch: refs/heads/TINKERPOP-1612 Commit: 99a2703806705d896a7eb0eb88b940a82aac9d73 Parents: aec7fd1 Author: Stephen Mallette <sp...@genoprime.com> Authored: Thu Jan 19 15:10:20 2017 -0500 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Thu Jan 19 15:15:33 2017 -0500 ---------------------------------------------------------------------- .../io/graphson/GraphSONSerializersV3d0.java | 160 ++--- .../ser/GraphSONMessageSerializerV3d0.java | 11 +- .../gremlin_python/structure/io/graphson.py | 54 +- .../jython/tests/structure/io/test_graphson.py | 14 +- .../gremlin/python/jsr223/PythonProvider.java | 1 + .../server/GremlinServerHttpIntegrateTest.java | 2 +- .../gremlin/structure/io/IoPropertyTest.java | 12 - .../structure/io/graphson/_3_3_0/edge-v3d0.json | 10 +- .../structure/io/graphson/_3_3_0/path-v3d0.json | 148 +++-- .../io/graphson/_3_3_0/tinkergraph-v3d0.json | 582 ++++++++++++------- .../io/graphson/_3_3_0/traverser-v3d0.json | 120 ++-- .../structure/io/graphson/_3_3_0/tree-v3d0.json | 148 +++-- .../io/graphson/_3_3_0/vertex-v3d0.json | 120 ++-- .../io/graphson/_3_3_0/vertexproperty-v3d0.json | 4 - 14 files changed, 777 insertions(+), 609 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3d0.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3d0.java index 165e7e1..b62094e 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3d0.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3d0.java @@ -64,6 +64,8 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; +import static org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONUtil.safeWriteObjectField; + /** * GraphSON serializers for graph-based objects such as vertices, edges, properties, and paths. These serializers * present a generalized way to serialize the implementations of core interfaces. @@ -100,34 +102,22 @@ class GraphSONSerializersV3d0 { } private void writeProperties(final Vertex vertex, final JsonGenerator jsonGenerator) throws IOException { - if (vertex.keys().isEmpty()) + if (vertex.keys().size() == 0) return; jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES); jsonGenerator.writeStartObject(); final List<String> keys = normalize ? IteratorUtils.list(vertex.keys().iterator(), Comparator.naturalOrder()) : new ArrayList<>(vertex.keys()); - for (final String key : keys) { + for (String key : keys) { final Iterator<VertexProperty<Object>> vertexProperties = normalize ? IteratorUtils.list(vertex.properties(key), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties(key); if (vertexProperties.hasNext()) { jsonGenerator.writeFieldName(key); + jsonGenerator.writeStartArray(); while (vertexProperties.hasNext()) { - final VertexProperty<?> vertexProperty = vertexProperties.next(); - jsonGenerator.writeStartObject(); - jsonGenerator.writeObjectField(GraphSONTokens.ID, vertexProperty.id()); - jsonGenerator.writeObjectField(GraphSONTokens.VALUE, vertexProperty.value()); - if (!vertexProperty.keys().isEmpty()) { - jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES); - final Iterator<Property<?>> properties = (Iterator) vertexProperty.properties(); - while (properties.hasNext()) { - final Property<?> property = properties.next(); - jsonGenerator.writeObjectField(property.key(), property.value()); - } - jsonGenerator.writeEndObject(); - } - jsonGenerator.writeEndObject(); + jsonGenerator.writeObject(vertexProperties.next()); } jsonGenerator.writeEndArray(); } @@ -164,15 +154,13 @@ class GraphSONSerializersV3d0 { } private void writeProperties(final Edge edge, final JsonGenerator jsonGenerator) throws IOException { - final Iterator<Property<Object>> edgeProperties = normalize ? + final Iterator<Property<Object>> elementProperties = normalize ? IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties(); - if (edgeProperties.hasNext()) { + if (elementProperties.hasNext()) { jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES); + jsonGenerator.writeStartObject(); - while (edgeProperties.hasNext()) { - final Property<?> property = edgeProperties.next(); - jsonGenerator.writeObjectField(property.key(), property.value()); - } + elementProperties.forEachRemaining(prop -> safeWriteObjectField(jsonGenerator, prop.key(), prop)); jsonGenerator.writeEndObject(); } } @@ -188,25 +176,8 @@ class GraphSONSerializersV3d0 { public void serialize(final Property property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException { jsonGenerator.writeStartObject(); - jsonGenerator.writeStringField(GraphSONTokens.KEY, property.key()); + jsonGenerator.writeObjectField(GraphSONTokens.KEY, property.key()); jsonGenerator.writeObjectField(GraphSONTokens.VALUE, property.value()); - if (property.element() instanceof VertexProperty) { - VertexProperty vertexProperty = (VertexProperty) property.element(); - jsonGenerator.writeObjectFieldStart(GraphSONTokens.VERTEX_PROPERTY); - jsonGenerator.writeObjectField(GraphSONTokens.ID, vertexProperty.id()); - jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertexProperty.label()); - jsonGenerator.writeObjectField(GraphSONTokens.VALUE, vertexProperty.value()); - jsonGenerator.writeObjectField(GraphSONTokens.VERTEX, vertexProperty.element().id()); - jsonGenerator.writeEndObject(); - } else if (property.element() instanceof Edge) { - Edge edge = (Edge) property.element(); - jsonGenerator.writeObjectFieldStart(GraphSONTokens.EDGE); - jsonGenerator.writeObjectField(GraphSONTokens.ID, edge.id()); - jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label()); - jsonGenerator.writeObjectField(GraphSONTokens.IN, edge.inVertex().id()); - jsonGenerator.writeObjectField(GraphSONTokens.OUT, edge.outVertex().id()); - jsonGenerator.writeEndObject(); - } jsonGenerator.writeEndObject(); } } @@ -223,46 +194,44 @@ class GraphSONSerializersV3d0 { } @Override - public void serialize(final VertexProperty vertexProperty, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) + public void serialize(final VertexProperty property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException { jsonGenerator.writeStartObject(); - jsonGenerator.writeObjectField(GraphSONTokens.ID, vertexProperty.id()); - jsonGenerator.writeObjectField(GraphSONTokens.VALUE, vertexProperty.value()); - if (null != vertexProperty.element()) - jsonGenerator.writeObjectField(GraphSONTokens.VERTEX, vertexProperty.element().id()); - if (this.includeLabel) - jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertexProperty.label()); - tryWriteMetaProperties(vertexProperty, jsonGenerator, normalize); + jsonGenerator.writeObjectField(GraphSONTokens.ID, property.id()); + jsonGenerator.writeObjectField(GraphSONTokens.VALUE, property.value()); + if (includeLabel) + jsonGenerator.writeStringField(GraphSONTokens.LABEL, property.label()); + tryWriteMetaProperties(property, jsonGenerator, normalize); jsonGenerator.writeEndObject(); } - private static void tryWriteMetaProperties(final VertexProperty vertexProperty, final JsonGenerator jsonGenerator, + private static void tryWriteMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator, final boolean normalize) throws IOException { // when "detached" you can't check features of the graph it detached from so it has to be // treated differently from a regular VertexProperty implementation. - if (vertexProperty instanceof DetachedVertexProperty) { + if (property instanceof DetachedVertexProperty) { // only write meta properties key if they exist - if (vertexProperty.properties().hasNext()) { - writeMetaProperties(vertexProperty, jsonGenerator, normalize); + if (property.properties().hasNext()) { + writeMetaProperties(property, jsonGenerator, normalize); } } else { // still attached - so we can check the features to see if it's worth even trying to write the // meta properties key - if (vertexProperty.graph().features().vertex().supportsMetaProperties() && vertexProperty.properties().hasNext()) { - writeMetaProperties(vertexProperty, jsonGenerator, normalize); + if (property.graph().features().vertex().supportsMetaProperties() && property.properties().hasNext()) { + writeMetaProperties(property, jsonGenerator, normalize); } } } - private static void writeMetaProperties(final VertexProperty vertexProperty, final JsonGenerator jsonGenerator, + private static void writeMetaProperties(final VertexProperty property, final JsonGenerator jsonGenerator, final boolean normalize) throws IOException { jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES); jsonGenerator.writeStartObject(); final Iterator<Property<Object>> metaProperties = normalize ? - IteratorUtils.list((Iterator<Property<Object>>) vertexProperty.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : vertexProperty.properties(); + IteratorUtils.list((Iterator<Property<Object>>) property.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : property.properties(); while (metaProperties.hasNext()) { final Property<Object> metaProperty = metaProperties.next(); jsonGenerator.writeObjectField(metaProperty.key(), metaProperty.value()); @@ -358,7 +327,7 @@ class GraphSONSerializersV3d0 { @Override public void serialize(final Integer integer, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeNumber(integer.intValue()); + jsonGenerator.writeNumber(((Integer) integer).intValue()); } } @@ -459,7 +428,7 @@ class GraphSONSerializersV3d0 { public Vertex createObject(final Map<String, Object> vertexData) { return new DetachedVertex( vertexData.get(GraphSONTokens.ID), - (String) vertexData.getOrDefault(GraphSONTokens.LABEL, Vertex.DEFAULT_LABEL), + vertexData.get(GraphSONTokens.LABEL).toString(), (Map<String, Object>) vertexData.get(GraphSONTokens.PROPERTIES) ); } @@ -475,10 +444,10 @@ class GraphSONSerializersV3d0 { public Edge createObject(final Map<String, Object> edgeData) { return new DetachedEdge( edgeData.get(GraphSONTokens.ID), - (String) edgeData.getOrDefault(GraphSONTokens.LABEL, Edge.DEFAULT_LABEL), - (Map<String, Object>) edgeData.get(GraphSONTokens.PROPERTIES), - Pair.with(edgeData.get(GraphSONTokens.OUT), (String) edgeData.getOrDefault(GraphSONTokens.OUT_LABEL, Vertex.DEFAULT_LABEL)), - Pair.with(edgeData.get(GraphSONTokens.IN), (String) edgeData.getOrDefault(GraphSONTokens.IN_LABEL, Vertex.DEFAULT_LABEL)) + edgeData.get(GraphSONTokens.LABEL).toString(), + (Map) edgeData.get(GraphSONTokens.PROPERTIES), + Pair.with(edgeData.get(GraphSONTokens.OUT), edgeData.get(GraphSONTokens.OUT_LABEL).toString()), + Pair.with(edgeData.get(GraphSONTokens.IN), edgeData.get(GraphSONTokens.IN_LABEL).toString()) ); } } @@ -491,41 +460,9 @@ class GraphSONSerializersV3d0 { @Override public Property createObject(final Map<String, Object> propData) { - Element element = null; - if (propData.containsKey(GraphSONTokens.VERTEX_PROPERTY)) { - final Map<String, Object> elementData = (Map<String, Object>) propData.get(GraphSONTokens.VERTEX_PROPERTY); - element = new VertexPropertyJacksonDeserializer().createObject(elementData); - } else if (propData.containsKey(GraphSONTokens.EDGE)) { - final Map<String, Object> elementData = (Map<String, Object>) propData.get(GraphSONTokens.EDGE); - element = new EdgeJacksonDeserializer().createObject(elementData); - } - return null != 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) : - 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)) : - new DetachedVertexProperty<>( - propData.get(GraphSONTokens.ID), - (String) propData.get(GraphSONTokens.LABEL), - propData.get(GraphSONTokens.VALUE), - (Map<String, Object>) propData.get(GraphSONTokens.PROPERTIES)); - + return new DetachedProperty( + (String) propData.get(GraphSONTokens.KEY), + propData.get(GraphSONTokens.VALUE)); } } @@ -549,6 +486,23 @@ class GraphSONSerializersV3d0 { } } + static class VertexPropertyJacksonDeserializer extends AbstractObjectDeserializer<VertexProperty> { + + protected VertexPropertyJacksonDeserializer() { + super(VertexProperty.class); + } + + @Override + public VertexProperty createObject(final Map<String, Object> propData) { + return new DetachedVertexProperty( + propData.get(GraphSONTokens.ID), + (String) propData.get(GraphSONTokens.LABEL), + propData.get(GraphSONTokens.VALUE), + (Map) propData.get(GraphSONTokens.PROPERTIES) + ); + } + } + static class MetricsJacksonDeserializer extends AbstractObjectDeserializer<Metrics> { public MetricsJacksonDeserializer() { super(Metrics.class); @@ -556,16 +510,16 @@ class GraphSONSerializersV3d0 { @Override public Metrics createObject(final Map<String, Object> metricsData) { - final MutableMetrics m = new MutableMetrics((String) metricsData.get(GraphSONTokens.ID), (String) metricsData.get(GraphSONTokens.NAME)); + 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, Collections.emptyMap())).entrySet()) { + for (Map.Entry<String, Long> count : ((Map<String, Long>)metricsData.getOrDefault(GraphSONTokens.COUNTS, new HashMap<>(0))).entrySet()) { m.setCount(count.getKey(), count.getValue()); } - for (Map.Entry<String, Long> count : ((Map<String, Long>) metricsData.getOrDefault(GraphSONTokens.ANNOTATIONS, Collections.emptyMap())).entrySet()) { + for (Map.Entry<String, Long> count : ((Map<String, Long>) metricsData.getOrDefault(GraphSONTokens.ANNOTATIONS, new HashMap<>(0))).entrySet()) { m.setAnnotation(count.getKey(), count.getValue()); } - for (MutableMetrics nested : (List<MutableMetrics>) metricsData.getOrDefault(GraphSONTokens.METRICS, Collections.emptyList())) { + for (MutableMetrics nested : (List<MutableMetrics>)metricsData.getOrDefault(GraphSONTokens.METRICS, new ArrayList<>(0))) { m.addNested(nested); } return m; @@ -627,6 +581,4 @@ class GraphSONSerializersV3d0 { return jsonParser.getDoubleValue(); } } -} - - +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java ---------------------------------------------------------------------- diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java index d1c9e46..46e5c3a 100644 --- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java +++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV3d0.java @@ -76,16 +76,7 @@ public final class GraphSONMessageSerializerV3d0 extends AbstractGraphSONMessage @Override public ResponseMessage deserializeResponse(final String msg) throws SerializationException { try { - final Map<String, Object> responseData = mapper.readValue(msg, mapTypeReference); - final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS); - final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT); - return ResponseMessage.build(UUID.fromString(responseData.get(SerTokens.TOKEN_REQUEST).toString())) - .code(ResponseStatusCode.getFromValue((Integer) status.get(SerTokens.TOKEN_CODE))) - .statusMessage(status.get(SerTokens.TOKEN_MESSAGE).toString()) - .statusAttributes((Map<String, Object>) status.get(SerTokens.TOKEN_ATTRIBUTES)) - .result(result.get(SerTokens.TOKEN_DATA)) - .responseMetaData((Map<String, Object>) result.get(SerTokens.TOKEN_META)) - .create(); + return mapper.readValue(msg, ResponseMessage.class); } catch (Exception ex) { logger.warn("Response [{}] could not be deserialized by {}.", msg, AbstractGraphSONMessageSerializerV2d0.class.getName()); throw new SerializationException(ex); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py index 8795ff1..54faf56 100644 --- a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py +++ b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py @@ -208,26 +208,20 @@ class PropertySerializer(_GraphSONTypeIO): @classmethod def dictify(cls, property, writer): - element = property.element - elementDict = {} - if element is not None: - elementDict["id"] = element.id - elementDict["label"] = element.label - if isinstance(element, VertexProperty): - elementDict["value"] = element.value - elementDict["vertex"] = element.vertex.id - return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key), - "value": writer.toDict(property.value), - "vertexProperty": writer.toDict(elementDict)}) - elif isinstance(element, Edge): - elementDict["outV"] = element.outV.id - elementDict["inV"] = element.inV.id - return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key), - "value": writer.toDict(property.value), - "edge": writer.toDict(elementDict)}) - else: - return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key), - "value": writer.toDict(property.value)}) + elementDict = writer.toDict(property.element) + if elementDict is not None: + valueDict = elementDict["@value"] + if "outVLabel" in valueDict: + del valueDict["outVLabel"] + if "inVLabel" in valueDict: + del valueDict["inVLabel"] + if "properties" in valueDict: + del valueDict["properties"] + if "value" in valueDict: + del valueDict["value"] + return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key), + "value": writer.toDict(property.value), + "element": writer.toDict(elementDict)}) class TraversalStrategySerializer(_GraphSONTypeIO): @@ -392,22 +386,8 @@ class PropertyDeserializer(_GraphSONTypeIO): @classmethod def objectify(cls, d, reader): - if "edge" in d: - edge = reader.toObject(d["edge"]) - return Property(d["key"], reader.toObject(d["value"]), - Edge(edge["id"], - Vertex(edge["outV"]), - edge["label"], - Vertex(edge["inV"]))) - elif "vertexProperty" in d: - vertex_property = reader.toObject(d["vertexProperty"]) - return Property(d["key"], reader.toObject(d["value"]), - VertexProperty(vertex_property["id"], - vertex_property["label"], - vertex_property["value"], - Vertex(vertex_property["vertex"]))) - else: - return Property(d["key"], reader.toObject(d["value"]), None) + element = reader.toObject(d["element"]) if "element" in d else None + return Property(d["key"], reader.toObject(d["value"]), element) class PathDeserializer(_GraphSONTypeIO): @@ -417,4 +397,4 @@ class PathDeserializer(_GraphSONTypeIO): def objectify(cls, d, reader): labels = [set(label) for label in d["labels"]] objects = [reader.toObject(o) for o in d["objects"]] - return Path(labels, objects) + return Path(labels, objects) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py b/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py index 7e034c9..e8aa572 100644 --- a/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py +++ b/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py @@ -111,7 +111,7 @@ class TestGraphSONReader(TestCase): assert edge.outV == Vertex("y", "vertex") ## property = self.graphson_reader.readObject(""" - {"@type":"g:Property", "@value":{"key":"aKey","value":{"@type":"g:Int64","@value":17},"edge":{"id":{"@type":"g:Int64","@value":122},"label":"knows","inV":"x","outV":"y"}}}""") + {"@type":"g:Property", "@value":{"key":"aKey","value":{"@type":"g:Int64","@value":17},"element":{"@type":"g:Edge","@value":{"id":{"@type":"g:Int64","@value":122},"label":"knows","inV":"x","outV":"y","inVLabel":"xLab"}}}}""") # print property assert isinstance(property, Property) assert "aKey" == property.key @@ -208,11 +208,11 @@ class TestGraphSONWriter(TestCase): self.graphson_writer.writeObject(VertexProperty("blah", "keyA", True, Vertex("stephen")))) assert {"@type": "g:Property", - "@value": {"key": "name", "value": "marko", "vertexProperty": { - "vertex": "vertexId", - "id": "anId", - "label": "aKey", - "value": {"@type": "g:Int32", "@value": 21345}}}} == json.loads( + "@value": {"key": "name", "value": "marko", "element": {"@type": "g:VertexProperty", + "@value": { + "vertex": "vertexId", + "id": "anId", + "label": "aKey"}}}} == json.loads( self.graphson_writer.writeObject( Property("name", "marko", VertexProperty("anId", "aKey", 21345, Vertex("vertexId"))))) @@ -255,4 +255,4 @@ class TestGraphSONWriter(TestCase): if __name__ == '__main__': - unittest.main() + unittest.main() \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java index 605539d..44d65fa 100644 --- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java +++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java @@ -66,6 +66,7 @@ public class PythonProvider extends AbstractGraphProvider { "g_VX1X_out_injectXv2X_name", "shouldHidePartitionKeyForValues", "g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack", + "g_injectXg_VX1X_propertiesXnameX_nextX_value", // ProgramTest.Traversals.class.getCanonicalName(), TraversalInterruptionTest.class.getCanonicalName(), http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java ---------------------------------------------------------------------- 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 ba9aba8..4192a6c 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 @@ -379,7 +379,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra assertEquals("application/json", response.getEntity().getContentType().getValue()); final String json = EntityUtils.toString(response.getEntity()); final JsonNode node = mapper.readTree(json); - assertEquals("stephen", node.get("result").get("data").get(0).get(GraphSONTokens.VALUEPROP).get("properties").get("name").get(0).get(GraphSONTokens.VALUE).asText()); + assertEquals("stephen", node.get("result").get("data").get(0).get(GraphSONTokens.VALUEPROP).get("properties").get("name").get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.VALUE).asText()); } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java index ecde126..d16339f 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoPropertyTest.java @@ -106,10 +106,6 @@ public class IoPropertyTest extends AbstractGremlinTest { assertEquals(IteratorUtils.count(p.properties()), IteratorUtils.count(propertyAttachable.get().properties())); assertEquals(p.property("startTime").value(), ((Property) propertyAttachable.get().properties("startTime").next()).value()); assertEquals(p.property("endTime").value(), ((Property) propertyAttachable.get().properties("endTime").next()).value()); - if (ioType.equals("graphson-v3")) { // TODO: make this work with Gryo - assertEquals(p, propertyAttachable.get()); - assertEquals(p.element(), propertyAttachable.get().element()); - } called.set(true); return propertyAttachable.get(); }); @@ -134,10 +130,6 @@ public class IoPropertyTest extends AbstractGremlinTest { assertEquals(p.value(), propertyAttachable.get().value()); assertEquals(p.key(), propertyAttachable.get().key()); assertEquals(0, IteratorUtils.count(propertyAttachable.get().properties())); - if (ioType.equals("graphson-v3")) { // TODO: make this work with Gryo - assertEquals(p, propertyAttachable.get()); - assertEquals(p.element(), propertyAttachable.get().element()); - } called.set(true); return propertyAttachable.get(); }); @@ -161,10 +153,6 @@ public class IoPropertyTest extends AbstractGremlinTest { reader.readProperty(bais, propertyAttachable -> { assertEquals(p.value(), propertyAttachable.get().value()); assertEquals(p.key(), propertyAttachable.get().key()); - if (ioType.equals("graphson-v3")) { // TODO: make this work with Gryo - assertEquals(p, propertyAttachable.get()); - assertEquals(p.element(), propertyAttachable.get().element()); - } called.set(true); return propertyAttachable.get(); }); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/edge-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/edge-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/edge-v3d0.json index 4c396f8..ba1c52e 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/edge-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/edge-v3d0.json @@ -18,8 +18,14 @@ }, "properties" : { "since" : { - "@type" : "g:Int32", - "@value" : 2009 + "@type" : "g:Property", + "@value" : { + "key" : "since", + "value" : { + "@type" : "g:Int32", + "@value" : 2009 + } + } } } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/path-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/path-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/path-v3d0.json index 8a41507..54ff76d 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/path-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/path-v3d0.json @@ -12,70 +12,90 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 0 - }, - "value" : "marko" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 0 + }, + "value" : "marko", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 6 - }, - "value" : "san diego", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1997 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 6 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "value" : "san diego", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1997 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2001 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 7 - }, - "value" : "santa cruz", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 7 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "value" : "santa cruz", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2001 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2004 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 8 - }, - "value" : "brussels", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 8 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "value" : "brussels", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2004 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 9 - }, - "value" : "santa fe", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 9 + }, + "value" : "santa fe", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } } ] @@ -91,11 +111,15 @@ "label" : "software", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 4 - }, - "value" : "gremlin" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 4 + }, + "value" : "gremlin", + "label" : "name" + } } ] } } @@ -109,11 +133,15 @@ "label" : "software", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 5 - }, - "value" : "tinkergraph" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 5 + }, + "value" : "tinkergraph", + "label" : "name" + } } ] } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tinkergraph-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tinkergraph-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tinkergraph-v3d0.json index a97c8c1..24e95ed 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tinkergraph-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tinkergraph-v3d0.json @@ -11,70 +11,90 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 0 - }, - "value" : "marko" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 0 + }, + "value" : "marko", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 6 - }, - "value" : "san diego", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1997 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 6 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "value" : "san diego", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1997 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2001 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 7 - }, - "value" : "santa cruz", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 7 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "value" : "santa cruz", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2001 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2004 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 8 - }, - "value" : "brussels", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 8 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "value" : "brussels", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2004 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 9 - }, - "value" : "santa fe", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 9 + }, + "value" : "santa fe", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } } ] @@ -90,54 +110,70 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 1 - }, - "value" : "stephen" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 1 + }, + "value" : "stephen", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 10 - }, - "value" : "centreville", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1990 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 10 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2000 + "value" : "centreville", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1990 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2000 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 11 - }, - "value" : "dulles", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2000 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 11 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2006 + "value" : "dulles", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2000 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2006 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 12 - }, - "value" : "purcellville", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2006 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 12 + }, + "value" : "purcellville", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2006 + } } } } ] @@ -153,70 +189,90 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 2 - }, - "value" : "matthias" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 2 + }, + "value" : "matthias", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 13 - }, - "value" : "bremen", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 13 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2007 + "value" : "bremen", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2004 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2007 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 14 - }, - "value" : "baltimore", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2007 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 14 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2011 + "value" : "baltimore", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2007 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2011 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 15 - }, - "value" : "oakland", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2011 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 15 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2014 + "value" : "oakland", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2011 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2014 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 16 - }, - "value" : "seattle", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2014 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 16 + }, + "value" : "seattle", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2014 + } } } } ] @@ -232,54 +288,70 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 3 - }, - "value" : "daniel" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 3 + }, + "value" : "daniel", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 17 - }, - "value" : "spremberg", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1982 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 17 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "value" : "spremberg", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1982 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 18 - }, - "value" : "kaiserslautern", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 18 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2009 + "value" : "kaiserslautern", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2005 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2009 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 19 - }, - "value" : "aachen", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2009 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 19 + }, + "value" : "aachen", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2009 + } } } } ] @@ -295,11 +367,15 @@ "label" : "software", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 4 - }, - "value" : "gremlin" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 4 + }, + "value" : "gremlin", + "label" : "name" + } } ] } } @@ -313,11 +389,15 @@ "label" : "software", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 5 - }, - "value" : "tinkergraph" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 5 + }, + "value" : "tinkergraph", + "label" : "name" + } } ] } } @@ -342,8 +422,14 @@ }, "properties" : { "since" : { - "@type" : "g:Int32", - "@value" : 2009 + "@type" : "g:Property", + "@value" : { + "key" : "since", + "value" : { + "@type" : "g:Int32", + "@value" : 2009 + } + } } } } @@ -367,8 +453,14 @@ }, "properties" : { "since" : { - "@type" : "g:Int32", - "@value" : 2010 + "@type" : "g:Property", + "@value" : { + "key" : "since", + "value" : { + "@type" : "g:Int32", + "@value" : 2010 + } + } } } } @@ -392,8 +484,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 4 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 4 + } + } } } } @@ -417,8 +515,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 5 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 5 + } + } } } } @@ -442,8 +546,14 @@ }, "properties" : { "since" : { - "@type" : "g:Int32", - "@value" : 2010 + "@type" : "g:Property", + "@value" : { + "key" : "since", + "value" : { + "@type" : "g:Int32", + "@value" : 2010 + } + } } } } @@ -467,8 +577,14 @@ }, "properties" : { "since" : { - "@type" : "g:Int32", - "@value" : 2011 + "@type" : "g:Property", + "@value" : { + "key" : "since", + "value" : { + "@type" : "g:Int32", + "@value" : 2011 + } + } } } } @@ -492,8 +608,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 5 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 5 + } + } } } } @@ -517,8 +639,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 4 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 4 + } + } } } } @@ -542,8 +670,14 @@ }, "properties" : { "since" : { - "@type" : "g:Int32", - "@value" : 2012 + "@type" : "g:Property", + "@value" : { + "key" : "since", + "value" : { + "@type" : "g:Int32", + "@value" : 2012 + } + } } } } @@ -567,8 +701,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 3 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 3 + } + } } } } @@ -592,8 +732,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 3 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 3 + } + } } } } @@ -617,8 +763,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 5 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 5 + } + } } } } @@ -642,8 +794,14 @@ }, "properties" : { "skill" : { - "@type" : "g:Int32", - "@value" : 3 + "@type" : "g:Property", + "@value" : { + "key" : "skill", + "value" : { + "@type" : "g:Int32", + "@value" : 3 + } + } } } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/traverser-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/traverser-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/traverser-v3d0.json index 1e6a2ce..a59a29e 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/traverser-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/traverser-v3d0.json @@ -15,70 +15,90 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 0 - }, - "value" : "marko" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 0 + }, + "value" : "marko", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 6 - }, - "value" : "san diego", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1997 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 6 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "value" : "san diego", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1997 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2001 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 7 - }, - "value" : "santa cruz", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 7 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "value" : "santa cruz", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2001 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2004 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 8 - }, - "value" : "brussels", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 8 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "value" : "brussels", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2004 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 9 - }, - "value" : "santa fe", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 9 + }, + "value" : "santa fe", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } } ] http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tree-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tree-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tree-v3d0.json index 8868929..74dcffc 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tree-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/tree-v3d0.json @@ -11,70 +11,90 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 0 - }, - "value" : "marko" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 0 + }, + "value" : "marko", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 6 - }, - "value" : "san diego", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1997 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 6 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "value" : "san diego", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1997 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2001 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 7 - }, - "value" : "santa cruz", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 7 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "value" : "santa cruz", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2001 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2004 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 8 - }, - "value" : "brussels", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 8 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "value" : "brussels", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2004 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 9 - }, - "value" : "santa fe", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 9 + }, + "value" : "santa fe", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } } ] @@ -94,11 +114,15 @@ "label" : "software", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 4 - }, - "value" : "gremlin" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 4 + }, + "value" : "gremlin", + "label" : "name" + } } ] } } @@ -116,11 +140,15 @@ "label" : "software", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 5 - }, - "value" : "tinkergraph" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 5 + }, + "value" : "tinkergraph", + "label" : "name" + } } ] } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertex-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertex-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertex-v3d0.json index 86f305d..f102230 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertex-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertex-v3d0.json @@ -8,70 +8,90 @@ "label" : "person", "properties" : { "name" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 0 - }, - "value" : "marko" + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 0 + }, + "value" : "marko", + "label" : "name" + } } ], "location" : [ { - "id" : { - "@type" : "g:Int64", - "@value" : 6 - }, - "value" : "san diego", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 1997 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 6 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "value" : "san diego", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 1997 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2001 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 7 - }, - "value" : "santa cruz", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2001 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 7 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "value" : "santa cruz", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2001 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2004 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 8 - }, - "value" : "brussels", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2004 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 8 }, - "endTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "value" : "brussels", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2004 + }, + "endTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } }, { - "id" : { - "@type" : "g:Int64", - "@value" : 9 - }, - "value" : "santa fe", - "properties" : { - "startTime" : { - "@type" : "g:Int32", - "@value" : 2005 + "@type" : "g:VertexProperty", + "@value" : { + "id" : { + "@type" : "g:Int64", + "@value" : 9 + }, + "value" : "santa fe", + "label" : "location", + "properties" : { + "startTime" : { + "@type" : "g:Int32", + "@value" : 2005 + } } } } ] http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99a27038/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertexproperty-v3d0.json ---------------------------------------------------------------------- diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertexproperty-v3d0.json b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertexproperty-v3d0.json index 0319bd1..af184b1 100644 --- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertexproperty-v3d0.json +++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/_3_3_0/vertexproperty-v3d0.json @@ -6,10 +6,6 @@ "@value" : 0 }, "value" : "marko", - "vertex" : { - "@type" : "g:Int32", - "@value" : 1 - }, "label" : "name" } } \ No newline at end of file