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-1682 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)