You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/07/10 21:26:03 UTC
[21/50] [abbrv] tinkerpop git commit: TINKERPOP-1698 Gryo 3.0 WIP
TINKERPOP-1698 Gryo 3.0 WIP
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/87ca1e35
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/87ca1e35
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/87ca1e35
Branch: refs/heads/TINKERPOP-1427
Commit: 87ca1e35ad233efc9a4b51967373094f0161c44e
Parents: c3cfaea
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 22 19:01:05 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 10 14:12:46 2017 -0400
----------------------------------------------------------------------
.../structure/io/gryo/GryoSerializers.java | 285 --------------
.../structure/io/gryo/GryoSerializersV1d0.java | 285 ++++++++++++++
.../structure/io/gryo/GryoSerializersV3d0.java | 380 +++++++++++++++++++
.../gremlin/structure/io/gryo/GryoVersion.java | 63 +--
.../structure/util/detached/DetachedVertex.java | 1 +
.../util/detached/DetachedVertexProperty.java | 9 +
.../driver/ser/GryoMessageSerializerV1d0.java | 5 +-
.../driver/ser/GryoMessageSerializerV3d0.java | 56 +++
.../tinkerpop/gremlin/driver/ser/SerTokens.java | 1 +
gremlin-server/conf/gremlin-server.yaml | 1 +
.../structure/io/gryo/_3_3_0/edge-v3d0.kryo | Bin 57 -> 41 bytes
.../structure/io/gryo/_3_3_0/property-v3d0.kryo | 2 +-
.../io/gryo/_3_3_0/standardresult-v3d0.kryo | Bin 230 -> 235 bytes
.../io/gryo/_3_3_0/traverser-v3d0.kryo | Bin 211 -> 216 bytes
.../structure/io/gryo/_3_3_0/tree-v3d0.kryo | Bin 284 -> 293 bytes
.../structure/io/gryo/_3_3_0/vertex-v3d0.kryo | Bin 202 -> 207 bytes
.../io/gryo/_3_3_0/vertexproperty-v3d0.kryo | Bin 18 -> 26 bytes
.../structure/io/gryo/GryoRegistrator.java | 30 +-
18 files changed, 788 insertions(+), 330 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
deleted file mode 100644
index dd88a56..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.io.gryo;
-
-import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser;
-import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
-import org.apache.tinkerpop.gremlin.process.traversal.P;
-import org.apache.tinkerpop.gremlin.process.traversal.Path;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.util.AndP;
-import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
-import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
-import org.apache.tinkerpop.gremlin.util.function.Lambda;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Class used to serialize graph-based objects such as vertices, edges, properties, and paths. These objects are
- * "detached" using {@link DetachedFactory} before serialization. These serializers present a generalized way to
- * serialize the implementations of core interfaces.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class GryoSerializers {
-
- /**
- * Serializes any {@link Edge} implementation encountered to a {@link DetachedEdge}.
- */
- public final static class EdgeSerializer implements SerializerShim<Edge> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Edge edge) {
- kryo.writeClassAndObject(output, DetachedFactory.detach(edge, true));
- }
-
- @Override
- public <I extends InputShim> Edge read(final KryoShim<I, ?> kryo, final I input, final Class<Edge> edgeClass) {
- final Object o = kryo.readClassAndObject(input);
- return (Edge) o;
- }
- }
-
- /**
- * Serializes any {@link Vertex} implementation encountered to an {@link DetachedVertex}.
- */
- public final static class VertexSerializer implements SerializerShim<Vertex> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Vertex vertex) {
- kryo.writeClassAndObject(output, DetachedFactory.detach(vertex, true));
- }
-
- @Override
- public <I extends InputShim> Vertex read(final KryoShim<I, ?> kryo, final I input, final Class<Vertex> vertexClass) {
- return (Vertex) kryo.readClassAndObject(input);
- }
- }
-
- /**
- * Serializes any {@link Property} implementation encountered to an {@link DetachedProperty}.
- */
- public final static class PropertySerializer implements SerializerShim<Property> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Property property) {
- kryo.writeClassAndObject(output, property instanceof VertexProperty ? DetachedFactory.detach((VertexProperty) property, true) : DetachedFactory.detach(property));
- }
-
- @Override
- public <I extends InputShim> Property read(final KryoShim<I, ?> kryo, final I input, final Class<Property> propertyClass) {
- return (Property) kryo.readClassAndObject(input);
- }
- }
-
- /**
- * Serializes any {@link VertexProperty} implementation encountered to an {@link DetachedVertexProperty}.
- */
- public final static class VertexPropertySerializer implements SerializerShim<VertexProperty> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final VertexProperty vertexProperty) {
- kryo.writeClassAndObject(output, DetachedFactory.detach(vertexProperty, true));
- }
-
- @Override
- public <I extends InputShim> VertexProperty read(final KryoShim<I, ?> kryo, final I input, final Class<VertexProperty> vertexPropertyClass) {
- return (VertexProperty) kryo.readClassAndObject(input);
- }
- }
-
- /**
- * Serializes any {@link Path} implementation encountered to an {@link DetachedPath}.
- */
- public final static class PathSerializer implements SerializerShim<Path> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Path path) {
- kryo.writeClassAndObject(output, DetachedFactory.detach(path, false));
- }
-
- @Override
- public <I extends InputShim> Path read(final KryoShim<I, ?> kryo, final I input, final Class<Path> pathClass) {
- return (Path) kryo.readClassAndObject(input);
- }
- }
-
- public final static class BytecodeSerializer implements SerializerShim<Bytecode> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode bytecode) {
- writeInstructions(kryo, output, bytecode.getSourceInstructions());
- writeInstructions(kryo, output, bytecode.getStepInstructions());
- }
-
- @Override
- public <I extends InputShim> Bytecode read(final KryoShim<I, ?> kryo, final I input, final Class<Bytecode> clazz) {
- final Bytecode bytecode = new Bytecode();
- final int sourceInstructionCount = input.readInt();
- for (int ix = 0; ix < sourceInstructionCount; ix++) {
- final String operator = input.readString();
- final Object[] args = operator.equals(TraversalSource.Symbols.withoutStrategies) ?
- kryo.readObject(input, Class[].class) :
- kryo.readObject(input, Object[].class);
- bytecode.addSource(operator, args);
- }
-
- final int stepInstructionCount = input.readInt();
- for (int ix = 0; ix < stepInstructionCount; ix++) {
- final String operator = input.readString();
- final Object[] args = kryo.readObject(input, Object[].class);
- bytecode.addStep(operator, args);
- }
-
- return bytecode;
- }
-
- private static <O extends OutputShim> void writeInstructions(final KryoShim<?, O> kryo, final O output,
- final List<Bytecode.Instruction> instructions) {
- output.writeInt(instructions.size());
- for (Bytecode.Instruction inst : instructions) {
- output.writeString(inst.getOperator());
- kryo.writeObject(output, inst.getArguments());
- }
- }
- }
-
- public final static class PSerializer implements SerializerShim<P> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final P p) {
- output.writeString(p instanceof ConnectiveP ?
- (p instanceof AndP ? "and" : "or") :
- p.getBiPredicate().toString());
- if (p instanceof ConnectiveP || p.getValue() instanceof Collection) {
- output.writeByte((byte) 0);
- final Collection<?> coll = p instanceof ConnectiveP ?
- ((ConnectiveP<?>) p).getPredicates() : (Collection) p.getValue();
- output.writeInt(coll.size());
- coll.forEach(v -> kryo.writeClassAndObject(output, v));
- } else {
- output.writeByte((byte) 1);
- kryo.writeClassAndObject(output, p.getValue());
- }
- }
-
- @Override
- public <I extends InputShim> P read(final KryoShim<I, ?> kryo, final I input, final Class<P> clazz) {
- final String predicate = input.readString();
- final boolean isCollection = input.readByte() == (byte) 0;
- final Object value;
- if (isCollection) {
- value = new ArrayList();
- final int size = input.readInt();
- for (int ix = 0; ix < size; ix++) {
- ((List) value).add(kryo.readClassAndObject(input));
- }
- } else {
- value = kryo.readClassAndObject(input);
- }
-
- try {
- if (predicate.equals("and") || predicate.equals("or"))
- return predicate.equals("and") ? new AndP((List<P>) value) : new OrP((List<P>) value);
- else if (value instanceof Collection) {
- if (predicate.equals("between"))
- return P.between(((List) value).get(0), ((List) value).get(1));
- else if (predicate.equals("inside"))
- return P.inside(((List) value).get(0), ((List) value).get(1));
- else if (predicate.equals("outside"))
- return P.outside(((List) value).get(0), ((List) value).get(1));
- else if (predicate.equals("within"))
- return P.within((Collection) value);
- else if (predicate.equals("without"))
- return P.without((Collection) value);
- else
- return (P) P.class.getMethod(predicate, Collection.class).invoke(null, (Collection) value);
- } else
- return (P) P.class.getMethod(predicate, Object.class).invoke(null, value);
- } catch (final Exception e) {
- throw new IllegalStateException(e.getMessage(), e);
- }
- }
- }
-
- public final static class LambdaSerializer implements SerializerShim<Lambda> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Lambda lambda) {
- output.writeString(lambda.getLambdaScript());
- output.writeString(lambda.getLambdaLanguage());
- output.writeInt(lambda.getLambdaArguments());
- }
-
- @Override
- public <I extends InputShim> Lambda read(final KryoShim<I, ?> kryo, final I input, final Class<Lambda> clazz) {
- final String script = input.readString();
- final String language = input.readString();
- final int arguments = input.readInt();
- //
- if (-1 == arguments || arguments > 2)
- return new Lambda.UnknownArgLambda(script, language, arguments);
- else if (0 == arguments)
- return new Lambda.ZeroArgLambda<>(script, language);
- else if (1 == arguments)
- return new Lambda.OneArgLambda<>(script, language);
- else
- return new Lambda.TwoArgLambda<>(script, language);
- }
- }
-
- public final static class BindingSerializer implements SerializerShim<Bytecode.Binding> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode.Binding binding) {
- output.writeString(binding.variable());
- kryo.writeClassAndObject(output, binding.value());
- }
-
- @Override
- public <I extends InputShim> Bytecode.Binding read(final KryoShim<I, ?> kryo, final I input, final Class<Bytecode.Binding> clazz) {
- final String var = input.readString();
- final Object val = kryo.readClassAndObject(input);
- return new Bytecode.Binding(var, val);
- }
- }
-
- public final static class DefaultRemoteTraverserSerializer implements SerializerShim<DefaultRemoteTraverser> {
- @Override
- public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final DefaultRemoteTraverser remoteTraverser) {
- kryo.writeClassAndObject(output, remoteTraverser.get());
- output.writeLong(remoteTraverser.bulk());
- }
-
- @Override
- public <I extends InputShim> DefaultRemoteTraverser read(final KryoShim<I, ?> kryo, final I input, final Class<DefaultRemoteTraverser> remoteTraverserClass) {
- final Object o = kryo.readClassAndObject(input);
- return new DefaultRemoteTraverser<>(o, input.readLong());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV1d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV1d0.java
new file mode 100644
index 0000000..2851baa
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV1d0.java
@@ -0,0 +1,285 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.gryo;
+
+import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser;
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.util.AndP;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
+import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.util.function.Lambda;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This class holds serializers for graph-based objects such as vertices, edges, properties, and paths. These objects
+ * are "detached" using {@link DetachedFactory} before serialization. These serializers present a generalized way to
+ * serialize the implementations of core interfaces. These are serializers for Gryo 1.0.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class GryoSerializersV1d0 {
+
+ /**
+ * Serializes any {@link Edge} implementation encountered to a {@link DetachedEdge}.
+ */
+ public final static class EdgeSerializer implements SerializerShim<Edge> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Edge edge) {
+ kryo.writeClassAndObject(output, DetachedFactory.detach(edge, true));
+ }
+
+ @Override
+ public <I extends InputShim> Edge read(final KryoShim<I, ?> kryo, final I input, final Class<Edge> edgeClass) {
+ final Object o = kryo.readClassAndObject(input);
+ return (Edge) o;
+ }
+ }
+
+ /**
+ * Serializes any {@link Vertex} implementation encountered to an {@link DetachedVertex}.
+ */
+ public final static class VertexSerializer implements SerializerShim<Vertex> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Vertex vertex) {
+ kryo.writeClassAndObject(output, DetachedFactory.detach(vertex, true));
+ }
+
+ @Override
+ public <I extends InputShim> Vertex read(final KryoShim<I, ?> kryo, final I input, final Class<Vertex> vertexClass) {
+ return (Vertex) kryo.readClassAndObject(input);
+ }
+ }
+
+ /**
+ * Serializes any {@link Property} implementation encountered to an {@link DetachedProperty}.
+ */
+ public final static class PropertySerializer implements SerializerShim<Property> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Property property) {
+ kryo.writeClassAndObject(output, property instanceof VertexProperty ? DetachedFactory.detach((VertexProperty) property, true) : DetachedFactory.detach(property));
+ }
+
+ @Override
+ public <I extends InputShim> Property read(final KryoShim<I, ?> kryo, final I input, final Class<Property> propertyClass) {
+ return (Property) kryo.readClassAndObject(input);
+ }
+ }
+
+ /**
+ * Serializes any {@link VertexProperty} implementation encountered to an {@link DetachedVertexProperty}.
+ */
+ public final static class VertexPropertySerializer implements SerializerShim<VertexProperty> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final VertexProperty vertexProperty) {
+ kryo.writeClassAndObject(output, DetachedFactory.detach(vertexProperty, true));
+ }
+
+ @Override
+ public <I extends InputShim> VertexProperty read(final KryoShim<I, ?> kryo, final I input, final Class<VertexProperty> vertexPropertyClass) {
+ return (VertexProperty) kryo.readClassAndObject(input);
+ }
+ }
+
+ /**
+ * Serializes any {@link Path} implementation encountered to an {@link DetachedPath}.
+ */
+ public final static class PathSerializer implements SerializerShim<Path> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Path path) {
+ kryo.writeClassAndObject(output, DetachedFactory.detach(path, false));
+ }
+
+ @Override
+ public <I extends InputShim> Path read(final KryoShim<I, ?> kryo, final I input, final Class<Path> pathClass) {
+ return (Path) kryo.readClassAndObject(input);
+ }
+ }
+
+ public final static class BytecodeSerializer implements SerializerShim<Bytecode> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode bytecode) {
+ writeInstructions(kryo, output, bytecode.getSourceInstructions());
+ writeInstructions(kryo, output, bytecode.getStepInstructions());
+ }
+
+ @Override
+ public <I extends InputShim> Bytecode read(final KryoShim<I, ?> kryo, final I input, final Class<Bytecode> clazz) {
+ final Bytecode bytecode = new Bytecode();
+ final int sourceInstructionCount = input.readInt();
+ for (int ix = 0; ix < sourceInstructionCount; ix++) {
+ final String operator = input.readString();
+ final Object[] args = operator.equals(TraversalSource.Symbols.withoutStrategies) ?
+ kryo.readObject(input, Class[].class) :
+ kryo.readObject(input, Object[].class);
+ bytecode.addSource(operator, args);
+ }
+
+ final int stepInstructionCount = input.readInt();
+ for (int ix = 0; ix < stepInstructionCount; ix++) {
+ final String operator = input.readString();
+ final Object[] args = kryo.readObject(input, Object[].class);
+ bytecode.addStep(operator, args);
+ }
+
+ return bytecode;
+ }
+
+ private static <O extends OutputShim> void writeInstructions(final KryoShim<?, O> kryo, final O output,
+ final List<Bytecode.Instruction> instructions) {
+ output.writeInt(instructions.size());
+ for (Bytecode.Instruction inst : instructions) {
+ output.writeString(inst.getOperator());
+ kryo.writeObject(output, inst.getArguments());
+ }
+ }
+ }
+
+ public final static class PSerializer implements SerializerShim<P> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final P p) {
+ output.writeString(p instanceof ConnectiveP ?
+ (p instanceof AndP ? "and" : "or") :
+ p.getBiPredicate().toString());
+ if (p instanceof ConnectiveP || p.getValue() instanceof Collection) {
+ output.writeByte((byte) 0);
+ final Collection<?> coll = p instanceof ConnectiveP ?
+ ((ConnectiveP<?>) p).getPredicates() : (Collection) p.getValue();
+ output.writeInt(coll.size());
+ coll.forEach(v -> kryo.writeClassAndObject(output, v));
+ } else {
+ output.writeByte((byte) 1);
+ kryo.writeClassAndObject(output, p.getValue());
+ }
+ }
+
+ @Override
+ public <I extends InputShim> P read(final KryoShim<I, ?> kryo, final I input, final Class<P> clazz) {
+ final String predicate = input.readString();
+ final boolean isCollection = input.readByte() == (byte) 0;
+ final Object value;
+ if (isCollection) {
+ value = new ArrayList();
+ final int size = input.readInt();
+ for (int ix = 0; ix < size; ix++) {
+ ((List) value).add(kryo.readClassAndObject(input));
+ }
+ } else {
+ value = kryo.readClassAndObject(input);
+ }
+
+ try {
+ if (predicate.equals("and") || predicate.equals("or"))
+ return predicate.equals("and") ? new AndP((List<P>) value) : new OrP((List<P>) value);
+ else if (value instanceof Collection) {
+ if (predicate.equals("between"))
+ return P.between(((List) value).get(0), ((List) value).get(1));
+ else if (predicate.equals("inside"))
+ return P.inside(((List) value).get(0), ((List) value).get(1));
+ else if (predicate.equals("outside"))
+ return P.outside(((List) value).get(0), ((List) value).get(1));
+ else if (predicate.equals("within"))
+ return P.within((Collection) value);
+ else if (predicate.equals("without"))
+ return P.without((Collection) value);
+ else
+ return (P) P.class.getMethod(predicate, Collection.class).invoke(null, (Collection) value);
+ } else
+ return (P) P.class.getMethod(predicate, Object.class).invoke(null, value);
+ } catch (final Exception e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+ }
+
+ public final static class LambdaSerializer implements SerializerShim<Lambda> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Lambda lambda) {
+ output.writeString(lambda.getLambdaScript());
+ output.writeString(lambda.getLambdaLanguage());
+ output.writeInt(lambda.getLambdaArguments());
+ }
+
+ @Override
+ public <I extends InputShim> Lambda read(final KryoShim<I, ?> kryo, final I input, final Class<Lambda> clazz) {
+ final String script = input.readString();
+ final String language = input.readString();
+ final int arguments = input.readInt();
+ //
+ if (-1 == arguments || arguments > 2)
+ return new Lambda.UnknownArgLambda(script, language, arguments);
+ else if (0 == arguments)
+ return new Lambda.ZeroArgLambda<>(script, language);
+ else if (1 == arguments)
+ return new Lambda.OneArgLambda<>(script, language);
+ else
+ return new Lambda.TwoArgLambda<>(script, language);
+ }
+ }
+
+ public final static class BindingSerializer implements SerializerShim<Bytecode.Binding> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode.Binding binding) {
+ output.writeString(binding.variable());
+ kryo.writeClassAndObject(output, binding.value());
+ }
+
+ @Override
+ public <I extends InputShim> Bytecode.Binding read(final KryoShim<I, ?> kryo, final I input, final Class<Bytecode.Binding> clazz) {
+ final String var = input.readString();
+ final Object val = kryo.readClassAndObject(input);
+ return new Bytecode.Binding(var, val);
+ }
+ }
+
+ public final static class DefaultRemoteTraverserSerializer implements SerializerShim<DefaultRemoteTraverser> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final DefaultRemoteTraverser remoteTraverser) {
+ kryo.writeClassAndObject(output, remoteTraverser.get());
+ output.writeLong(remoteTraverser.bulk());
+ }
+
+ @Override
+ public <I extends InputShim> DefaultRemoteTraverser read(final KryoShim<I, ?> kryo, final I input, final Class<DefaultRemoteTraverser> remoteTraverserClass) {
+ final Object o = kryo.readClassAndObject(input);
+ return new DefaultRemoteTraverser<>(o, input.readLong());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java
new file mode 100644
index 0000000..eb940ff
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java
@@ -0,0 +1,380 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.gryo;
+
+import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser;
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.util.AndP;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
+import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.util.function.Lambda;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * This class holds serializers for graph-based objects such as vertices, edges, properties, and paths. These objects
+ * are "detached" using {@link DetachedFactory} before serialization. These serializers present a generalized way to
+ * serialize the implementations of core interfaces. These serializers are versioned and not compatible with Gryo 1.0.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class GryoSerializersV3d0 {
+
+ /**
+ * Serializes any {@link Edge} implementation encountered to a {@link DetachedEdge}.
+ */
+ public final static class EdgeSerializer implements SerializerShim<Edge> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Edge edge) {
+ kryo.writeClassAndObject(output, edge.id());
+ output.writeString(edge.label());
+ kryo.writeClassAndObject(output, edge.inVertex().id());
+ output.writeString(edge.inVertex().label());
+ kryo.writeClassAndObject(output, edge.outVertex().id());
+ output.writeString(edge.outVertex().label());
+
+ final List<Property> properties = IteratorUtils.asList(edge.properties());
+ output.writeInt(properties.size());
+ properties.forEach(p -> {
+ output.writeString(p.key());
+ kryo.writeClassAndObject(output, p.value());
+ });
+ }
+
+ @Override
+ public <I extends InputShim> Edge read(final KryoShim<I, ?> kryo, final I input, final Class<Edge> edgeClass) {
+ final DetachedEdge.Builder builder = DetachedEdge.build();
+ builder.setId(kryo.readClassAndObject(input));
+ builder.setLabel(input.readString());
+
+ final DetachedVertex.Builder inV = DetachedVertex.build();
+ inV.setId(kryo.readClassAndObject(input));
+ inV.setLabel(input.readString());
+ builder.setInV(inV.create());
+
+ final DetachedVertex.Builder outV = DetachedVertex.build();
+ outV.setId(kryo.readClassAndObject(input));
+ outV.setLabel(input.readString());
+ builder.setOutV(outV.create());
+
+ final int numberOfProperties = input.readInt();
+ for (int ix = 0; ix < numberOfProperties; ix ++) {
+ builder.addProperty(new DetachedProperty<>(input.readString(), kryo.readClassAndObject(input)));
+ }
+
+ return builder.create();
+ }
+ }
+
+ /**
+ * Serializes any {@link Vertex} implementation encountered to an {@link DetachedVertex}.
+ */
+ public final static class VertexSerializer implements SerializerShim<Vertex> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Vertex vertex) {
+ kryo.writeClassAndObject(output, vertex.id());
+ output.writeString(vertex.label());
+
+ final List<VertexProperty> properties = IteratorUtils.asList(vertex.properties());
+ output.writeInt(properties.size());
+ properties.forEach(vp -> {
+ kryo.writeClassAndObject(output, vp.id());
+ output.writeString(vp.label());
+ kryo.writeClassAndObject(output, vp.value());
+
+ final List<Property> metaProperties = IteratorUtils.asList(vp.properties());
+ output.writeInt(metaProperties.size());
+ metaProperties.forEach(p -> {
+ output.writeString(p.key());
+ kryo.writeClassAndObject(output, p.value());
+ });
+ });
+ }
+
+ @Override
+ public <I extends InputShim> Vertex read(final KryoShim<I, ?> kryo, final I input, final Class<Vertex> vertexClass) {
+ final DetachedVertex.Builder builder = DetachedVertex.build();
+ builder.setId(kryo.readClassAndObject(input));
+ builder.setLabel(input.readString());
+
+ final int numberOfProperties = input.readInt();
+ for (int ix = 0; ix < numberOfProperties; ix ++) {
+ final DetachedVertexProperty.Builder vpBuilder = DetachedVertexProperty.build();
+ vpBuilder.setId(kryo.readClassAndObject(input));
+ vpBuilder.setLabel(input.readString());
+ vpBuilder.setValue(kryo.readClassAndObject(input));
+
+ final int numberOfMetaProperties = input.readInt();
+ for (int iy = 0; iy < numberOfMetaProperties; iy ++) {
+ vpBuilder.addProperty(new DetachedProperty<>(input.readString(), kryo.readClassAndObject(input)));
+ }
+
+ builder.addProperty(vpBuilder.create());
+ }
+
+ return builder.create();
+ }
+ }
+
+ /**
+ * Serializes any {@link Property} implementation encountered to an {@link DetachedProperty}.
+ */
+ public final static class PropertySerializer implements SerializerShim<Property> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Property property) {
+ output.writeString(property.key());
+ kryo.writeClassAndObject(output, property.value());
+ kryo.writeClassAndObject(output, property.element().id());
+ output.writeString(property.element().label());
+ }
+
+ @Override
+ public <I extends InputShim> Property read(final KryoShim<I, ?> kryo, final I input, final Class<Property> propertyClass) {
+ return new DetachedProperty<>(input.readString(), kryo.readClassAndObject(input),
+ DetachedVertex.build().setId(kryo.readClassAndObject(input)).setLabel(input.readString()).create());
+ }
+ }
+
+ /**
+ * Serializes any {@link VertexProperty} implementation encountered to an {@link DetachedVertexProperty}.
+ */
+ public final static class VertexPropertySerializer implements SerializerShim<VertexProperty> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final VertexProperty vertexProperty) {
+ kryo.writeClassAndObject(output, vertexProperty.id());
+ output.writeString(vertexProperty.label());
+ kryo.writeClassAndObject(output, vertexProperty.value());
+ kryo.writeClassAndObject(output, vertexProperty.element().id());
+ output.writeString(vertexProperty.element().label());
+
+ final List<Property> metaProperties = IteratorUtils.asList(vertexProperty.properties());
+ output.writeInt(metaProperties.size());
+ metaProperties.forEach(p -> {
+ output.writeString(p.key());
+ kryo.writeClassAndObject(output, p.value());
+ });
+ }
+
+ @Override
+ public <I extends InputShim> VertexProperty read(final KryoShim<I, ?> kryo, final I input, final Class<VertexProperty> vertexPropertyClass) {
+ final DetachedVertexProperty.Builder vpBuilder = DetachedVertexProperty.build();
+ vpBuilder.setId(kryo.readClassAndObject(input));
+ vpBuilder.setLabel(input.readString());
+ vpBuilder.setValue(kryo.readClassAndObject(input));
+
+ final DetachedVertex.Builder host = DetachedVertex.build();
+ host.setId(kryo.readClassAndObject(input));
+ host.setLabel(input.readString());
+ vpBuilder.setV(host.create());
+
+ final int numberOfMetaProperties = input.readInt();
+ for (int iy = 0; iy < numberOfMetaProperties; iy ++) {
+ vpBuilder.addProperty(new DetachedProperty<>(input.readString(), kryo.readClassAndObject(input)));
+ }
+
+ return vpBuilder.create();
+ }
+ }
+
+ /**
+ * Serializes any {@link Path} implementation encountered to an {@link DetachedPath}.
+ */
+ public final static class PathSerializer implements SerializerShim<Path> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Path path) {
+ kryo.writeClassAndObject(output, DetachedFactory.detach(path, false));
+ }
+
+ @Override
+ public <I extends InputShim> Path read(final KryoShim<I, ?> kryo, final I input, final Class<Path> pathClass) {
+ return (Path) kryo.readClassAndObject(input);
+ }
+ }
+
+ public final static class BytecodeSerializer implements SerializerShim<Bytecode> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode bytecode) {
+ writeInstructions(kryo, output, bytecode.getSourceInstructions());
+ writeInstructions(kryo, output, bytecode.getStepInstructions());
+ }
+
+ @Override
+ public <I extends InputShim> Bytecode read(final KryoShim<I, ?> kryo, final I input, final Class<Bytecode> clazz) {
+ final Bytecode bytecode = new Bytecode();
+ final int sourceInstructionCount = input.readInt();
+ for (int ix = 0; ix < sourceInstructionCount; ix++) {
+ final String operator = input.readString();
+ final Object[] args = operator.equals(TraversalSource.Symbols.withoutStrategies) ?
+ kryo.readObject(input, Class[].class) :
+ kryo.readObject(input, Object[].class);
+ bytecode.addSource(operator, args);
+ }
+
+ final int stepInstructionCount = input.readInt();
+ for (int ix = 0; ix < stepInstructionCount; ix++) {
+ final String operator = input.readString();
+ final Object[] args = kryo.readObject(input, Object[].class);
+ bytecode.addStep(operator, args);
+ }
+
+ return bytecode;
+ }
+
+ private static <O extends OutputShim> void writeInstructions(final KryoShim<?, O> kryo, final O output,
+ final List<Bytecode.Instruction> instructions) {
+ output.writeInt(instructions.size());
+ for (Bytecode.Instruction inst : instructions) {
+ output.writeString(inst.getOperator());
+ kryo.writeObject(output, inst.getArguments());
+ }
+ }
+ }
+
+ public final static class PSerializer implements SerializerShim<P> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final P p) {
+ output.writeString(p instanceof ConnectiveP ?
+ (p instanceof AndP ? "and" : "or") :
+ p.getBiPredicate().toString());
+ if (p instanceof ConnectiveP || p.getValue() instanceof Collection) {
+ output.writeByte((byte) 0);
+ final Collection<?> coll = p instanceof ConnectiveP ?
+ ((ConnectiveP<?>) p).getPredicates() : (Collection) p.getValue();
+ output.writeInt(coll.size());
+ coll.forEach(v -> kryo.writeClassAndObject(output, v));
+ } else {
+ output.writeByte((byte) 1);
+ kryo.writeClassAndObject(output, p.getValue());
+ }
+ }
+
+ @Override
+ public <I extends InputShim> P read(final KryoShim<I, ?> kryo, final I input, final Class<P> clazz) {
+ final String predicate = input.readString();
+ final boolean isCollection = input.readByte() == (byte) 0;
+ final Object value;
+ if (isCollection) {
+ value = new ArrayList();
+ final int size = input.readInt();
+ for (int ix = 0; ix < size; ix++) {
+ ((List) value).add(kryo.readClassAndObject(input));
+ }
+ } else {
+ value = kryo.readClassAndObject(input);
+ }
+
+ try {
+ if (predicate.equals("and") || predicate.equals("or"))
+ return predicate.equals("and") ? new AndP((List<P>) value) : new OrP((List<P>) value);
+ else if (value instanceof Collection) {
+ if (predicate.equals("between"))
+ return P.between(((List) value).get(0), ((List) value).get(1));
+ else if (predicate.equals("inside"))
+ return P.inside(((List) value).get(0), ((List) value).get(1));
+ else if (predicate.equals("outside"))
+ return P.outside(((List) value).get(0), ((List) value).get(1));
+ else if (predicate.equals("within"))
+ return P.within((Collection) value);
+ else if (predicate.equals("without"))
+ return P.without((Collection) value);
+ else
+ return (P) P.class.getMethod(predicate, Collection.class).invoke(null, (Collection) value);
+ } else
+ return (P) P.class.getMethod(predicate, Object.class).invoke(null, value);
+ } catch (final Exception e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+ }
+
+ public final static class LambdaSerializer implements SerializerShim<Lambda> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Lambda lambda) {
+ output.writeString(lambda.getLambdaScript());
+ output.writeString(lambda.getLambdaLanguage());
+ output.writeInt(lambda.getLambdaArguments());
+ }
+
+ @Override
+ public <I extends InputShim> Lambda read(final KryoShim<I, ?> kryo, final I input, final Class<Lambda> clazz) {
+ final String script = input.readString();
+ final String language = input.readString();
+ final int arguments = input.readInt();
+ //
+ if (-1 == arguments || arguments > 2)
+ return new Lambda.UnknownArgLambda(script, language, arguments);
+ else if (0 == arguments)
+ return new Lambda.ZeroArgLambda<>(script, language);
+ else if (1 == arguments)
+ return new Lambda.OneArgLambda<>(script, language);
+ else
+ return new Lambda.TwoArgLambda<>(script, language);
+ }
+ }
+
+ public final static class BindingSerializer implements SerializerShim<Bytecode.Binding> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode.Binding binding) {
+ output.writeString(binding.variable());
+ kryo.writeClassAndObject(output, binding.value());
+ }
+
+ @Override
+ public <I extends InputShim> Bytecode.Binding read(final KryoShim<I, ?> kryo, final I input, final Class<Bytecode.Binding> clazz) {
+ final String var = input.readString();
+ final Object val = kryo.readClassAndObject(input);
+ return new Bytecode.Binding(var, val);
+ }
+ }
+
+ public final static class DefaultRemoteTraverserSerializer implements SerializerShim<DefaultRemoteTraverser> {
+ @Override
+ public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final DefaultRemoteTraverser remoteTraverser) {
+ kryo.writeClassAndObject(output, remoteTraverser.get());
+ output.writeLong(remoteTraverser.bulk());
+ }
+
+ @Override
+ public <I extends InputShim> DefaultRemoteTraverser read(final KryoShim<I, ?> kryo, final I input, final Class<DefaultRemoteTraverser> remoteTraverserClass) {
+ final Object o = kryo.readClassAndObject(input);
+ return new DefaultRemoteTraverser<>(o, input.readLong());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
index b524cbc..c0ed3e5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
@@ -147,6 +147,7 @@ import java.util.TreeMap;
import java.util.TreeSet;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Supplier;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
@@ -158,6 +159,13 @@ public enum GryoVersion {
private final String versionNumber;
private final List<TypeRegistration<?>> registrations;
+ /**
+ * Creates a new {@link GryoVersion}.
+ *
+ * @param versionNumber the user facing string representation of the version which should follow an {@code x.y}
+ * pattern
+ * @param registrations the list of registrations for this version
+ */
GryoVersion(final String versionNumber, final List<TypeRegistration<?>> registrations) {
// Validate the default registrations
// For justification of these default registration rules, see TinkerPopKryoRegistrator
@@ -173,6 +181,7 @@ public enum GryoVersion {
throw new IllegalStateException(msg);
}
}
+
this.versionNumber = versionNumber;
this.registrations = registrations;
}
@@ -234,8 +243,8 @@ public enum GryoVersion {
add(GryoTypeReg.of(LinkedList.class, 116));
add(GryoTypeReg.of(Types.LINKED_HASH_MAP_ENTRY_CLASS, 15));
add(GryoTypeReg.of(Locale.class, 22));
- add(GryoTypeReg.of(StringBuffer.class, 43));
- add(GryoTypeReg.of(StringBuilder.class, 44));
+// add(GryoTypeReg.of(StringBuffer.class, 43));
+// add(GryoTypeReg.of(StringBuilder.class, 44));
add(GryoTypeReg.of(T.class, 48));
add(GryoTypeReg.of(TimeZone.class, 42));
add(GryoTypeReg.of(TreeMap.class, 45));
@@ -249,19 +258,19 @@ public enum GryoVersion {
add(GryoTypeReg.of(InetAddress.class, 162, new UtilSerializers.InetAddressSerializer()));
add(GryoTypeReg.of(ByteBuffer.class, 163, new UtilSerializers.ByteBufferSerializer()));
- add(GryoTypeReg.of(ReferenceEdge.class, 81));
- add(GryoTypeReg.of(ReferenceVertexProperty.class, 82));
- add(GryoTypeReg.of(ReferenceProperty.class, 83));
- add(GryoTypeReg.of(ReferenceVertex.class, 84));
- add(GryoTypeReg.of(ReferencePath.class, 85));
+// add(GryoTypeReg.of(ReferenceEdge.class, 81));
+// add(GryoTypeReg.of(ReferenceVertexProperty.class, 82));
+// add(GryoTypeReg.of(ReferenceProperty.class, 83));
+// add(GryoTypeReg.of(ReferenceVertex.class, 84));
+// add(GryoTypeReg.of(ReferencePath.class, 85));
add(GryoTypeReg.of(StarGraph.class, 86, new StarGraphSerializer(Direction.BOTH, new GraphFilter())));
- add(GryoTypeReg.of(Edge.class, 65, new GryoSerializers.EdgeSerializer()));
- add(GryoTypeReg.of(Vertex.class, 66, new GryoSerializers.VertexSerializer()));
- add(GryoTypeReg.of(Property.class, 67, new GryoSerializers.PropertySerializer()));
- add(GryoTypeReg.of(VertexProperty.class, 68, new GryoSerializers.VertexPropertySerializer()));
- add(GryoTypeReg.of(Path.class, 59, new GryoSerializers.PathSerializer()));
+ add(GryoTypeReg.of(Edge.class, 65, new GryoSerializersV3d0.EdgeSerializer()));
+ add(GryoTypeReg.of(Vertex.class, 66, new GryoSerializersV3d0.VertexSerializer()));
+ add(GryoTypeReg.of(Property.class, 67, new GryoSerializersV3d0.PropertySerializer()));
+ add(GryoTypeReg.of(VertexProperty.class, 68, new GryoSerializersV3d0.VertexPropertySerializer()));
+ add(GryoTypeReg.of(Path.class, 59, new GryoSerializersV3d0.PathSerializer()));
// skip 55
add(GryoTypeReg.of(B_O_Traverser.class, 75));
add(GryoTypeReg.of(O_Traverser.class, 76));
@@ -272,12 +281,12 @@ public enum GryoVersion {
add(GryoTypeReg.of(LP_O_OB_S_SE_SL_Traverser.class, 90));
add(GryoTypeReg.of(LP_O_OB_P_S_SE_SL_Traverser.class, 91));
add(GryoTypeReg.of(ProjectedTraverser.class, 168));
- add(GryoTypeReg.of(DefaultRemoteTraverser.class, 123, new GryoSerializers.DefaultRemoteTraverserSerializer()));
+ add(GryoTypeReg.of(DefaultRemoteTraverser.class, 123, new GryoSerializersV3d0.DefaultRemoteTraverserSerializer()));
- add(GryoTypeReg.of(Bytecode.class, 122, new GryoSerializers.BytecodeSerializer()));
- add(GryoTypeReg.of(P.class, 124, new GryoSerializers.PSerializer()));
- add(GryoTypeReg.of(Lambda.class, 125, new GryoSerializers.LambdaSerializer()));
- add(GryoTypeReg.of(Bytecode.Binding.class, 126, new GryoSerializers.BindingSerializer()));
+ add(GryoTypeReg.of(Bytecode.class, 122, new GryoSerializersV3d0.BytecodeSerializer()));
+ add(GryoTypeReg.of(P.class, 124, new GryoSerializersV3d0.PSerializer()));
+ add(GryoTypeReg.of(Lambda.class, 125, new GryoSerializersV3d0.LambdaSerializer()));
+ add(GryoTypeReg.of(Bytecode.Binding.class, 126, new GryoSerializersV3d0.BindingSerializer()));
add(GryoTypeReg.of(Order.class, 127));
add(GryoTypeReg.of(Scope.class, 128));
add(GryoTypeReg.of(VertexProperty.Cardinality.class, 131));
@@ -430,11 +439,11 @@ public enum GryoVersion {
add(GryoTypeReg.of(StarGraph.class, 86, new StarGraphSerializer(Direction.BOTH, new GraphFilter())));
- add(GryoTypeReg.of(Edge.class, 65, new GryoSerializers.EdgeSerializer()));
- add(GryoTypeReg.of(Vertex.class, 66, new GryoSerializers.VertexSerializer()));
- add(GryoTypeReg.of(Property.class, 67, new GryoSerializers.PropertySerializer()));
- add(GryoTypeReg.of(VertexProperty.class, 68, new GryoSerializers.VertexPropertySerializer()));
- add(GryoTypeReg.of(Path.class, 59, new GryoSerializers.PathSerializer()));
+ add(GryoTypeReg.of(Edge.class, 65, new GryoSerializersV1d0.EdgeSerializer()));
+ add(GryoTypeReg.of(Vertex.class, 66, new GryoSerializersV1d0.VertexSerializer()));
+ add(GryoTypeReg.of(Property.class, 67, new GryoSerializersV1d0.PropertySerializer()));
+ add(GryoTypeReg.of(VertexProperty.class, 68, new GryoSerializersV1d0.VertexPropertySerializer()));
+ add(GryoTypeReg.of(Path.class, 59, new GryoSerializersV1d0.PathSerializer()));
// skip 55
add(GryoTypeReg.of(B_O_Traverser.class, 75));
add(GryoTypeReg.of(O_Traverser.class, 76));
@@ -445,12 +454,12 @@ public enum GryoVersion {
add(GryoTypeReg.of(LP_O_OB_S_SE_SL_Traverser.class, 90));
add(GryoTypeReg.of(LP_O_OB_P_S_SE_SL_Traverser.class, 91));
add(GryoTypeReg.of(ProjectedTraverser.class, 164));
- add(GryoTypeReg.of(DefaultRemoteTraverser.class, 123, new GryoSerializers.DefaultRemoteTraverserSerializer()));
+ add(GryoTypeReg.of(DefaultRemoteTraverser.class, 123, new GryoSerializersV1d0.DefaultRemoteTraverserSerializer()));
- add(GryoTypeReg.of(Bytecode.class, 122, new GryoSerializers.BytecodeSerializer()));
- add(GryoTypeReg.of(P.class, 124, new GryoSerializers.PSerializer()));
- add(GryoTypeReg.of(Lambda.class, 125, new GryoSerializers.LambdaSerializer()));
- add(GryoTypeReg.of(Bytecode.Binding.class, 126, new GryoSerializers.BindingSerializer()));
+ add(GryoTypeReg.of(Bytecode.class, 122, new GryoSerializersV1d0.BytecodeSerializer()));
+ add(GryoTypeReg.of(P.class, 124, new GryoSerializersV1d0.PSerializer()));
+ add(GryoTypeReg.of(Lambda.class, 125, new GryoSerializersV1d0.LambdaSerializer()));
+ add(GryoTypeReg.of(Bytecode.Binding.class, 126, new GryoSerializersV1d0.BindingSerializer()));
add(GryoTypeReg.of(Order.class, 127));
add(GryoTypeReg.of(Scope.class, 128));
add(GryoTypeReg.of(VertexProperty.Cardinality.class, 131));
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
index 3f0b670..25bdbae 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
@@ -169,6 +169,7 @@ public class DetachedVertex extends DetachedElement<Vertex> implements Vertex {
public Builder addProperty(final DetachedVertexProperty vp) {
v.internalAddProperty(vp);
+ vp.internalSetVertex(v);
return this;
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexProperty.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexProperty.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexProperty.java
index 256fa7d..d9b917c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexProperty.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexProperty.java
@@ -132,6 +132,10 @@ public class DetachedVertexProperty<V> extends DetachedElement<VertexProperty<V>
this.properties.put(p.key(), Collections.singletonList(p));
}
+ public void internalSetVertex(final DetachedVertex vertex) {
+ this.vertex = vertex;
+ }
+
/**
* Provides a way to construct an immutable {@link DetachedEdge}.
*/
@@ -146,6 +150,11 @@ public class DetachedVertexProperty<V> extends DetachedElement<VertexProperty<V>
this.vp = e;
}
+ public Builder setV(final DetachedVertex v) {
+ vp.internalSetVertex(v);
+ return this;
+ }
+
public Builder addProperty(final Property p) {
vp.internalAddProperty(p);
return this;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
index 9b9f1f3..99a2e54 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
@@ -19,6 +19,7 @@
package org.apache.tinkerpop.gremlin.driver.ser;
import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoVersion;
import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
/**
@@ -39,7 +40,7 @@ public final class GryoMessageSerializerV1d0 extends AbstractGryoMessageSerializ
* Creates an instance with a standard {@link GryoMapper} instance.
*/
public GryoMessageSerializerV1d0() {
- super(GryoMapper.build().create());
+ super(GryoMapper.build().version(GryoVersion.V1_0).create());
}
/**
@@ -47,7 +48,7 @@ public final class GryoMessageSerializerV1d0 extends AbstractGryoMessageSerializ
* builder will be overridden by {@link #configure} if it is called.
*/
public GryoMessageSerializerV1d0(final GryoMapper.Builder kryo) {
- super(kryo.create());
+ super(kryo.version(GryoVersion.V1_0).create());
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV3d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV3d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV3d0.java
new file mode 100644
index 0000000..85b79a9
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV3d0.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.driver.ser;
+
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoVersion;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+
+/**
+ * The standard Gryo serializer that uses "detached" graph elements during serialization. Detached elements such as
+ * {@link DetachedVertex} include the label and the properties associated with it which could be more costly for
+ * network serialization purposes.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class GryoMessageSerializerV3d0 extends AbstractGryoMessageSerializerV3d0 {
+
+ private static final String MIME_TYPE = SerTokens.MIME_GRYO_V3D0;
+ private static final String MIME_TYPE_STRINGD = SerTokens.MIME_GRYO_V3D0 + "-stringd";
+
+ /**
+ * Creates an instance with a standard {@link GryoMapper} instance.
+ */
+ public GryoMessageSerializerV3d0() {
+ super(GryoMapper.build().version(GryoVersion.V3_0).create());
+ }
+
+ /**
+ * Creates an instance with a standard {@link GryoMapper} instance. Note that the instance created by the supplied
+ * builder will be overridden by {@link #configure} if it is called.
+ */
+ public GryoMessageSerializerV3d0(final GryoMapper.Builder kryo) {
+ super(kryo.version(GryoVersion.V3_0).create());
+ }
+
+ @Override
+ public String[] mimeTypesSupported() {
+ return new String[]{serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE};
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
index f342a57..f0ab1e8 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
@@ -41,5 +41,6 @@ public final class SerTokens {
public static final String MIME_GRAPHSON_V2D0 = "application/vnd.gremlin-v2.0+json";
public static final String MIME_GRAPHSON_V3D0 = "application/vnd.gremlin-v3.0+json";
public static final String MIME_GRYO_V1D0 = "application/vnd.gremlin-v1.0+gryo";
+ public static final String MIME_GRYO_V3D0 = "application/vnd.gremlin-v3.0+gryo";
public static final String MIME_GRYO_LITE_V1D0 = "application/vnd.gremlin-v1.0+gryo-lite";
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-server/conf/gremlin-server.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server.yaml b/gremlin-server/conf/gremlin-server.yaml
index f86fec4..7961217 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -29,6 +29,7 @@ scriptEngines: {
org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}}
serializers:
- { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+gryo
+ - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }} # application/vnd.gremlin-v3.0+gryo
- { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+gryo-lite
- { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }} # application/vnd.gremlin-v1.0+gryo-stringd
- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/edge-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/edge-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/edge-v3d0.kryo
index d2a2492..b58bff1 100644
Binary files a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/edge-v3d0.kryo and b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/edge-v3d0.kryo differ
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/property-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/property-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/property-v3d0.kryo
index 133ac6f..a7d9c27 100644
--- a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/property-v3d0.kryo
+++ b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/property-v3d0.kryo
@@ -1 +1 @@
-sinc��
\ No newline at end of file
+sinc��develop�
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/standardresult-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/standardresult-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/standardresult-v3d0.kryo
index d59d6c1..b1a2558 100644
Binary files a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/standardresult-v3d0.kryo and b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/standardresult-v3d0.kryo differ
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/traverser-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/traverser-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/traverser-v3d0.kryo
index cc019f0..9ec67de 100644
Binary files a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/traverser-v3d0.kryo and b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/traverser-v3d0.kryo differ
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/tree-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/tree-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/tree-v3d0.kryo
index 682529f..94d1357 100644
Binary files a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/tree-v3d0.kryo and b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/tree-v3d0.kryo differ
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertex-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertex-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertex-v3d0.kryo
index c58ac46..eb46417 100644
Binary files a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertex-v3d0.kryo and b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertex-v3d0.kryo differ
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertexproperty-v3d0.kryo
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertexproperty-v3d0.kryo b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertexproperty-v3d0.kryo
index 3b74daa..3139408 100644
Binary files a/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertexproperty-v3d0.kryo and b/gremlin-tools/gremlin-io-test/src/test/resources/org/apache/tinkerpop/gremlin/structure/io/gryo/_3_3_0/vertexproperty-v3d0.kryo differ
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87ca1e35/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java
index 14212dc..7a7f29b 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java
@@ -40,7 +40,7 @@ import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.Un
import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializers;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV1d0;
import org.apache.tinkerpop.gremlin.structure.io.gryo.TypeRegistration;
import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedSerializerAdapter;
@@ -210,23 +210,23 @@ public class GryoRegistrator implements KryoRegistrator {
m.put(VertexWritable.class, new UnshadedSerializerAdapter<>(new VertexWritableSerializer()));
m.put(ObjectWritable.class, new UnshadedSerializerAdapter<>(new ObjectWritableSerializer<>()));
//
- m.put(HadoopVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexSerializer()));
- m.put(HadoopVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexPropertySerializer()));
- m.put(HadoopProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PropertySerializer()));
- m.put(HadoopEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializers.EdgeSerializer()));
+ m.put(HadoopVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.VertexSerializer()));
+ m.put(HadoopVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.VertexPropertySerializer()));
+ m.put(HadoopProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.PropertySerializer()));
+ m.put(HadoopEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.EdgeSerializer()));
//
- m.put(ComputerGraph.ComputerVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexSerializer()));
- m.put(ComputerGraph.ComputerVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexPropertySerializer()));
- m.put(ComputerGraph.ComputerProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PropertySerializer()));
- m.put(ComputerGraph.ComputerEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializers.EdgeSerializer()));
+ m.put(ComputerGraph.ComputerVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.VertexSerializer()));
+ m.put(ComputerGraph.ComputerVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.VertexPropertySerializer()));
+ m.put(ComputerGraph.ComputerProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.PropertySerializer()));
+ m.put(ComputerGraph.ComputerEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.EdgeSerializer()));
//
- m.put(StarGraph.StarEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializers.EdgeSerializer()));
- m.put(StarGraph.StarVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexSerializer()));
- m.put(StarGraph.StarProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PropertySerializer()));
- m.put(StarGraph.StarVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexPropertySerializer()));
+ m.put(StarGraph.StarEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.EdgeSerializer()));
+ m.put(StarGraph.StarVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.VertexSerializer()));
+ m.put(StarGraph.StarProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.PropertySerializer()));
+ m.put(StarGraph.StarVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.VertexPropertySerializer()));
//
- m.put(MutablePath.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PathSerializer()));
- m.put(ImmutablePath.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PathSerializer()));
+ m.put(MutablePath.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.PathSerializer()));
+ m.put(ImmutablePath.class, new UnshadedSerializerAdapter<>(new GryoSerializersV1d0.PathSerializer()));
//
m.put(CompactBuffer[].class, null);
// TODO: VoidSerializer is a default serializer and thus, may not be needed (if it is, you can't use FieldSerializer)