2011-01-25 20 views
4

GWT 2.1.1有非常好的框架 - 包含所有EntityProxy和東西的RequestFactory。如何「toString()」GWT EntityProxy衍生物的日誌和調試?

我正在尋找一種方法來序列化實現EntityProxy的調試和日誌記錄等運行時實例。我不關心格式,只要它是人類可讀的。 更具體地說,我想有類似Apache Commons Lang ReflectionToStringBuilder 提供的東西可能有一些方法可以使用GWT內部的JSON序列化機制?如果是的話,如何使它更具可讀性?

import org.apache.commons.lang.builder.ReflectionToStringBuilder; 

String stringRep = ReflectionToStringBuilder.toString(this); 

回答

4

至少有2種解決方案:

第一:基於這樣的理念通過Thomas Broyer

public static String toString(EntityProxy entityProxy) 
{ 
    DefaultProxyStore store = new DefaultProxyStore(); 
    Swap.requestFactory.getSerializer(store).serialize(entityProxy); 
    return store.encode(); 
} 

即產生這樣的:

{"V":"211","P":{"[email protected]@biz.daich.swap.shared.dto.UserAccountProxy":{"O":"PERSIST","R":"2","Y":1,"T":"biz.daich.swap.shared.dto.UserAccountProxy","P":{"id":null,"items":null,"channelId":null,"lastActive":1296194777916,"name":null,"emailAddress":"[email protected]","lastReported":1296194777916,"lastLoginOn":1296194777916}}}} 

二:基於AutoBean framework

public static String toJson(EntityProxy entityProxy) 
{ 
    return AutoBeanCodex.encode(AutoBeanUtils.getAutoBean(entityProxy)).getPayload(); 
} 

即產生串狀

{"emailAddress":"[email protected]","lastActive":1296194777916,"lastLoginOn":1296194777916,"lastReported":1296194777916} 

第二正是我所需要的 - 它在日誌的可讀性。

0

如果使用方法 的toJSON(EntityProxy entityProxy)

改變這

的toJSON(BaseProxy代理)

,然後你可以登錄價值和實體代理對象。