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:
  • Method Details

    • deserialize

      <T extends BaseProxy> T deserialize(Class<T> proxyType, 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

      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)