package com.alibaba.doris.client.interceptor; import java.util.List; import com.alibaba.doris.client.operation.OperationData; import com.alibaba.doris.common.Namespace; import com.alibaba.doris.common.data.util.ByteUtils; import com.alibaba.doris.common.serialize.JsonSerializer; import com.alibaba.doris.common.serialize.Serializer; import com.alibaba.doris.common.serialize.StringSerializer; import com.alibaba.doris.dproxy.AbstractInterceptor; import com.alibaba.doris.dproxy.InvokeInfo; /** * e * SerializeInterceptor * @author Kun He (Raymond He), kun.hek@alibaba-inc.com * @since 1.0 2011-4-29 */ public class SerializeInterceptor extends AbstractInterceptor { public void before(InvokeInfo info) throws Throwable { OperationData operationData = (OperationData) info.getArgs()[0]; List<Object> args = operationData.getArgs(); Object value = args.get(1); Namespace namespace = operationData.getNamespace(); String serializeModeClass = namespace.getSerializeMode(); String deserializeTargetClassString = namespace.getClassName(); byte[] serializedValue = null; if( serializeModeClass != null && serializeModeClass.trim().length() > 0 ) { SerializerManager serializerManager = SerializerManager.getInstance(); Serializer serializer = serializerManager.getSerializer( serializeModeClass ); serializedValue = serializer.serialize( value, deserializeTargetClassString); }else { throw new IllegalArgumentException("Unknown selialize mode or selializer."); } args.set(1,serializedValue); } }