You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/03/24 21:23:38 UTC
incubator-tinkerpop git commit: The GryoSerializer is coming to a
town near you with him homeboy GryoKryo. Shading is lame.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 84d1ad273 -> 95a33cf7e
The GryoSerializer is coming to a town near you with him homeboy GryoKryo. Shading is lame.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/95a33cf7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/95a33cf7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/95a33cf7
Branch: refs/heads/master
Commit: 95a33cf7e040dbd487bd674f2be39d5592306d9e
Parents: 84d1ad2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Mar 24 14:23:33 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Mar 24 14:23:33 2015 -0600
----------------------------------------------------------------------
gremlin-core/pom.xml | 2 +-
.../gremlin/structure/io/gryo/GryoInput.java | 1 +
.../structure/io/gryo/GryoSerializer.java | 60 ++++++++++++++++++++
.../driver/ser/GryoMessageSerializerV1d0.java | 44 +++++++-------
.../driver/ser/JsonBuilderGryoSerializer.java | 14 ++---
hadoop-gremlin/pom.xml | 4 --
6 files changed, 91 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-core/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index 4ba209a..e449b1a 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -133,7 +133,7 @@ limitations under the License.
<goal>shade</goal>
</goals>
<configuration>
- <createDependencyReducedPom>true</createDependencyReducedPom>
+ <createDependencyReducedPom>false</createDependencyReducedPom>
<artifactSet>
<includes>
<include>com.esotericsoftware.kryo:*</include>
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
index 6187463..2dbfd7b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoInput.java
@@ -28,6 +28,7 @@ import java.io.InputStream;
public class GryoInput extends Input {
public GryoInput() {
+ super();
}
public GryoInput(final int bufferSize) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java
new file mode 100644
index 0000000..d8802c0
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializer.java
@@ -0,0 +1,60 @@
+/*
+ * 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 com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.Serializer;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class GryoSerializer<T> extends Serializer<T> {
+
+ public GryoSerializer() {
+ super();
+ }
+
+ public GryoSerializer(boolean acceptsNull) {
+ super(acceptsNull);
+ }
+
+
+ public GryoSerializer(boolean acceptsNull, boolean immutable) {
+ super(acceptsNull, immutable);
+ }
+
+
+ public abstract void write(final GryoKryo kryo, final GryoOutput output, final T object);
+
+
+ public abstract T read(final GryoKryo kryo, final GryoInput input, final Class<T> type);
+
+
+ @Override
+ public final void write(final Kryo kryo, final Output output, final T object) {
+ this.write((GryoKryo) kryo, (GryoOutput) output, object);
+ }
+
+ @Override
+ public final T read(final Kryo kryo, final Input input, final Class<T> type) {
+ return this.read((GryoKryo) kryo, (GryoInput) input, type);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/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 178fa24..f8ebd5a 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
@@ -18,19 +18,19 @@
*/
package org.apache.tinkerpop.gremlin.driver.ser;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Kryo;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Serializer;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Input;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Output;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.util.ReferenceCountUtil;
import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoInput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoKryo;
import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.util.ReferenceCountUtil;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoOutput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializer;
import org.javatuples.Pair;
import java.io.ByteArrayOutputStream;
@@ -51,9 +51,9 @@ import java.util.stream.Collectors;
*/
public class GryoMessageSerializerV1d0 implements MessageSerializer {
private GryoMapper gryoMapper;
- private ThreadLocal<Kryo> kryoThreadLocal = new ThreadLocal<Kryo>() {
+ private ThreadLocal<GryoKryo> kryoThreadLocal = new ThreadLocal<GryoKryo>() {
@Override
- protected Kryo initialValue() {
+ protected GryoKryo initialValue() {
return gryoMapper.createMapper();
}
};
@@ -128,7 +128,7 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
}
if (!classNameList.isEmpty()) {
- final List<Pair<Class, Function<Kryo, Serializer>>> classList = classNameList.stream().map(serializerDefinition -> {
+ final List<Pair<Class, Function<GryoKryo, GryoSerializer>>> classList = classNameList.stream().map(serializerDefinition -> {
String className;
Optional<String> serializerName;
if (serializerDefinition.contains(";")) {
@@ -145,20 +145,20 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
try {
final Class clazz = Class.forName(className);
- final Serializer serializer;
+ final GryoSerializer serializer;
if (serializerName.isPresent()) {
final Class serializerClazz = Class.forName(serializerName.get());
- serializer = (Serializer) serializerClazz.newInstance();
+ serializer = (GryoSerializer) serializerClazz.newInstance();
} else
serializer = null;
- return Pair.<Class, Function<Kryo, Serializer>>with(clazz, kryo -> serializer);
+ return Pair.<Class, Function<GryoKryo, GryoSerializer>>with(clazz, kryo -> serializer);
} catch (Exception ex) {
throw new IllegalStateException("Class could not be found", ex);
}
}).collect(Collectors.toList());
- classList.forEach(c -> builder.addCustom(c.getValue0(), c.getValue1()));
+ classList.forEach(c -> builder.addCustom(c.getValue0(), (Function) c.getValue1()));
}
this.serializeToString = Boolean.parseBoolean(config.getOrDefault(TOKEN_SERIALIZE_RESULT_TO_STRING, "false").toString());
@@ -174,10 +174,10 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
@Override
public ResponseMessage deserializeResponse(final ByteBuf msg) throws SerializationException {
try {
- final Kryo kryo = kryoThreadLocal.get();
+ final GryoKryo kryo = kryoThreadLocal.get();
final byte[] payload = new byte[msg.readableBytes()];
msg.readBytes(payload);
- try (final Input input = new Input(payload)) {
+ try (final GryoInput input = new GryoInput(payload)) {
final Map<String, Object> responseData = (Map<String, Object>) kryo.readClassAndObject(input);
final Map<String, Object> status = (Map<String, Object>) responseData.get(SerTokens.TOKEN_STATUS);
final Map<String, Object> result = (Map<String, Object>) responseData.get(SerTokens.TOKEN_RESULT);
@@ -213,9 +213,9 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
message.put(SerTokens.TOKEN_RESULT, result);
message.put(SerTokens.TOKEN_REQUEST, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null);
- final Kryo kryo = kryoThreadLocal.get();
+ final GryoKryo kryo = kryoThreadLocal.get();
try (final OutputStream baos = new ByteArrayOutputStream()) {
- final Output output = new Output(baos);
+ final GryoOutput output = new GryoOutput(baos);
kryo.writeClassAndObject(output, message);
final long size = output.total();
@@ -238,10 +238,10 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
@Override
public RequestMessage deserializeRequest(final ByteBuf msg) throws SerializationException {
try {
- final Kryo kryo = kryoThreadLocal.get();
+ final GryoKryo kryo = kryoThreadLocal.get();
final byte[] payload = new byte[msg.readableBytes()];
msg.readBytes(payload);
- try (final Input input = new Input(payload)) {
+ try (final GryoInput input = new GryoInput(payload)) {
final Map<String, Object> requestData = (Map<String, Object>) kryo.readClassAndObject(input);
final RequestMessage.Builder builder = RequestMessage.build((String) requestData.get(SerTokens.TOKEN_OP))
.overrideRequestId((UUID) requestData.get(SerTokens.TOKEN_REQUEST))
@@ -260,9 +260,9 @@ public class GryoMessageSerializerV1d0 implements MessageSerializer {
public ByteBuf serializeRequestAsBinary(final RequestMessage requestMessage, final ByteBufAllocator allocator) throws SerializationException {
ByteBuf encodedMessage = null;
try {
- final Kryo kryo = kryoThreadLocal.get();
+ final GryoKryo kryo = kryoThreadLocal.get();
try (final OutputStream baos = new ByteArrayOutputStream()) {
- final Output output = new Output(baos);
+ final GryoOutput output = new GryoOutput(baos);
final String mimeType = serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE;
output.writeByte(mimeType.length());
output.write(mimeType.getBytes(UTF8));
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
index ff8310f..62f6219 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/JsonBuilderGryoSerializer.java
@@ -18,27 +18,27 @@
*/
package org.apache.tinkerpop.gremlin.driver.ser;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Kryo;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.Serializer;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Input;
-import org.apache.tinkerpop.shaded.kryo_2_24_0.io.Output;
import groovy.json.JsonBuilder;
import groovy.json.JsonSlurper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoInput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoKryo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoOutput;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializer;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
-public class JsonBuilderGryoSerializer extends Serializer<JsonBuilder> {
+public class JsonBuilderGryoSerializer extends GryoSerializer<JsonBuilder> {
final JsonSlurper slurper = new JsonSlurper();
@Override
- public void write(final Kryo kryo, final Output output, final JsonBuilder jsonBuilder) {
+ public void write(final GryoKryo kryo, final GryoOutput output, final JsonBuilder jsonBuilder) {
output.writeString(jsonBuilder.toString());
}
@Override
- public JsonBuilder read(final Kryo kryo, final Input input, final Class<JsonBuilder> jsonBuilderClass) {
+ public JsonBuilder read(final GryoKryo kryo, final GryoInput input, final Class<JsonBuilder> jsonBuilderClass) {
final String jsonString = input.readString();
return new JsonBuilder(slurper.parseText(jsonString));
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/95a33cf7/hadoop-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/pom.xml b/hadoop-gremlin/pom.xml
index d851e5e..a7e039c 100644
--- a/hadoop-gremlin/pom.xml
+++ b/hadoop-gremlin/pom.xml
@@ -141,10 +141,6 @@ limitations under the License.
<artifactId>commons-codec</artifactId>
</exclusion>
<!-- gremlin-core conflicts -->
- <!--<exclusion>
- <groupId>com.esotericsoftware.kryo</groupId>
- <artifactId>kryo</artifactId>
- </exclusion>-->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>