package de.jpaw.bonaparte.api.codecs.impl;
import de.jpaw.bonaparte.api.codecs.IMessageDecoder;
import de.jpaw.bonaparte.core.BonaPortable;
import de.jpaw.bonaparte.core.MapParser;
import de.jpaw.bonaparte.pojos.meta.ObjectReference;
import de.jpaw.json.JsonParser;
import de.jpaw.util.ApplicationException;
import de.jpaw.util.ByteArray;
public class JsonDecoder<O extends BonaPortable> implements IMessageDecoder<O, byte []> {
private final Class<O> decoderClass;
public JsonDecoder(Class<O> decoderClass) {
this.decoderClass = decoderClass;
}
@Override
public O decode(byte [] data, ObjectReference di) throws ApplicationException {
final JsonParser jp = new JsonParser(new String(data, ByteArray.CHARSET_UTF8), false);
return CastIt.castTo(MapParser.asBonaPortable(jp.parseObject(), di), decoderClass);
}
}