/** * Dianping.com Inc. * Copyright (c) 2003-2013 All Rights Reserved. */ package com.dianping.pigeon.remoting.common.codec.hessian; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import com.caucho.hessian.io.HessianInput; import com.caucho.hessian.io.HessianOutput; import com.dianping.pigeon.remoting.common.codec.AbstractSerializer; import com.dianping.pigeon.remoting.common.exception.SerializationException; /** * @author xiangwu * @Sep 5, 2013 * */ public class Hessian1Serializer extends AbstractSerializer { HessianSerializerFactory sessianSerializerFactory = new HessianSerializerFactory(); @Override public Object deserializeResponse(InputStream is) throws SerializationException { return deserializeRequest(is); } @Override public Object deserializeRequest(InputStream is) throws SerializationException { HessianInput hin = new HessianInput(is); hin.setSerializerFactory(sessianSerializerFactory); try { return hin.readObject(); } catch (Throwable t) { throw new SerializationException(t); } finally { try { hin.close(); } catch (Exception e) { throw new SerializationException(e); } } } @Override public void serializeResponse(OutputStream os, Object obj) throws SerializationException { serializeRequest(os, obj); } @Override public void serializeRequest(OutputStream os, Object obj) throws SerializationException { HessianOutput hout = new HessianOutput(os); hout.setSerializerFactory(sessianSerializerFactory); try { hout.writeObject(obj); hout.flush(); } catch (Throwable t) { throw new SerializationException(t); } finally { try { hout.close(); } catch (IOException e) { throw new SerializationException(e); } } } }