package data.media;
import java.lang.reflect.Type;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.parser.JSONLexerBase;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.ParseContext;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
public class MediaContentGenDecoder extends JavaBeanDeserializer implements ObjectDeserializer {
private char[] media_gen_prefix__ = "\"media\":".toCharArray();
private char[] images_gen_prefix__ = "\"images\":".toCharArray();
private ObjectDeserializer media_gen_deser__;
private ObjectDeserializer images_gen_list_item_deser__;
private Type images_gen_list_item_type__ = data.media.Image.class;
public MediaContentGenDecoder (ParserConfig config, Class clazz) {
super(config, clazz);
}
public Object createInstance(DefaultJSONParser parser, Type type) {
return new MediaContent();
}
public Object deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();
if (!lexer.isEnabled(Feature.SortFeidFastMatch)) {
return super.deserialze(parser, type, fieldName);
}
if (lexer.isEnabled(Feature.SupportArrayToBean)) {
// deserialzeArrayMapping
}
if (lexer.scanType("Department") == JSONLexerBase.NOT_MATCH) {
return super.deserialze(parser, type, fieldName);
}
ParseContext mark_context = parser.getContext();
int matchedCount = 0;
MediaContent instance = new MediaContent();
ParseContext context = parser.getContext();
ParseContext childContext = parser.setContext(context, instance, fieldName);
if (lexer.matchStat == JSONLexerBase.END) {
return instance;
}
int matchStat = 0;
int _asm_flag_0 = 0;
java.util.List images_gen = null;
data.media.Media media_gen = null;
boolean endFlag = false, restFlag = false;
if ((!endFlag) && (!restFlag)) {
if (lexer.matchField(images_gen_prefix__)) {
_asm_flag_0 |= 1;
if (lexer.token() == JSONToken.NULL) {
lexer.nextToken(JSONToken.COMMA);
} else {
if (lexer.token() == JSONToken.LBRACKET) {
if(images_gen_list_item_deser__ == null) {
images_gen_list_item_deser__ = parser.getConfig().getDeserializer(data.media.Image.class);
}
final int fastMatchToken = images_gen_list_item_deser__.getFastMatchToken();
lexer.nextToken(fastMatchToken);
images_gen = new java.util.ArrayList();
ParseContext listContext = parser.getContext();
parser.setContext(images_gen, "images");
for(int i = 0; ;++i) {
if (lexer.token() == JSONToken.RBRACKET) {
break;
}
data.media.Image itemValue = images_gen_list_item_deser__.deserialze(parser, images_gen_list_item_type__, i);
images_gen.add(itemValue);
parser.checkListResolve(images_gen);
if (lexer.token() == JSONToken.COMMA) {
lexer.nextToken(fastMatchToken);
}
}
parser.setContext(listContext);
if (lexer.token() != JSONToken.RBRACKET) {
restFlag = true;
}
lexer.nextToken(JSONToken.COMMA);
} else {
restFlag = true;
}
}
}
if(lexer.matchStat > 0) {
_asm_flag_0 |= 1;
matchedCount++;
}
if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {
restFlag = true;
}
if(lexer.matchStat != JSONLexerBase.END) {
endFlag = true;
}
}
if ((!endFlag) && (!restFlag)) {
if (lexer.matchField(media_gen_prefix__)) {
_asm_flag_0 |= 2;
matchedCount++;
if (media_gen_deser__ == null) {
media_gen_deser__ = parser.getConfig().getDeserializer(data.media.Media.class);
}
media_gen_deser__.deserialze(parser, data.media.Media.class,"media");
if(parser.getResolveStatus() == DefaultJSONParser.NeedToResolve) {
ResolveTask resolveTask = parser.getLastResolveTask();
resolveTask.ownerContext = parser.getContext();
resolveTask.fieldDeserializer = this.getFieldDeserializer("media");
parser.setResolveStatus(DefaultJSONParser.NONE);
}
}
if (matchedCount <= 0 || lexer.token() != JSONToken.RBRACE) {
restFlag = true;
} else if (lexer.token() == JSONToken.COMMA) {
lexer.nextToken();
}
if(lexer.matchStat > 0) {
_asm_flag_0 |= 2;
matchedCount++;
}
if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {
restFlag = true;
}
if(lexer.matchStat != JSONLexerBase.END) {
restFlag = true;
}
}
if ((_asm_flag_0 & 1) != 0) {
instance.setImages(images_gen);
}
if ((_asm_flag_0 & 2) != 0) {
instance.setMedia(media_gen);
}
if (restFlag) {
return super.parseRest(parser, type, fieldName, instance, 0, new int[0]);
}
return instance;
}
}