package com.safeluck.aykj.annotation;
|
|
import com.safeluck.aykj.decoder.*;
|
|
import java.lang.reflect.Field;
|
import java.util.HashMap;
|
|
/**
|
* Created by zhouwei on 2016/12/1.
|
*/
|
public final class AnnotationRegister {
|
|
static HashMap hashMap = new HashMap();
|
|
static
|
{
|
register(Int16.class,new Int16Coder());
|
register(Int32.class,new Int32Coder());
|
register(Int8.class,new ByteCoder());
|
register(GBK.class,new GBKStringDecoder());
|
register(Ascii.class,new GBKStringDecoder());
|
|
register(BitState.class,new BitStateCoder());
|
register(Hex.class,new DefaultHexCoder());
|
register(UTF8.class,new UTF8StringDecoder());
|
register(Bytes.class,new BytesCoder());
|
register(Message.class,new BinMessageCoder());
|
register(BcdDate.class,new BcdDateCoder());
|
register(BcdDateTime.class,new BcdDateTimeCoder());
|
register(Int16LE.class,new Int16LECoder());
|
register(Int32LE.class,new Int32LECoder());
|
|
|
}
|
|
public static void register(Class annotation, IMessageCoder<?> coder)
|
{
|
hashMap.put(annotation,coder);
|
}
|
public static IMessageCoder getCoder(Class annotation)
|
{
|
IMessageCoder decoder = (IMessageCoder)hashMap.get(annotation);
|
if(decoder instanceof BaseDecoder)
|
{
|
BaseDecoder baseDecoder = (BaseDecoder)decoder;
|
if(!baseDecoder.isSingleton)
|
{
|
try {
|
decoder = decoder.getClass().newInstance();
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
}
|
return decoder;
|
}
|
|
}
|