content: package com.alibaba.json.bvt.bug;
  
  import java.lang.reflect.Type;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.parser.DefaultJSONParser;
  import com.alibaba.fastjson.parser.JSONToken;
  import com.alibaba.fastjson.parser.ParserConfig;
  import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
  
  import junit.framework.TestCase;
  
  public class Bug_for_issue_457 extends TestCase {
  
      public void test_for_issue() throws Exception {
          ParserConfig.global.putDeserializer(MyEnum.class, new MyEnumDeser());
          VO entity = JSON.parseObject("{\"myEnum\":\"AA\"}", VO.class);
          Assert.assertEquals(MyEnum.A, entity.myEnum);
      }
      
      public static class MyEnumDeser implements ObjectDeserializer {
  
          @Override
          public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
              String text = (String) parser.parse();
              if (text.equals("AA")) {
                  return (T) MyEnum.A;
              }
              
              if (text.equals("BB")) {
                  return (T) MyEnum.B;
              }
              return null;
          }
  
          @Override
          public int getFastMatchToken() {
              return JSONToken.LITERAL_STRING;
          }
          
      }
  
  
      public static class VO {
  
          private MyEnum myEnum;
  
          public void setMyEnum(MyEnum myEnum) {
              this.myEnum = myEnum;
          }
  
          public MyEnum getMyEnum() {
              return myEnum;
          }
      }
  
      public static enum MyEnum {
                                 A, B
      }
  }
  