code: @Test public void testBeanSerialize() throws Exception {
    Bean bean=new Bean();
    bean.setDate(new Date());
    bean.setStatus(PersonStatus.ENABLED);
    bean.setType(Bean.class);
    bean.setArray(new Phone[]{});
    Collection<Phone> collection=new ArrayList<Phone>();
    bean.setCollection(collection);
    Phone phone=new Phone();
    collection.add(phone);
    Map<String,FullAddress> map=new HashMap<String,FullAddress>();
    FullAddress address=new FullAddress();
    map.put("first",address);
    bean.setAddresses(map);
    JavaBeanDescriptor descriptor=JavaBeanSerializeUtil.serialize(bean,JavaBeanAccessor.METHOD);
    Assert.assertTrue(descriptor.isBeanType());
    assertEqualsPrimitive(bean.getDate(),descriptor.getProperty("date"));
    assertEqualsEnum(bean.getStatus(),descriptor.getProperty("status"));
    Assert.assertTrue(((JavaBeanDescriptor)descriptor.getProperty("type")).isClassType());
    Assert.assertEquals(Bean.class.getName(),((JavaBeanDescriptor)descriptor.getProperty("type")).getClassNameProperty());
    Assert.assertTrue(((JavaBeanDescriptor)descriptor.getProperty("array")).isArrayType());
    Assert.assertEquals(0,((JavaBeanDescriptor)descriptor.getProperty("array")).propertySize());
    JavaBeanDescriptor property=(JavaBeanDescriptor)descriptor.getProperty("collection");
    Assert.assertTrue(property.isCollectionType());
    Assert.assertEquals(1,property.propertySize());
    property=(JavaBeanDescriptor)property.getProperty(0);
    Assert.assertTrue(property.isBeanType());
    Assert.assertEquals(Phone.class.getName(),property.getClassName());
    Assert.assertEquals(0,property.propertySize());
    property=(JavaBeanDescriptor)descriptor.getProperty("addresses");
    Assert.assertTrue(property.isMapType());
    Assert.assertEquals(bean.getAddresses().getClass().getName(),property.getClassName());
    Assert.assertEquals(1,property.propertySize());
    Map.Entry<Object,Object> entry=property.iterator().next();
    Assert.assertTrue(((JavaBeanDescriptor)entry.getKey()).isPrimitiveType());
    Assert.assertEquals("first",((JavaBeanDescriptor)entry.getKey()).getPrimitiveProperty());
    Assert.assertTrue(((JavaBeanDescriptor)entry.getValue()).isBeanType());
    Assert.assertEquals(FullAddress.class.getName(),((JavaBeanDescriptor)entry.getValue()).getClassName());
    Assert.assertEquals(0,((JavaBeanDescriptor)entry.getValue()).propertySize());
  }
  