content: package com.alibaba.json.bvt.bug;
  
  import java.nio.charset.Charset;
  import java.util.HashMap;
  import java.util.Map;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.parser.Feature;
  import com.alibaba.fastjson.parser.ParserConfig;
  
  import junit.framework.TestCase;
  
  public class Issue585 extends TestCase {
      private String original = JSON.DEFAULT_TYPE_KEY;
      private ParserConfig originalConfig = ParserConfig.global;
  
      protected void setUp() throws Exception {
          ParserConfig.global = new ParserConfig();
          if (!JSON.DEFAULT_TYPE_KEY.equals("mySpace")) {
              JSON.setDefaultTypeKey("mySpace");
          }
  
          com.alibaba.fastjson.parser.ParserConfig.global.addAccept("com.alibaba.json.bvt.bug.Issue585.");
      }
  
      protected void tearDown() throws Exception {
          JSON.setDefaultTypeKey(original);
          ParserConfig.global = originalConfig;
      }
  
      public void test_for_issue() throws Exception {
  
          String cc = "{\"mySpace\":\"com.alibaba.json.bvt.bug.Issue585$Result\",\"attachments\":{\"mySpace\":\"java.util.HashMap\",\"timeout\":5000,\"consumeApp\":\"multiGroupTestServer\"},\"status\":0}";
  
          byte[] bytes = cc.getBytes("utf-8");
  
          Result res = (Result) this.deserialize(bytes);
          Assert.assertEquals(0, res.getStatus());
      }
  
      public <T> T deserialize(byte[] in) {
          Charset CHARSET = Charset.forName("utf-8");
          return (T) JSON.parse(in, 0, in.length, CHARSET.newDecoder(), Feature.AllowArbitraryCommas,
                                Feature.IgnoreNotMatch, Feature.SortFeidFastMatch, Feature.DisableCircularReferenceDetect,
                                Feature.AutoCloseSource);
      }
  
      public static class Result {
  
          private int                 status;
          private Object              value;
          private Map<String, Object> attachments = new HashMap<String, Object>(2);
  
          public int getStatus() {
              return status;
          }
  
          public void setStatus(int status) {
              this.status = status;
          }
  
          public Object getValue() {
              return value;
          }
  
          public void setValue(Object value) {
              this.value = value;
          }
  
          public Map<String, Object> getAttachments() {
              return attachments;
          }
  
          public void setAttachments(Map<String, Object> attachments) {
              this.attachments = attachments;
          }
      }
  }
  