diff --git a/did-core/pom.xml b/did-core/pom.xml index cef3a7b..b704604 100644 --- a/did-core/pom.xml +++ b/did-core/pom.xml @@ -31,6 +31,12 @@ hessian + + junit + junit + test + + diff --git a/did-core/src/main/java/io/github/ehlxr/did/adapter/Message.java b/did-core/src/main/java/io/github/ehlxr/did/adapter/Message.java index 70f83c8..ca02654 100644 --- a/did-core/src/main/java/io/github/ehlxr/did/adapter/Message.java +++ b/did-core/src/main/java/io/github/ehlxr/did/adapter/Message.java @@ -87,22 +87,11 @@ public class Message implements Serializable { public T getContent() { return content; } - // public int getLength() { - // return getContent().length; - // } - - // public byte[] getContent() { - // return Try.of(SerializerHolder.get()::serializer).apply(content).get(); - // } public void setContent(T content) { this.content = content; } - // public T content(Class clazz) { - // return SerializerHolder.get().deserializer(getContent(), clazz); - // } - @Override public String toString() { return "Message{" + diff --git a/did-core/src/main/java/io/github/ehlxr/did/serializer/impl/ProtostuffSerializer.java b/did-core/src/main/java/io/github/ehlxr/did/serializer/impl/ProtostuffSerializer.java index 7c54ec5..14316a7 100644 --- a/did-core/src/main/java/io/github/ehlxr/did/serializer/impl/ProtostuffSerializer.java +++ b/did-core/src/main/java/io/github/ehlxr/did/serializer/impl/ProtostuffSerializer.java @@ -58,9 +58,7 @@ public class ProtostuffSerializer implements Serializer { return ProtostuffIOUtil.toByteArray(obj, schema, buffer); }).apply(buffer).trap(e -> { throw new IllegalStateException(e.getMessage(), e); - }).andFinally(b -> { - ((LinkedBuffer) b).clear(); - }).get(); + }).andFinally(b -> ((LinkedBuffer) b).clear()).get(); } @Override diff --git a/did-core/src/test/java/io/github/ehlxr/did/SerializerTest.java b/did-core/src/test/java/io/github/ehlxr/did/SerializerTest.java new file mode 100644 index 0000000..3f7b3d3 --- /dev/null +++ b/did-core/src/test/java/io/github/ehlxr/did/SerializerTest.java @@ -0,0 +1,92 @@ +/* + * The MIT License (MIT) + * + * Copyright © 2020 xrv + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package io.github.ehlxr.did; + +import io.github.ehlxr.did.extension.ExtensionLoader; +import io.github.ehlxr.did.serializer.Serializer; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author ehlxr + * @since 2021-02-13 11:59. + */ +public class SerializerTest { + private static final Logger logger = LoggerFactory.getLogger(SerializerTest.class); + private SdkProto message; + + @Before + public void init() { + message = SdkProto.newBuilder().did(238231232112121L).build(); + message.rqid(); + } + + @Test + public void jdkTest() { + Serializer serializer = ExtensionLoader.getExtensionLoader(Serializer.class).getExtension("jdk"); + + long b1 = System.currentTimeMillis(); + byte[] bytes = serializer.serializer(message); + long e1 = System.currentTimeMillis(); + logger.info("jdk serialize result length = {}, cost time:{}", bytes.length, (e1 - b1)); + + long b2 = System.currentTimeMillis(); + SdkProto data = serializer.deserializer(bytes, SdkProto.class); + long e2 = System.currentTimeMillis(); + logger.info("jdk deserialize result:{}, cost time:{}", data, (e2 - b2)); + } + + @Test + public void hessianTest() { + Serializer serializer = ExtensionLoader.getExtensionLoader(Serializer.class).getExtension("hessian"); + + long b1 = System.currentTimeMillis(); + byte[] bytes = serializer.serializer(message); + long e1 = System.currentTimeMillis(); + logger.info("hessian serialize result length = {}, cost time:{}", bytes.length, (e1 - b1)); + + long b2 = System.currentTimeMillis(); + SdkProto data = serializer.deserializer(bytes, SdkProto.class); + long e2 = System.currentTimeMillis(); + logger.info("hessian deserialize result:{}, cost time:{}", data, (e2 - b2)); + } + + @Test + public void protostuffTest() { + Serializer serializer = ExtensionLoader.getExtensionLoader(Serializer.class).getExtension("protostuff"); + + long b1 = System.currentTimeMillis(); + byte[] bytes = serializer.serializer(message); + long e1 = System.currentTimeMillis(); + logger.info("protostuff serialize result length = {}, cost time:{}", bytes.length, (e1 - b1)); + + long b2 = System.currentTimeMillis(); + SdkProto data = serializer.deserializer(bytes, SdkProto.class); + long e2 = System.currentTimeMillis(); + logger.info("protostuff deserialize result:{}, cost time:{}", data, (e2 - b2)); + } +}