com.google.web.bindery.requestfactory.shared

## Interface ProxySerializer

    public interface ProxySerializer

Serializes graphs of EntityProxy objects. A ProxySerializer is associated with an instance of a `ProxyStore` when it is created via `RequestFactory.getSerializer(ProxyStore)`.

The `EntityProxy.stableId()` of non-persisted (i.e. newly `created`) `EntityProxy` instances are not stable.

To create a self-contained message that encapsulates a proxy:

     RequestFactory myFactory = ...;
     MyFooProxy someProxy = ...;

     DefaultProxyStore store = new DefaultProxyStore();
     ProxySerializer ser = myFactory.getSerializer(store);
     // More than one proxy could be serialized
     String key = ser.serialize(someProxy);
     // Create the flattened representation
     String payload = store.encode();

To recreate the object:

     ProxyStore store = new DefaultProxyStore(payload);
     ProxySerializer ser = myFactory.getSerializer(store);
     MyFooProxy someProxy = ser.deserialize(MyFooProxy.class, key);

If two objects refer to different EntityProxy instances that have the same stableId(), the last mutable proxy encountered will be preferred, otherwise the first immutable proxy will be used.

See Also:
  `DefaultProxyStore`

### Method Summary

All Methods Instance Methods Abstract Methods
`<T extends BaseProxy> T` `deserialize(java.lang.Class<T> proxyType, java.lang.String key)` Recreate a proxy instance that was previously passed to `serialize(BaseProxy)`.
`<T extends EntityProxy> T` `deserialize(EntityProxyId<T> id)` Recreate a `EntityProxy` instance that was previously passed to `serialize(BaseProxy)`.
`java.lang.String` `serialize(BaseProxy proxy)` Store a proxy into the backing store.

### Method Detail

#### deserialize

    <T extends BaseProxy> T deserialize(java.lang.Class<T> proxyType,
                                        java.lang.String key)

Recreate a proxy instance that was previously passed to `serialize(BaseProxy)`.

Type Parameters:
  `T` - the type of proxy object to create
Parameters:
  `proxyType` - the type of proxy object to create
  `key` - a value previously returned from `serialize(BaseProxy)`
Returns:
  a new, immutable instance of the proxy or `null` if the data needed to deserialize the proxy is not present in the ProxyStore

#### deserialize

    <T extends EntityProxy> T deserialize(EntityProxyId<T> id)

Recreate a `EntityProxy` instance that was previously passed to `serialize(BaseProxy)`.

Type Parameters:
  `T` - the type of proxy object to create
Parameters:
  `id` - the `EntityProxyId` of the desired entity
Returns:
  a new, immutable instance of the proxy or `null` if the data needed to deserialize the proxy is not present in the ProxyStore

#### serialize

    java.lang.String serialize(BaseProxy proxy)

Store a proxy into the backing store.

Parameters:
  `proxy` - the proxy to store
Returns:
  a key value that can be passed to `deserialize(Class, String)`