# MemcacheSerialization
Date: 2012-02-24

## com.google.appengine.api.memcache
Class MemcacheSerialization

    java.lang.Object
      com.google.appengine.api.memcache.MemcacheSerialization

    public class MemcacheSerialization

extends java.lang.Object

Static serialization helpers shared by `MemcacheServiceImpl` and `com.google.appengine.api.memcache.dev.LocalMemcacheService`. This class is thread-safe.

Nested Class Summary
`static class` `MemcacheSerialization.Flag` Values used as flags on the MemcacheService's values.
`static class` `MemcacheSerialization.ValueAndFlags` Tuple of a serialized byte array value and associated flags to interpret that value.

Method Summary
`static java.lang.Object` `deserialize(byte[] value, int flags)` Deserialize the object, according to its flags.
`static byte[]` `makePbKey(java.lang.Object key)` Converts the user's key Object into a byte[] for the MemcacheGetRequest.
`static MemcacheSerialization.ValueAndFlags` `serialize(java.lang.Object value)`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### deserialize

    public static java.lang.Object deserialize(byte[] value,
                                               int flags)
                                        throws java.lang.ClassNotFoundException,
                                               java.io.IOException

  Deserialize the object, according to its flags. This would have private visibility, but is also used by LocalMemcacheService for the increment operation.

  Parameters:
    `value` -
    `flags` -
  Returns:
    the Object originally stored
  Throws:
    `java.lang.ClassNotFoundException` - if the object can't be re-instantiated due to being an unlocatable type
    `java.io.IOException` - if the object can't be re-instantiated for some other reason

### makePbKey

    public static byte[] makePbKey(java.lang.Object key)
                            throws java.io.IOException

  Converts the user's key Object into a byte[] for the MemcacheGetRequest. Because the underlying service has a length limit, we actually use the SHA1 hash of the serialized object as its key if it's not a basic type. For the basic types (that is, `String`, `Boolean`, and the fixed-point numbers), we use a human-readable representation.

  Parameters:
    `key` -
  Returns:
    hash result. For the key `null`, the hash is also `null`.
  Throws:
    `java.io.IOException`

### serialize

    public static MemcacheSerialization.ValueAndFlags serialize(java.lang.Object value)
                                                         throws java.io.IOException

  Parameters:
    `value` -
  Returns:
    the ValueAndFlags containing a serialized representation of the Object and the flags to hint deserialization.
  Throws:
    `java.io.IOException` - for serialization errors, normally due to a non-serializable object type