content: package com.alibaba.json.bvt.bug;
  
  import java.util.Date;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  
  import junit.framework.TestCase;
  
  public class Bug_for_issue_336 extends TestCase {
  
      public void test_for_issue() throws Exception {
          RemoteInvocation remoteInvocation = new RemoteInvocation();
          remoteInvocation.setMethodName("test");
          remoteInvocation.setParameterTypes(new Class[] { int.class, Date.class, String.class });
          remoteInvocation.setArguments(new Object[] { 1, new Date(1460538273131L), "this is a test" });
          String json = JSON.toJSONString(remoteInvocation);
          
          Assert.assertEquals("{\"arguments\":[1,1460538273131,\"this is a test\"],\"methodName\":\"test\",\"parameterTypes\":[\"int\",\"java.util.Date\",\"java.lang.String\"]}", json);
          
          remoteInvocation = JSON.parseObject(json, RemoteInvocation.class);
          
          Assert.assertEquals(3, remoteInvocation.parameterTypes.length);
          Assert.assertEquals(int.class, remoteInvocation.parameterTypes[0]);
          Assert.assertEquals(Date.class, remoteInvocation.parameterTypes[1]);
          Assert.assertEquals(String.class, remoteInvocation.parameterTypes[2]);
          
  
      }
  
      public static class RemoteInvocation {
  
          private String     methodName;
          private Class<?>[] parameterTypes;
          private Object[]   arguments;
  
          public String getMethodName() {
              return methodName;
          }
  
          public void setMethodName(String methodName) {
              this.methodName = methodName;
          }
  
          public Class<?>[] getParameterTypes() {
              return parameterTypes;
          }
  
          public void setParameterTypes(Class<?>[] parameterTypes) {
              this.parameterTypes = parameterTypes;
          }
  
          public Object[] getArguments() {
              return arguments;
          }
  
          public void setArguments(Object[] arguments) {
              this.arguments = arguments;
          }
  
      }
  }
  