This is an automated email from the ASF dual-hosted git repository.
kenhuuu pushed a commit to branch master-http
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master-http by this push:
new f0e973d710 Merge pull request #2790
f0e973d710 is described below
commit f0e973d710828b248dc7d425b59bafeef6ebeabd
Author: kenhuuu <[email protected]>
AuthorDate: Thu Oct 3 14:52:22 2024 -0700
Merge pull request #2790
---
.../io/graphson/GraphSONSerializersV4.java | 83 ++++++---
.../structure/io/graphson/GraphSONXModuleV4.java | 4 +-
.../graphson/GraphSONMapperEmbeddedTypeTest.java | 25 ++-
.../GraphSONMapperPartialEmbeddedTypeTest.java | 6 +-
.../structure/io/graphson/GraphSONMapperTest.java | 24 ++-
.../server/GremlinServerHttpIntegrateTest.java | 4 +-
.../structure/io/graphson/bulked-traverser-v4.json | 5 +-
.../structure/io/graphson/empty-binary-v4.json | 2 +-
.../structure/io/graphson/forever-duration-v4.json | 2 +-
.../gremlin/structure/io/graphson/max-byte-v4.json | 2 +-
.../io/graphson/max-offsetdatetime-v4.json | 2 +-
.../structure/io/graphson/max-short-v4.json | 2 +-
.../io/graphson/meta-vertexproperty-v4.json | 2 +-
.../gremlin/structure/io/graphson/min-byte-v4.json | 2 +-
.../io/graphson/min-offsetdatetime-v4.json | 2 +-
.../structure/io/graphson/min-short-v4.json | 2 +-
.../structure/io/graphson/multi-byte-char-v4.json | 2 +-
.../structure/io/graphson/neg-bigdecimal-v4.json | 2 +-
.../structure/io/graphson/neg-biginteger-v4.json | 2 +-
.../structure/io/graphson/no-prop-edge-v4.json | 9 +-
.../structure/io/graphson/no-prop-vertex-v4.json | 3 +-
.../structure/io/graphson/pos-bigdecimal-v4.json | 2 +-
.../structure/io/graphson/pos-biginteger-v4.json | 2 +-
.../structure/io/graphson/prop-path-v4.json | 23 +--
.../set-cardinality-vertexproperty-v4.json | 2 +-
.../structure/io/graphson/single-byte-char-v4.json | 2 +-
.../structure/io/graphson/str-binary-v4.json | 2 +-
.../structure/io/graphson/tinker-graph-v4.json | 199 +++++++++++----------
.../io/graphson/traversal-edge-v4-no-types.json | 8 +-
.../structure/io/graphson/traversal-edge-v4.json | 10 +-
.../io/graphson/traversal-path-v4-no-types.json | 15 +-
.../structure/io/graphson/traversal-path-v4.json | 9 +-
.../structure/io/graphson/traversal-tree-v4.json | 10 +-
.../io/graphson/traversal-vertex-v4-no-types.json | 5 +-
.../structure/io/graphson/traversal-vertex-v4.json | 13 +-
.../traversal-vertexproperty-v4-no-types.json | 3 +-
.../io/graphson/traversal-vertexproperty-v4.json | 3 +-
.../structure/io/graphson/vertex-traverser-v4.json | 13 +-
.../structure/io/graphson/zero-duration-v4.json | 2 +-
.../io/AbstractUntypedCompatibilityTest.java | 39 ++--
.../tinkergraph/structure/TinkerIoRegistryV4.java | 2 +-
41 files changed, 320 insertions(+), 231 deletions(-)
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 a673305a61..51af208b14 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
@@ -69,8 +69,6 @@ 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.
@@ -101,7 +99,7 @@ class GraphSONSerializersV4 {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField(GraphSONTokens.ID, vertex.id());
- jsonGenerator.writeStringField(GraphSONTokens.LABEL,
vertex.label());
+ writeLabel(jsonGenerator, GraphSONTokens.LABEL, vertex.label());
writeTypeForGraphObjectIfUntyped(jsonGenerator, typeInfo,
GraphSONTokens.VERTEX);
writeProperties(vertex, jsonGenerator, serializerProvider);
@@ -110,8 +108,6 @@ class GraphSONSerializersV4 {
}
private void writeProperties(final Vertex vertex, final JsonGenerator
jsonGenerator, final SerializerProvider serializerProvider) throws IOException {
- if (vertex.keys().size() == 0)
- return;
jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
jsonGenerator.writeStartObject();
@@ -161,10 +157,10 @@ class GraphSONSerializersV4 {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField(GraphSONTokens.ID, edge.id());
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
+ writeLabel(jsonGenerator, GraphSONTokens.LABEL, edge.label());
writeTypeForGraphObjectIfUntyped(jsonGenerator, typeInfo,
GraphSONTokens.EDGE);
- jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL,
edge.inVertex().label());
- jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL,
edge.outVertex().label());
+ writeLabel(jsonGenerator, GraphSONTokens.IN_LABEL,
edge.inVertex().label());
+ writeLabel(jsonGenerator, GraphSONTokens.OUT_LABEL,
edge.outVertex().label());
jsonGenerator.writeObjectField(GraphSONTokens.IN,
edge.inVertex().id());
jsonGenerator.writeObjectField(GraphSONTokens.OUT,
edge.outVertex().id());
writeProperties(edge, jsonGenerator);
@@ -175,16 +171,24 @@ class GraphSONSerializersV4 {
private void writeProperties(final Edge edge, final JsonGenerator
jsonGenerator) throws IOException {
final Iterator<Property<Object>> elementProperties = normalize ?
IteratorUtils.list(edge.properties(),
Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
- if (elementProperties.hasNext()) {
- jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
- jsonGenerator.writeStartObject();
- if (typeInfo == TypeInfo.NO_TYPES)
- elementProperties.forEachRemaining(prop ->
safeWriteObjectField(jsonGenerator, prop.key(), prop.value()));
- else
- elementProperties.forEachRemaining(prop ->
safeWriteObjectField(jsonGenerator, prop.key(), prop));
- jsonGenerator.writeEndObject();
+ jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
+ jsonGenerator.writeStartObject();
+
+ while (elementProperties.hasNext()) {
+ final Property prop = elementProperties.next();
+ jsonGenerator.writeFieldName(prop.key());
+ jsonGenerator.writeStartArray();
+
+ if (typeInfo == TypeInfo.NO_TYPES) {
+ jsonGenerator.writeObject(prop.value());
+ } else {
+ jsonGenerator.writeObject(prop);
+ }
+
+ jsonGenerator.writeEndArray();
}
+ jsonGenerator.writeEndObject();
}
}
@@ -229,8 +233,9 @@ class GraphSONSerializersV4 {
jsonGenerator.writeObjectField(GraphSONTokens.ID, property.id());
jsonGenerator.writeObjectField(GraphSONTokens.VALUE,
property.value());
- if (includeLabel)
- jsonGenerator.writeStringField(GraphSONTokens.LABEL,
property.label());
+ if (includeLabel) {
+ writeLabel(jsonGenerator, GraphSONTokens.LABEL,
property.label());
+ }
tryWriteMetaProperties(property, jsonGenerator, normalize);
jsonGenerator.writeEndObject();
@@ -241,14 +246,11 @@ class GraphSONSerializersV4 {
// 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 (property instanceof DetachedVertexProperty) {
- // only write meta properties key if they exist
- if (property.properties().hasNext()) {
- writeMetaProperties(property, jsonGenerator, normalize);
- }
+ 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
(property.graph().features().vertex().supportsMetaProperties() &&
property.properties().hasNext()) {
+ if
(property.graph().features().vertex().supportsMetaProperties()) {
writeMetaProperties(property, jsonGenerator, normalize);
}
}
@@ -460,7 +462,9 @@ class GraphSONSerializersV4 {
v.setId(deserializationContext.readValue(jsonParser,
Object.class));
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.LABEL)) {
jsonParser.nextToken();
- v.setLabel(jsonParser.getText());
+ while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
+ v.setLabel(jsonParser.getText());
+ }
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.PROPERTIES)) {
jsonParser.nextToken();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
@@ -498,24 +502,32 @@ class GraphSONSerializersV4 {
e.setId(deserializationContext.readValue(jsonParser,
Object.class));
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.LABEL)) {
jsonParser.nextToken();
- e.setLabel(jsonParser.getText());
+ while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
+ e.setLabel(jsonParser.getText());
+ }
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.OUT)) {
jsonParser.nextToken();
outV.setId(deserializationContext.readValue(jsonParser,
Object.class));
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.OUT_LABEL)) {
jsonParser.nextToken();
- outV.setLabel(jsonParser.getText());
+ while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
+ outV.setLabel(jsonParser.getText());
+ }
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.IN)) {
jsonParser.nextToken();
inV.setId(deserializationContext.readValue(jsonParser,
Object.class));
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.IN_LABEL)) {
jsonParser.nextToken();
- inV.setLabel(jsonParser.getText());
+ while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
+ inV.setLabel(jsonParser.getText());
+ }
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.PROPERTIES)) {
jsonParser.nextToken();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
jsonParser.nextToken();
-
e.addProperty(deserializationContext.readValue(jsonParser, Property.class));
+ while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
+
e.addProperty(deserializationContext.readValue(jsonParser, Property.class));
+ }
}
}
}
@@ -614,7 +626,9 @@ class GraphSONSerializersV4 {
vp.setId(deserializationContext.readValue(jsonParser,
Object.class));
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.LABEL)) {
jsonParser.nextToken();
- vp.setLabel(jsonParser.getText());
+ while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
+ vp.setLabel(jsonParser.getText());
+ }
} else if
(jsonParser.getCurrentName().equals(GraphSONTokens.VALUE)) {
jsonParser.nextToken();
vp.setValue(deserializationContext.readValue(jsonParser,
Object.class));
@@ -793,4 +807,15 @@ class GraphSONSerializersV4 {
jsonGenerator.writeStringField(GraphSONTokens.TYPE, type);
}
}
+
+ /**
+ * Helper method for writing a label. Starting in v4, the label is an
array of String that is inside an object. Only
+ * writes the array portion; that is, it assumes the object has already
started.
+ */
+ private static void writeLabel(final JsonGenerator jsonGenerator, final
String labelName, final String labelValue) throws IOException {
+ jsonGenerator.writeFieldName(labelName);
+ jsonGenerator.writeStartArray();
+ jsonGenerator.writeString(labelValue);
+ jsonGenerator.writeEndArray();
+ }
}
\ No newline at end of file
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 94031b447d..2f9812c147 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
@@ -48,7 +48,7 @@ public final class GraphSONXModuleV4 extends GraphSONModule {
private static final Map<Class, String> TYPE_DEFINITIONS =
Collections.unmodifiableMap(
new LinkedHashMap<Class, String>() {{
- put(ByteBuffer.class, "ByteBuffer");
+ put(ByteBuffer.class, "Binary");
put(Short.class, "Int16");
put(BigInteger.class, "BigInteger");
put(BigDecimal.class, "BigDecimal");
@@ -124,7 +124,7 @@ public final class GraphSONXModuleV4 extends GraphSONModule
{
@Override
public String getTypeNamespace() {
- return GraphSONTokens.GREMLINX_TYPE_NAMESPACE;
+ return GraphSONTokens.GREMLIN_TYPE_NAMESPACE;
}
public static final class Builder implements GraphSONModuleBuilder {
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 391ffa9dbc..b6ae2dc189 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
@@ -340,7 +340,11 @@ public class GraphSONMapperEmbeddedTypeTest extends
AbstractGraphSONTest {
assumeThat(version, not(startsWith("v1")));
final BigInteger o = new
BigInteger("123456789987654321123456789987654321");
- assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigInteger\",
\"@value\": \"123456789987654321123456789987654321\"}", Object.class));
+ if (version.startsWith("v4")) {
+ assertEquals(o, mapper.readValue("{\"@type\": \"g:BigInteger\",
\"@value\": \"123456789987654321123456789987654321\"}", Object.class));
+ } else {
+ assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigInteger\",
\"@value\": \"123456789987654321123456789987654321\"}", Object.class));
+ }
}
@Test
@@ -352,7 +356,11 @@ public class GraphSONMapperEmbeddedTypeTest extends
AbstractGraphSONTest {
// enforces this approach but leaves open the opportunity to accept
either. at some point in the future
// perhaps it can switch fully - TINKERPOP-2156
final BigInteger o = new
BigInteger("123456789987654321123456789987654321");
- assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigInteger\",
\"@value\": 123456789987654321123456789987654321}", Object.class));
+ if (version.startsWith("v4")) {
+ assertEquals(o, mapper.readValue("{\"@type\": \"g:BigInteger\",
\"@value\": 123456789987654321123456789987654321}", Object.class));
+ } else {
+ assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigInteger\",
\"@value\": 123456789987654321123456789987654321}", Object.class));
+ }
}
@Test
@@ -426,7 +434,12 @@ public class GraphSONMapperEmbeddedTypeTest extends
AbstractGraphSONTest {
assumeThat(version, not(startsWith("v1")));
final BigDecimal o = new
BigDecimal("123456789987654321123456789987654321");
- assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigDecimal\",
\"@value\": \"123456789987654321123456789987654321\"}", Object.class));
+
+ if (version.startsWith("v4")) {
+ assertEquals(o, mapper.readValue("{\"@type\": \"g:BigDecimal\",
\"@value\": \"123456789987654321123456789987654321\"}", Object.class));
+ } else {
+ assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigDecimal\",
\"@value\": \"123456789987654321123456789987654321\"}", Object.class));
+ }
}
@Test
@@ -438,7 +451,11 @@ public class GraphSONMapperEmbeddedTypeTest extends
AbstractGraphSONTest {
// enforces this approach but leaves open the opportunity to accept
either. at some point in the future
// perhaps it can switch fully - TINKERPOP-2156
final BigDecimal o = new
BigDecimal("123456789987654321123456789987654321");
- assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigDecimal\",
\"@value\": 123456789987654321123456789987654321}", Object.class));
+ if (version.startsWith("v4")) {
+ assertEquals(o, mapper.readValue("{\"@type\": \"g:BigDecimal\",
\"@value\": 123456789987654321123456789987654321}", Object.class));
+ } else {
+ assertEquals(o, mapper.readValue("{\"@type\": \"gx:BigDecimal\",
\"@value\": 123456789987654321123456789987654321}", Object.class));
+ }
}
@Test
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 ebae7171ba..75331741d2 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
@@ -155,7 +155,11 @@ public class GraphSONMapperPartialEmbeddedTypeTest extends
AbstractGraphSONTest
mapper.readValue(inputStream, Instant.class);
fail("Should have failed decoding the value");
} catch (Exception e) {
- 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."));
+ 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."));
+ } 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."));
+ }
}
}
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 08beeb2ddb..d6931b9a1e 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
@@ -88,10 +88,12 @@ public class GraphSONMapperTest {
// v2 untyped seems to serialize the VertexProperty label. not
changing that since it's already been
// introduced a long while back. v3 dips back to v1 style - since it
has never existed prior to 3.7.0
// we can make this change
- if (version.startsWith("v1") || version.startsWith("v3") ||
version.startsWith("v4"))
+ if (version.startsWith("v1") || version.startsWith("v3"))
assertEquals("{\"id\":123,\"label\":\"person\",\"type\":\"vertex\",\"properties\":{\"name\":[{\"id\":1,\"value\":\"alice\"}],\"age\":[{\"id\":1,\"value\":\"31\"}]}}",
json);
else if (version.startsWith("v2"))
assertEquals("{\"id\":123,\"label\":\"person\",\"properties\":{\"name\":[{\"id\":1,\"value\":\"alice\",\"label\":\"name\"}],\"age\":[{\"id\":1,\"value\":\"31\",\"label\":\"age\"}]}}",
json);
+ else if (version.startsWith("v4"))
+
assertEquals("{\"id\":123,\"label\":[\"person\"],\"type\":\"vertex\",\"properties\":{\"name\":[{\"id\":1,\"value\":\"alice\",\"properties\":{}}],\"age\":[{\"id\":1,\"value\":\"31\",\"properties\":{}}]}}",
json);
else
throw new IllegalStateException("Version not accounted for in
asserts");
}
@@ -106,10 +108,12 @@ public class GraphSONMapperTest {
// v2 untyped seems to serialize the VertexProperty label. not
changing that since it's already been
// introduced a long while back. v3 dips back to v1 style - since it
has never existed prior to 3.7.0
// we can make this change
- if (version.startsWith("v1") || version.startsWith("v3") ||
version.startsWith("v4"))
+ if (version.startsWith("v1") || version.startsWith("v3"))
assertEquals("{\"id\":123,\"label\":\"knows\",\"type\":\"edge\",\"inVLabel\":\"person\",\"outVLabel\":\"person\",\"inV\":2,\"outV\":1,\"properties\":{\"weight\":0.5}}",
json);
else if (version.startsWith("v2"))
assertEquals("{\"id\":123,\"label\":\"knows\",\"inVLabel\":\"person\",\"outVLabel\":\"person\",\"inV\":2,\"outV\":1,\"properties\":{\"weight\":{\"key\":\"weight\",\"value\":0.5}}}",
json);
+ else if (version.startsWith("v4"))
+
assertEquals("{\"id\":123,\"label\":[\"knows\"],\"type\":\"edge\",\"inVLabel\":[\"person\"],\"outVLabel\":[\"person\"],\"inV\":2,\"outV\":1,\"properties\":{\"weight\":[0.5]}}",
json);
else
throw new IllegalStateException("Version not accounted for in
asserts");
}
@@ -129,7 +133,11 @@ public class GraphSONMapperTest {
put("current", true);
}}, v);
final String json = mapper.writeValueAsString(p);
-
assertEquals("{\"id\":123,\"value\":\"alice\",\"label\":\"name\",\"properties\":{\"current\":true}}",
json);
+ if (version.startsWith("v4")) {
+
assertEquals("{\"id\":123,\"value\":\"alice\",\"label\":[\"name\"],\"properties\":{\"current\":true}}",
json);
+ } else {
+
assertEquals("{\"id\":123,\"value\":\"alice\",\"label\":\"name\",\"properties\":{\"current\":true}}",
json);
+ }
}
@Test
@@ -137,7 +145,11 @@ public class GraphSONMapperTest {
final DetachedVertex v = new DetachedVertex(321L, "person",
Collections.emptyMap());
final VertexProperty p = new DetachedVertexProperty(123L, "name",
"alice", Collections.emptyMap(), v);
final String json = mapper.writeValueAsString(p);
- assertEquals("{\"id\":123,\"value\":\"alice\",\"label\":\"name\"}",
json);
+ if (version.startsWith("v4")) {
+
assertEquals("{\"id\":123,\"value\":\"alice\",\"label\":[\"name\"],\"properties\":{}}",
json);
+ } else {
+
assertEquals("{\"id\":123,\"value\":\"alice\",\"label\":\"name\"}", json);
+ }
}
@Test
@@ -150,8 +162,10 @@ public class GraphSONMapperTest {
extend("alice", new HashSet<>(Collections.singletonList("c")));
final String json = mapper.writeValueAsString(p);
- if (version.startsWith("v1") || version.startsWith("v3") ||
version.startsWith("v4"))
+ if (version.startsWith("v1") || version.startsWith("v3"))
assertEquals("{\"labels\":[[\"a\"],[\"b\"],[\"c\"]],\"objects\":[{\"id\":123,\"label\":\"person\",\"type\":\"vertex\",\"properties\":{\"name\":[{\"id\":1,\"value\":\"alice\"}],\"age\":[{\"id\":1,\"value\":\"31\"}]}},123,\"alice\"]}",
json);
+ else if (version.startsWith("v4"))
+
assertEquals("{\"labels\":[[\"a\"],[\"b\"],[\"c\"]],\"objects\":[{\"id\":123,\"label\":[\"person\"],\"type\":\"vertex\",\"properties\":{\"name\":[{\"id\":1,\"value\":\"alice\",\"properties\":{}}],\"age\":[{\"id\":1,\"value\":\"31\",\"properties\":{}}]}},123,\"alice\"]}",
json);
else
assertEquals("{\"labels\":[[\"a\"],[\"b\"],[\"c\"]],\"objects\":[{\"id\":123,\"label\":\"person\",\"properties\":{\"name\":[{\"id\":1,\"value\":\"alice\",\"label\":\"name\"}],\"age\":[{\"id\":1,\"value\":\"31\",\"label\":\"age\"}]}},123,\"alice\"]}",
json);
}
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 1aa01b9156..72d9ad893d 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
@@ -586,7 +586,7 @@ public class GremlinServerHttpIntegrateTest extends
AbstractGremlinServerIntegra
final JsonNode node = mapper.readTree(json);
assertEquals(6,
node.get("result").get(GraphSONTokens.VALUEPROP).size());
assertEquals(GraphSONTokens.VERTEX,
-
node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.LABEL).asText());
+
node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.LABEL).get(0).textValue());
}
}
@@ -1277,7 +1277,7 @@ public class GremlinServerHttpIntegrateTest extends
AbstractGremlinServerIntegra
final String json = EntityUtils.toString(response.getEntity());
final JsonNode node = mapper.readTree(json);
-
assertNull(node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.PROPERTIES));
+
assertTrue(node.get("result").get(GraphSONTokens.VALUEPROP).get(0).get(GraphSONTokens.VALUEPROP).get(GraphSONTokens.PROPERTIES).isEmpty());
}
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/bulked-traverser-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/bulked-traverser-v4.json
index d1f4f33ab8..27df3529c9 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/bulked-traverser-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/bulked-traverser-v4.json
@@ -12,7 +12,7 @@
"@type" : "g:Int32",
"@value" : 11
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -22,7 +22,8 @@
"@value" : 5
},
"value" : "tinkergraph",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/empty-binary-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/empty-binary-v4.json
index 3fe0ec48bc..8905fc0707 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/empty-binary-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/empty-binary-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:ByteBuffer",
+ "@type" : "g:Binary",
"@value" : ""
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/forever-duration-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/forever-duration-v4.json
index ad8ff76989..f72bcf554f 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/forever-duration-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/forever-duration-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Duration",
+ "@type" : "g:Duration",
"@value" : "PT2562047788015215H30M7.999999999S"
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-byte-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-byte-v4.json
index b004ec57b7..f883216d5f 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-byte-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-byte-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Byte",
+ "@type" : "g:Byte",
"@value" : 127
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-offsetdatetime-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-offsetdatetime-v4.json
index 552963b081..6fc7c25fe6 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-offsetdatetime-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-offsetdatetime-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:OffsetDateTime",
+ "@type" : "g:OffsetDateTime",
"@value" : "+999999999-12-31T23:59:59.999999999-18:00"
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-short-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-short-v4.json
index 82decf22ad..281f0162e6 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-short-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/max-short-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Int16",
+ "@type" : "g:Int16",
"@value" : 32767
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/meta-vertexproperty-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/meta-vertexproperty-v4.json
index 3dfb5842d3..13da91c00c 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/meta-vertexproperty-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/meta-vertexproperty-v4.json
@@ -6,7 +6,7 @@
"@value" : 1
},
"value" : "stephen",
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"a" : "b"
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-byte-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-byte-v4.json
index fedaea0d48..72192f1ecb 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-byte-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-byte-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Byte",
+ "@type" : "g:Byte",
"@value" : -128
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-offsetdatetime-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-offsetdatetime-v4.json
index 40d58e3cc8..d45954b5bf 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-offsetdatetime-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-offsetdatetime-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:OffsetDateTime",
+ "@type" : "g:OffsetDateTime",
"@value" : "-999999999-01-01T00:00+18:00"
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-short-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-short-v4.json
index 065cafa4e6..946d481cb6 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-short-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/min-short-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Int16",
+ "@type" : "g:Int16",
"@value" : -32768
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/multi-byte-char-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/multi-byte-char-v4.json
index b9f7ba2a62..46acefff3e 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/multi-byte-char-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/multi-byte-char-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Char",
+ "@type" : "g:Char",
"@value" : "Ω"
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-bigdecimal-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-bigdecimal-v4.json
index 31622f7a8d..be48f4f81c 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-bigdecimal-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-bigdecimal-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:BigDecimal",
+ "@type" : "g:BigDecimal",
"@value" : -123.456789987654321123456789987654321
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-biginteger-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-biginteger-v4.json
index 3cda554ad2..97b812f209 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-biginteger-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/neg-biginteger-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:BigInteger",
+ "@type" : "g:BigInteger",
"@value" : -123456789987654321123456789987654321
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-edge-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-edge-v4.json
index 8712885cee..9efced22c4 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-edge-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-edge-v4.json
@@ -5,9 +5,9 @@
"@type" : "g:Int32",
"@value" : 13
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -15,6 +15,7 @@
"outV" : {
"@type" : "g:Int32",
"@value" : 1
- }
+ },
+ "properties" : { }
}
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-vertex-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-vertex-v4.json
index 2d7fc68651..272638f730 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-vertex-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/no-prop-vertex-v4.json
@@ -5,6 +5,7 @@
"@type" : "g:Int32",
"@value" : 1
},
- "label" : "person"
+ "label" : [ "person" ],
+ "properties" : { }
}
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-bigdecimal-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-bigdecimal-v4.json
index fcf7fd8c77..d95c364292 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-bigdecimal-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-bigdecimal-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:BigDecimal",
+ "@type" : "g:BigDecimal",
"@value" : 123.456789987654321123456789987654321
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-biginteger-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-biginteger-v4.json
index 58e6114369..5483f8ba3b 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-biginteger-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/pos-biginteger-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:BigInteger",
+ "@type" : "g:BigInteger",
"@value" : 123456789987654321123456789987654321
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/prop-path-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/prop-path-v4.json
index a4edc99eae..f35d72bf15 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/prop-path-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/prop-path-v4.json
@@ -23,7 +23,7 @@
"@type" : "g:Int32",
"@value" : 1
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -33,7 +33,8 @@
"@value" : 0
},
"value" : "marko",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -44,7 +45,7 @@
"@value" : 6
},
"value" : "san diego",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -64,7 +65,7 @@
"@value" : 7
},
"value" : "santa cruz",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -84,7 +85,7 @@
"@value" : 8
},
"value" : "brussels",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -104,7 +105,7 @@
"@value" : 9
},
"value" : "santa fe",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -122,7 +123,7 @@
"@type" : "g:Int32",
"@value" : 10
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -132,7 +133,8 @@
"@value" : 4
},
"value" : "gremlin",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
@@ -144,7 +146,7 @@
"@type" : "g:Int32",
"@value" : 11
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -154,7 +156,8 @@
"@value" : 5
},
"value" : "tinkergraph",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/set-cardinality-vertexproperty-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/set-cardinality-vertexproperty-v4.json
index f768cd84f2..712358bcfa 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/set-cardinality-vertexproperty-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/set-cardinality-vertexproperty-v4.json
@@ -9,7 +9,7 @@
"@type" : "g:Set",
"@value" : [ "stephen", "marko" ]
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"a" : "b"
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/single-byte-char-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/single-byte-char-v4.json
index eb3dd7663f..e066b3df59 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/single-byte-char-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/single-byte-char-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Char",
+ "@type" : "g:Char",
"@value" : "a"
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/str-binary-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/str-binary-v4.json
index 57241159a3..a0fc26a130 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/str-binary-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/str-binary-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:ByteBuffer",
+ "@type" : "g:Binary",
"@value" : "c29tZSBieXRlcyBmb3IgeW91"
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinker-graph-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinker-graph-v4.json
index 24e95ed6af..241b56604b 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinker-graph-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/tinker-graph-v4.json
@@ -1,5 +1,5 @@
{
- "@type" : "tinker:graph",
+ "@type" : "g:graph",
"@value" : {
"vertices" : [ {
"@type" : "g:Vertex",
@@ -8,7 +8,7 @@
"@type" : "g:Int32",
"@value" : 1
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -18,7 +18,8 @@
"@value" : 0
},
"value" : "marko",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -29,7 +30,7 @@
"@value" : 6
},
"value" : "san diego",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -49,7 +50,7 @@
"@value" : 7
},
"value" : "santa cruz",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -69,7 +70,7 @@
"@value" : 8
},
"value" : "brussels",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -89,7 +90,7 @@
"@value" : 9
},
"value" : "santa fe",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -107,7 +108,7 @@
"@type" : "g:Int32",
"@value" : 7
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -117,7 +118,8 @@
"@value" : 1
},
"value" : "stephen",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -128,7 +130,7 @@
"@value" : 10
},
"value" : "centreville",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -148,7 +150,7 @@
"@value" : 11
},
"value" : "dulles",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -168,7 +170,7 @@
"@value" : 12
},
"value" : "purcellville",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -186,7 +188,7 @@
"@type" : "g:Int32",
"@value" : 8
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -196,7 +198,8 @@
"@value" : 2
},
"value" : "matthias",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -207,7 +210,7 @@
"@value" : 13
},
"value" : "bremen",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -227,7 +230,7 @@
"@value" : 14
},
"value" : "baltimore",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -247,7 +250,7 @@
"@value" : 15
},
"value" : "oakland",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -267,7 +270,7 @@
"@value" : 16
},
"value" : "seattle",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -285,7 +288,7 @@
"@type" : "g:Int32",
"@value" : 9
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -295,7 +298,8 @@
"@value" : 3
},
"value" : "daniel",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -306,7 +310,7 @@
"@value" : 17
},
"value" : "spremberg",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -326,7 +330,7 @@
"@value" : 18
},
"value" : "kaiserslautern",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -346,7 +350,7 @@
"@value" : 19
},
"value" : "aachen",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -364,7 +368,7 @@
"@type" : "g:Int32",
"@value" : 10
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -374,7 +378,8 @@
"@value" : 4
},
"value" : "gremlin",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
@@ -386,7 +391,7 @@
"@type" : "g:Int32",
"@value" : 11
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -396,7 +401,8 @@
"@value" : 5
},
"value" : "tinkergraph",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
@@ -409,9 +415,9 @@
"@type" : "g:Int32",
"@value" : 13
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -421,7 +427,7 @@
"@value" : 1
},
"properties" : {
- "since" : {
+ "since" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "since",
@@ -430,7 +436,7 @@
"@value" : 2009
}
}
- }
+ } ]
}
}
}, {
@@ -440,9 +446,9 @@
"@type" : "g:Int32",
"@value" : 14
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -452,7 +458,7 @@
"@value" : 1
},
"properties" : {
- "since" : {
+ "since" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "since",
@@ -461,7 +467,7 @@
"@value" : 2010
}
}
- }
+ } ]
}
}
}, {
@@ -471,9 +477,9 @@
"@type" : "g:Int32",
"@value" : 15
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -483,7 +489,7 @@
"@value" : 1
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -492,7 +498,7 @@
"@value" : 4
}
}
- }
+ } ]
}
}
}, {
@@ -502,9 +508,9 @@
"@type" : "g:Int32",
"@value" : 16
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -514,7 +520,7 @@
"@value" : 1
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -523,7 +529,7 @@
"@value" : 5
}
}
- }
+ } ]
}
}
}, {
@@ -533,9 +539,9 @@
"@type" : "g:Int32",
"@value" : 17
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -545,7 +551,7 @@
"@value" : 7
},
"properties" : {
- "since" : {
+ "since" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "since",
@@ -554,7 +560,7 @@
"@value" : 2010
}
}
- }
+ } ]
}
}
}, {
@@ -564,9 +570,9 @@
"@type" : "g:Int32",
"@value" : 18
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -576,7 +582,7 @@
"@value" : 7
},
"properties" : {
- "since" : {
+ "since" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "since",
@@ -585,7 +591,7 @@
"@value" : 2011
}
}
- }
+ } ]
}
}
}, {
@@ -595,9 +601,9 @@
"@type" : "g:Int32",
"@value" : 19
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -607,7 +613,7 @@
"@value" : 7
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -616,7 +622,7 @@
"@value" : 5
}
}
- }
+ } ]
}
}
}, {
@@ -626,9 +632,9 @@
"@type" : "g:Int32",
"@value" : 20
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -638,7 +644,7 @@
"@value" : 7
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -647,7 +653,7 @@
"@value" : 4
}
}
- }
+ } ]
}
}
}, {
@@ -657,9 +663,9 @@
"@type" : "g:Int32",
"@value" : 21
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -669,7 +675,7 @@
"@value" : 8
},
"properties" : {
- "since" : {
+ "since" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "since",
@@ -678,7 +684,7 @@
"@value" : 2012
}
}
- }
+ } ]
}
}
}, {
@@ -688,9 +694,9 @@
"@type" : "g:Int32",
"@value" : 22
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -700,7 +706,7 @@
"@value" : 8
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -709,7 +715,7 @@
"@value" : 3
}
}
- }
+ } ]
}
}
}, {
@@ -719,9 +725,9 @@
"@type" : "g:Int32",
"@value" : 23
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -731,7 +737,7 @@
"@value" : 8
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -740,7 +746,7 @@
"@value" : 3
}
}
- }
+ } ]
}
}
}, {
@@ -750,9 +756,9 @@
"@type" : "g:Int32",
"@value" : 24
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -762,7 +768,7 @@
"@value" : 9
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -771,7 +777,7 @@
"@value" : 5
}
}
- }
+ } ]
}
}
}, {
@@ -781,9 +787,9 @@
"@type" : "g:Int32",
"@value" : 25
},
- "label" : "uses",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "uses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -793,7 +799,7 @@
"@value" : 9
},
"properties" : {
- "skill" : {
+ "skill" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "skill",
@@ -802,7 +808,7 @@
"@value" : 3
}
}
- }
+ } ]
}
}
}, {
@@ -812,9 +818,9 @@
"@type" : "g:Int32",
"@value" : 26
},
- "label" : "traverses",
- "inVLabel" : "software",
- "outVLabel" : "software",
+ "label" : [ "traverses" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "software" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 11
@@ -822,7 +828,8 @@
"outV" : {
"@type" : "g:Int32",
"@value" : 10
- }
+ },
+ "properties" : { }
}
} ]
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4-no-types.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4-no-types.json
index 0f7f1682d1..26c92ee5fd 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4-no-types.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4-no-types.json
@@ -1,12 +1,12 @@
{
"id" : 13,
- "label" : "develops",
+ "label" : [ "develops" ],
"type" : "edge",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : 10,
"outV" : 1,
"properties" : {
- "since" : 2009
+ "since" : [ 2009 ]
}
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4.json
index ba1c52eb1e..cc13e232a8 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-edge-v4.json
@@ -5,9 +5,9 @@
"@type" : "g:Int32",
"@value" : 13
},
- "label" : "develops",
- "inVLabel" : "software",
- "outVLabel" : "person",
+ "label" : [ "develops" ],
+ "inVLabel" : [ "software" ],
+ "outVLabel" : [ "person" ],
"inV" : {
"@type" : "g:Int32",
"@value" : 10
@@ -17,7 +17,7 @@
"@value" : 1
},
"properties" : {
- "since" : {
+ "since" : [ {
"@type" : "g:Property",
"@value" : {
"key" : "since",
@@ -26,7 +26,7 @@
"@value" : 2009
}
}
- }
+ } ]
}
}
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4-no-types.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4-no-types.json
index 8919b3e6f4..060c0f9d49 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4-no-types.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4-no-types.json
@@ -2,15 +2,18 @@
"labels" : [ [ ], [ ], [ ] ],
"objects" : [ {
"id" : 1,
- "label" : "person",
- "type" : "vertex"
+ "label" : [ "person" ],
+ "type" : "vertex",
+ "properties" : { }
}, {
"id" : 10,
- "label" : "software",
- "type" : "vertex"
+ "label" : [ "software" ],
+ "type" : "vertex",
+ "properties" : { }
}, {
"id" : 11,
- "label" : "software",
- "type" : "vertex"
+ "label" : [ "software" ],
+ "type" : "vertex",
+ "properties" : { }
} ]
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4.json
index 216b39354d..c291323752 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-path-v4.json
@@ -23,7 +23,8 @@
"@type" : "g:Int32",
"@value" : 1
},
- "label" : "person"
+ "label" : [ "person" ],
+ "properties" : { }
}
}, {
"@type" : "g:Vertex",
@@ -32,7 +33,8 @@
"@type" : "g:Int32",
"@value" : 10
},
- "label" : "software"
+ "label" : [ "software" ],
+ "properties" : { }
}
}, {
"@type" : "g:Vertex",
@@ -41,7 +43,8 @@
"@type" : "g:Int32",
"@value" : 11
},
- "label" : "software"
+ "label" : [ "software" ],
+ "properties" : { }
}
} ]
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-tree-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-tree-v4.json
index 25b1f99d17..acfb6fb925 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-tree-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-tree-v4.json
@@ -8,7 +8,7 @@
"@type" : "g:Int32",
"@value" : 10
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -18,7 +18,8 @@
"@value" : 4
},
"value" : "gremlin",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
@@ -34,7 +35,7 @@
"@type" : "g:Int32",
"@value" : 11
},
- "label" : "software",
+ "label" : [ "software" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -44,7 +45,8 @@
"@value" : 5
},
"value" : "tinkergraph",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ]
}
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4-no-types.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4-no-types.json
index a885f58b6f..e2418dac20 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4-no-types.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4-no-types.json
@@ -1,11 +1,12 @@
{
"id" : 1,
- "label" : "person",
+ "label" : [ "person" ],
"type" : "vertex",
"properties" : {
"name" : [ {
"id" : 0,
- "value" : "marko"
+ "value" : "marko",
+ "properties" : { }
} ],
"location" : [ {
"id" : 6,
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4.json
index f10223032f..f6a81d70b3 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertex-v4.json
@@ -5,7 +5,7 @@
"@type" : "g:Int32",
"@value" : 1
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -15,7 +15,8 @@
"@value" : 0
},
"value" : "marko",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -26,7 +27,7 @@
"@value" : 6
},
"value" : "san diego",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -46,7 +47,7 @@
"@value" : 7
},
"value" : "santa cruz",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -66,7 +67,7 @@
"@value" : 8
},
"value" : "brussels",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -86,7 +87,7 @@
"@value" : 9
},
"value" : "santa fe",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4-no-types.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4-no-types.json
index 74025a80e8..dc096869f6 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4-no-types.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4-no-types.json
@@ -1,5 +1,6 @@
{
"id" : 0,
"value" : "marko",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4.json
index af184b1766..726823e926 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/traversal-vertexproperty-v4.json
@@ -6,6 +6,7 @@
"@value" : 0
},
"value" : "marko",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
}
\ No newline at end of file
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/vertex-traverser-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/vertex-traverser-v4.json
index a59a29e9da..08c15e96da 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/vertex-traverser-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/vertex-traverser-v4.json
@@ -12,7 +12,7 @@
"@type" : "g:Int32",
"@value" : 1
},
- "label" : "person",
+ "label" : [ "person" ],
"properties" : {
"name" : [ {
"@type" : "g:VertexProperty",
@@ -22,7 +22,8 @@
"@value" : 0
},
"value" : "marko",
- "label" : "name"
+ "label" : [ "name" ],
+ "properties" : { }
}
} ],
"location" : [ {
@@ -33,7 +34,7 @@
"@value" : 6
},
"value" : "san diego",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -53,7 +54,7 @@
"@value" : 7
},
"value" : "santa cruz",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -73,7 +74,7 @@
"@value" : 8
},
"value" : "brussels",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
@@ -93,7 +94,7 @@
"@value" : 9
},
"value" : "santa fe",
- "label" : "location",
+ "label" : [ "location" ],
"properties" : {
"startTime" : {
"@type" : "g:Int32",
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/zero-duration-v4.json
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/zero-duration-v4.json
index e14db84027..146966f74e 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/zero-duration-v4.json
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphson/zero-duration-v4.json
@@ -1,4 +1,4 @@
{
- "@type" : "gx:Duration",
+ "@type" : "g:Duration",
"@value" : "PT0S"
}
\ No newline at end of file
diff --git
a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractUntypedCompatibilityTest.java
b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractUntypedCompatibilityTest.java
index 15cf3c5a29..bfa600e2f2 100644
---
a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractUntypedCompatibilityTest.java
+++
b/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/structure/io/AbstractUntypedCompatibilityTest.java
@@ -32,6 +32,7 @@ import
org.apache.tinkerpop.gremlin.util.message.ResponseMessage;
import
org.apache.tinkerpop.gremlin.util.ser.GraphSONUntypedMessageSerializerV4;
import org.junit.Test;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -56,17 +57,17 @@ public abstract class AbstractUntypedCompatibilityTest
extends AbstractCompatibi
final HashMap recycled = read(bytes, HashMap.class);
assertNotSame(fromStatic, recycled);
assertEquals(resource.id(), fromStatic.get("id"));
- assertEquals(resource.label(), fromStatic.get("label"));
+ assertEquals(Collections.singletonList(resource.label()),
fromStatic.get("label"));
assertEquals(resource.id(), fromStatic.get("id"));
- assertEquals(resource.inVertex().label(), fromStatic.get("inVLabel"));
- assertEquals(resource.outVertex().label(),
fromStatic.get("outVLabel"));
+ assertEquals(Collections.singletonList(resource.inVertex().label()),
fromStatic.get("inVLabel"));
+ assertEquals(Collections.singletonList(resource.outVertex().label()),
fromStatic.get("outVLabel"));
assertEquals(resource.inVertex().id(), fromStatic.get("inV"));
assertEquals(resource.outVertex().id(), fromStatic.get("outV"));
assertEquals(resource.id(), recycled.get("id"));
- assertEquals(resource.label(), recycled.get("label"));
+ assertEquals(Collections.singletonList(resource.label()),
recycled.get("label"));
assertEquals(resource.id(), recycled.get("id"));
- assertEquals(resource.inVertex().label(), recycled.get("inVLabel"));
- assertEquals(resource.outVertex().label(), recycled.get("outVLabel"));
+ assertEquals(Collections.singletonList(resource.inVertex().label()),
recycled.get("inVLabel"));
+ assertEquals(Collections.singletonList(resource.outVertex().label()),
recycled.get("outVLabel"));
assertEquals(resource.inVertex().id(), recycled.get("inV"));
assertEquals(resource.outVertex().id(), recycled.get("outV"));
@@ -103,22 +104,22 @@ public abstract class AbstractUntypedCompatibilityTest
extends AbstractCompatibi
assertEquals(resource.labels().get(2).size(), ((List) ((List)
fromStatic.get("labels")).get(2)).size());
assertEquals(resource.objects().size(), ((List)
fromStatic.get("objects")).size());
assertEquals(((Vertex) resource.objects().get(0)).id(), ((Map) ((List)
fromStatic.get("objects")).get(0)).get("id"));
- assertEquals(((Vertex) resource.objects().get(0)).label(), ((Map)
((List) fromStatic.get("objects")).get(0)).get("label"));
+ assertEquals(Collections.singletonList(((Vertex)
resource.objects().get(0)).label()), ((Map) ((List)
fromStatic.get("objects")).get(0)).get("label"));
assertEquals(((Vertex) resource.objects().get(1)).id(), ((Map) ((List)
fromStatic.get("objects")).get(1)).get("id"));
- assertEquals(((Vertex) resource.objects().get(1)).label(), ((Map)
((List) fromStatic.get("objects")).get(1)).get("label"));
+ assertEquals(Collections.singletonList(((Vertex)
resource.objects().get(1)).label()), ((Map) ((List)
fromStatic.get("objects")).get(1)).get("label"));
assertEquals(((Vertex) resource.objects().get(2)).id(), ((Map) ((List)
fromStatic.get("objects")).get(2)).get("id"));
- assertEquals(((Vertex) resource.objects().get(2)).label(), ((Map)
((List) fromStatic.get("objects")).get(2)).get("label"));
+ assertEquals(Collections.singletonList(((Vertex)
resource.objects().get(2)).label()), ((Map) ((List)
fromStatic.get("objects")).get(2)).get("label"));
assertEquals(resource.labels().size(), ((List)
recycled.get("labels")).size());
assertEquals(resource.labels().get(0).size(), ((List) ((List)
recycled.get("labels")).get(0)).size());
assertEquals(resource.labels().get(1).size(), ((List) ((List)
recycled.get("labels")).get(1)).size());
assertEquals(resource.labels().get(2).size(), ((List) ((List)
recycled.get("labels")).get(2)).size());
assertEquals(resource.objects().size(), ((List)
recycled.get("objects")).size());
assertEquals(((Vertex) resource.objects().get(0)).id(), ((Map) ((List)
recycled.get("objects")).get(0)).get("id"));
- assertEquals(((Vertex) resource.objects().get(0)).label(), ((Map)
((List) recycled.get("objects")).get(0)).get("label"));
+ assertEquals(Collections.singletonList(((Vertex)
resource.objects().get(0)).label()), ((Map) ((List)
recycled.get("objects")).get(0)).get("label"));
assertEquals(((Vertex) resource.objects().get(1)).id(), ((Map) ((List)
recycled.get("objects")).get(1)).get("id"));
- assertEquals(((Vertex) resource.objects().get(1)).label(), ((Map)
((List) recycled.get("objects")).get(1)).get("label"));
+ assertEquals(Collections.singletonList(((Vertex)
resource.objects().get(1)).label()), ((Map) ((List)
recycled.get("objects")).get(1)).get("label"));
assertEquals(((Vertex) resource.objects().get(2)).id(), ((Map) ((List)
recycled.get("objects")).get(2)).get("id"));
- assertEquals(((Vertex) resource.objects().get(2)).label(), ((Map)
((List) recycled.get("objects")).get(2)).get("label"));
+ assertEquals(Collections.singletonList(((Vertex)
resource.objects().get(2)).label()), ((Map) ((List)
recycled.get("objects")).get(2)).get("label"));
}
@Test
@@ -148,10 +149,10 @@ public abstract class AbstractUntypedCompatibilityTest
extends AbstractCompatibi
final HashMap recycled = read(bytes, HashMap.class);
assertNotSame(fromStatic, recycled);
assertEquals(resource.id(), fromStatic.get("id"));
- assertEquals(resource.label(), fromStatic.get("label"));
+ assertEquals(Collections.singletonList(resource.label()),
fromStatic.get("label"));
assertEquals(resource.id(), fromStatic.get("id"));
assertEquals(resource.id(), recycled.get("id"));
- assertEquals(resource.label(), recycled.get("label"));
+ assertEquals(Collections.singletonList(resource.label()),
recycled.get("label"));
assertEquals(resource.id(), recycled.get("id"));
assertEquals(IteratorUtils.count(resource.keys()), ((Map)
fromStatic.get("properties")).size());
assertEquals(resource.value("name"), ((Map) ((List) ((Map)
fromStatic.get("properties")).get("name")).get(0)).get("value"));
@@ -193,13 +194,15 @@ public abstract class AbstractUntypedCompatibilityTest
extends AbstractCompatibi
final HashMap fromStatic = read(readFromResource(resourceName),
HashMap.class);
final HashMap recycled = read(bytes, HashMap.class);
assertNotSame(fromStatic, recycled);
- assertEquals(3, fromStatic.size());
+ assertEquals(4, fromStatic.size());
assertEquals(resource.id().toString(),
fromStatic.get("id").toString());
- assertEquals(resource.key(), fromStatic.get("label"));
+ assertEquals(Collections.singletonList(resource.key()),
fromStatic.get("label"));
assertEquals(resource.value(), fromStatic.get("value"));
- assertEquals(3, recycled.size());
+ assertEquals(Collections.emptyMap(), fromStatic.get("properties"));
+ assertEquals(4, recycled.size());
assertEquals(resource.id().toString(),
fromStatic.get("id").toString());
- assertEquals(resource.key(), recycled.get("label"));
+ assertEquals(Collections.singletonList(resource.key()),
recycled.get("label"));
assertEquals(resource.value(), recycled.get("value"));
+ assertEquals(Collections.emptyMap(), recycled.get("properties"));
}
}
diff --git
a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV4.java
b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV4.java
index 5d5bea9153..8ae666c95f 100644
---
a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV4.java
+++
b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistryV4.java
@@ -134,7 +134,7 @@ public final class TinkerIoRegistryV4 extends
AbstractIoRegistry {
@Override
public String getTypeNamespace() {
- return "tinker";
+ return GraphSONTokens.GREMLIN_TYPE_NAMESPACE;
}
}