com.ikasoa.rpc.handler.impl.SerializableProtocolHandlerImpl Maven / Gradle / Ivy
Show all versions of ikasoa-rpc Show documentation
package com.ikasoa.rpc.handler.impl;
import com.ikasoa.core.utils.StringUtil;
import com.ikasoa.rpc.handler.ProtocolHandler;
import com.ikasoa.rpc.handler.ReturnData;
import com.ikasoa.rpc.utils.StreamUtil;
import lombok.AllArgsConstructor;
/**
* 转换协议处理器JavaSerializable实现 (BETA)
*
* 使用该实现的对象需要实现java.io.Serializable
接口.
*
* @author Larry
* @version 0.3.3
*/
@AllArgsConstructor
public class SerializableProtocolHandlerImpl implements ProtocolHandler {
private ReturnData resultData;
@Override
@SuppressWarnings("unchecked")
public T strToArg(String str) {
return (T) StreamUtil.bytesToObject(StringUtil.hexStrToBytes(str));
}
@Override
public String argToStr(T arg) {
return StringUtil.bytesToHexStr(StreamUtil.objectToBytes(arg));
}
@Override
public String resultToStr(R result) {
if (result == null)
return String.valueOf(V);
return StringUtil.bytesToHexStr(StreamUtil.objectToBytes(result));
}
@Override
@SuppressWarnings("unchecked")
public R strToResult(String str) {
if (String.valueOf(V).equals(str))
return null;
return (R) StreamUtil.bytesToObject(StringUtil.hexStrToBytes(str));
}
@Override
public Throwable strToThrowable(String str) {
// TODO: 该实现暂不对异常返回做处理
return null;
}
@Override
public ReturnData getReturnData() {
return resultData;
}
}