2013-06-24 2 views
1

Идея заключается в том, чтобы иметь POJO как:Преобразовать POJO к карте, которая работает с GWT

class MyBean { 
    long id; 
    int count; 
    public void setCount(int count){ 
    this.count = count; 
    } 
} 

Теперь мне нужно, что счетчик будет сохранен автоматически как:

put("count", count); 

или просто положить, put("fieldname", fieldvalue);

Есть ли библиотека, которая может быть использована для этой цели, чтобы MyBean мог exetnd? Я могу легко создать конструктор копий или что-то в этом роде, но здесь есть автоматизация, и, кроме того, в моем приложении так много моделей, которые будут иметь эти значения сохраненных значений карты POJO ...

ответ

0

Вы можете создать простой PropertyMapGenerator, используя Apache Commons BeanUtils' PropertyUtils

public class PropertyMapGenerator { 
    public static Map<String, Object> getPropertyMap(Object object) { 
    HashMap<String, Object> propertyMap = new HashMap<>(); 

    // retrieve descriptors for all properties 
    PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(object); 

    for (PropertyDescriptor descriptor : descriptors) { 
     // check if there is a reader method for this property i.e. if it can be accessed 
     if (descriptor.getReadMethod() != null) { 
      String name = descriptor.getName(); 
      try { 
       propertyMap.put(name, PropertyUtils.getProperty(object, name)); 
      } catch (Exception e) { 
       // handle this properly 
       e.printStackTrace(); 
      } 
     } 
    } 

    return propertyMap; 
    } 
} 

Теперь вы можете просто передать свои POJO, к этому генератору:

Map<String, Object> propertyMap = PropertyMapGenerator.getPropertyMap(myBean);