как "toString ()" производные GWT EntityProxy для регистрации и отладки? - PullRequest
4 голосов
/ 26 января 2011

GWT 2.1.1 имеет очень хорошую структуру - RequestFactory со всеми EntityProxy и прочим.

Я ищу способ сериализации экземпляров среды выполнения, которые реализуют EntityProxy для отладки и ведения журналов и т. Д. Меня не волнуетформат до тех пор, пока он читается человеком.Чтобы быть более конкретным, я хотел бы иметь что-то вроде предоставленного Apache Commons Lang ReflectionToStringBuilder Может быть, есть какой-то способ использовать механику сериализации JSON, которая есть внутри GWT?если да, как сделать его более читабельным?

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

String stringRep = ReflectionToStringBuilder.toString(this);

Ответы [ 3 ]

4 голосов
/ 28 января 2011

Существует как минимум 2 решения:

Первое: основано на идее Томаса Бройера

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

, которые производят что-то вроде этого:

{"V":"211","P":{"1@2@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":"test@example.com","lastReported":1296194777916,"lastLoginOn":1296194777916}}}}

Второе: на основе AutoBean Framework

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

, который производит строку типа

{"emailAddress":"test@example.com","lastActive":1296194777916,"lastLoginOn":1296194777916,"lastReported":1296194777916}

Второе - это то, что мне нужно - это большечитается в журнале.

2 голосов
/ 27 января 2011

Я не пробовал, но взглянул на RequestFactory # getSerializer , в javadoc есть пример кода для ProxySerializer .

0 голосов
/ 04 сентября 2011

Если используется метод toJson (EntityProxy entityProxy)

, измените его на

toJson (BaseProxy proxy)

, а затем вы сможете регистрировать объекты Value и Entity Proxy.

...