From 86d05c0be83cc91c403b317572ccbb09159e6e63 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 30 Jul 2016 16:08:42 +0800 Subject: [PATCH 1/5] Added hprose serialization support. --- .../serialization-extension/pom.xml | 10 ++++ .../motan/serialize/HproseSerialization.java | 48 +++++++++++++++++++ .../com.weibo.api.motan.codec.Serialization | 17 +++++++ 3 files changed, 75 insertions(+) create mode 100644 motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java create mode 100644 motan-extension/serialization-extension/src/main/resources/META-INF/services/com.weibo.api.motan.codec.Serialization diff --git a/motan-extension/serialization-extension/pom.xml b/motan-extension/serialization-extension/pom.xml index 27383ddbc..1f6806f7f 100644 --- a/motan-extension/serialization-extension/pom.xml +++ b/motan-extension/serialization-extension/pom.xml @@ -24,5 +24,15 @@ UTF-8 + + org.hprose + hprose-java + 2.0.10 + + + com.weibo + motan-core + ${project.version} + diff --git a/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java b/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java new file mode 100644 index 000000000..42b24ebe9 --- /dev/null +++ b/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java @@ -0,0 +1,48 @@ +/* + * Copyright 2009-2016 Weibo, Inc. + * + * Licensed 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 com.weibo.api.motan.serialize; + +import com.weibo.api.motan.codec.Serialization; +import com.weibo.api.motan.core.extension.SpiMeta; +import hprose.io.ByteBufferStream; +import hprose.io.HproseFormatter; +import java.io.IOException; + +/** + * hprose 序列化,要求序列化的对象实现 java.io.Serializable 接口 + * + * @author mabingyao + * @version 创建时间:2016-7-30 + * + */ +@SpiMeta(name = "hprose") +public class HproseSerialization implements Serialization { + + @Override + public byte[] serialize(Object data) throws IOException { + ByteBufferStream stream = HproseFormatter.serialize(data); + byte[] result = stream.toArray(); + stream.close(); + return result; + } + + @SuppressWarnings("unchecked") + @Override + public T deserialize(byte[] data, Class clz) throws IOException { + return HproseFormatter.unserialize(data, clz); + } +} diff --git a/motan-extension/serialization-extension/src/main/resources/META-INF/services/com.weibo.api.motan.codec.Serialization b/motan-extension/serialization-extension/src/main/resources/META-INF/services/com.weibo.api.motan.codec.Serialization new file mode 100644 index 000000000..6a42d9ac1 --- /dev/null +++ b/motan-extension/serialization-extension/src/main/resources/META-INF/services/com.weibo.api.motan.codec.Serialization @@ -0,0 +1,17 @@ +# +# Copyright 2009-2016 Weibo, Inc. +# +# Licensed 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. +# + +com.weibo.api.motan.serialize.HproseSerialization \ No newline at end of file From b0796ba59e771fa5926b891824163a9596c5afe8 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 4 Aug 2016 18:20:41 +0800 Subject: [PATCH 2/5] Update hprose to v2.0.12 --- motan-extension/serialization-extension/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/motan-extension/serialization-extension/pom.xml b/motan-extension/serialization-extension/pom.xml index 1f6806f7f..57c078326 100644 --- a/motan-extension/serialization-extension/pom.xml +++ b/motan-extension/serialization-extension/pom.xml @@ -27,7 +27,7 @@ org.hprose hprose-java - 2.0.10 + 2.0.12 com.weibo From 3865814f0375570ebdb5c2e6dca3eb81667b664f Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 7 Aug 2016 21:25:46 +0800 Subject: [PATCH 3/5] Update hprose to v2.0.15 --- motan-extension/serialization-extension/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/motan-extension/serialization-extension/pom.xml b/motan-extension/serialization-extension/pom.xml index 57c078326..33bb973ed 100644 --- a/motan-extension/serialization-extension/pom.xml +++ b/motan-extension/serialization-extension/pom.xml @@ -27,7 +27,7 @@ org.hprose hprose-java - 2.0.12 + 2.0.15 com.weibo From 99bdf8ec9d4279d01f9627a39751c7e0a391391f Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 11 Aug 2016 13:56:11 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20HproseWriter=20?= =?UTF-8?q?=E5=92=8C=20HproseReader=20=E4=BB=A3=E6=9B=BF=20HproseFormatter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- motan-extension/serialization-extension/pom.xml | 2 +- .../api/motan/serialize/HproseSerialization.java | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/motan-extension/serialization-extension/pom.xml b/motan-extension/serialization-extension/pom.xml index 33bb973ed..c27c01f94 100644 --- a/motan-extension/serialization-extension/pom.xml +++ b/motan-extension/serialization-extension/pom.xml @@ -27,7 +27,7 @@ org.hprose hprose-java - 2.0.15 + 2.0.16 com.weibo diff --git a/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java b/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java index 42b24ebe9..8e5433805 100644 --- a/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java +++ b/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java @@ -19,14 +19,16 @@ import com.weibo.api.motan.codec.Serialization; import com.weibo.api.motan.core.extension.SpiMeta; import hprose.io.ByteBufferStream; -import hprose.io.HproseFormatter; +import hprose.io.HproseReader; +import hprose.io.HproseWriter; import java.io.IOException; /** - * hprose 序列化,要求序列化的对象实现 java.io.Serializable 接口 + * hprose 序列化,不要求序列化的对象实现 java.io.Serializable 接口, + * 但序列化的字段需要是 public 的,或者定义有 public 的 setter 和 getter 方法。 * * @author mabingyao - * @version 创建时间:2016-7-30 + * @version 创建时间:2016-8-11 * */ @SpiMeta(name = "hprose") @@ -34,7 +36,9 @@ public class HproseSerialization implements Serialization { @Override public byte[] serialize(Object data) throws IOException { - ByteBufferStream stream = HproseFormatter.serialize(data); + ByteBufferStream stream = new ByteBufferStream(); + HproseWriter writer = new HproseWriter(stream.getOutputStream()); + writer.serialize(data); byte[] result = stream.toArray(); stream.close(); return result; @@ -43,6 +47,6 @@ public byte[] serialize(Object data) throws IOException { @SuppressWarnings("unchecked") @Override public T deserialize(byte[] data, Class clz) throws IOException { - return HproseFormatter.unserialize(data, clz); + return new HproseReader(data).unserialize(clz); } } From 9f8953a68b0da8a9cc6095b82e17db01bd9b3b7a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 12 Aug 2016 12:11:03 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E5=86=85=E5=AD=98=E5=9B=9E=E6=94=B6=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../motan/serialize/HproseSerialization.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java b/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java index 8e5433805..c0baa8c0c 100644 --- a/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java +++ b/motan-extension/serialization-extension/src/main/java/com/weibo/api/motan/serialize/HproseSerialization.java @@ -36,12 +36,19 @@ public class HproseSerialization implements Serialization { @Override public byte[] serialize(Object data) throws IOException { - ByteBufferStream stream = new ByteBufferStream(); - HproseWriter writer = new HproseWriter(stream.getOutputStream()); - writer.serialize(data); - byte[] result = stream.toArray(); - stream.close(); - return result; + ByteBufferStream stream = null; + try { + stream = new ByteBufferStream(); + HproseWriter writer = new HproseWriter(stream.getOutputStream()); + writer.serialize(data); + byte[] result = stream.toArray(); + return result; + } + finally { + if (stream != null) { + stream.close(); + } + } } @SuppressWarnings("unchecked")