/* * 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 java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import com.caucho.hessian.io.Hessian2Input; import com.caucho.hessian.io.Hessian2Output; import com.weibo.api.motan.codec.Serialization; import com.weibo.api.motan.core.extension.SpiMeta; /** * hession2 序列化,要求序列化的对象实现 java.io.Serializable 接口 * * @author maijunsheng * @version 创建时间:2013-5-30 * */ @SpiMeta(name = "hessian2") public class Hessian2Serialization implements Serialization { @Override public byte[] serialize(Object data) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Hessian2Output out = new Hessian2Output(bos); out.writeObject(data); out.flush(); return bos.toByteArray(); } @SuppressWarnings("unchecked") @Override public <T> T deserialize(byte[] data, Class<T> clz) throws IOException { Hessian2Input input = new Hessian2Input(new ByteArrayInputStream(data)); return (T) input.readObject(clz); } }