Class Serialization

  • All Implemented Interfaces:
    Extension

    public class Serialization
    extends java.lang.Object
    implements Extension
    Serialization module. Contains methods for serialization and deserialization as well as locating a Serializer for a particular class as defined in the mapping in the configuration.
    • Method Detail

      • withTransportInformation

        public static <T> T withTransportInformation​(ExtendedActorSystem system,
                                                     scala.Function0<T> f)
        Sets serialization information in a ThreadLocal and runs f. The information is needed for serializing local actor refs, or if serializer library e.g. custom serializer/deserializer in Jackson need access to the current ActorSystem. The current Serialization.Information can be accessed within f via getCurrentTransportInformation().

        Pekko Remoting sets this value when serializing and deserializing messages, and when using the ordinary serialize and deserialize methods in Serialization the value is also set automatically.

        Returns:
        value returned by f
      • AllowJavaSerialization

        public boolean AllowJavaSerialization()
      • serialize

        public scala.util.Try<byte[]> serialize​(java.lang.Object o)
        Serializes the given AnyRef/java.lang.Object according to the Serialization configuration to either an Array of Bytes or an Exception if one was thrown.
      • deserialize

        public <T> scala.util.Try<T> deserialize​(byte[] bytes,
                                                 int serializerId,
                                                 scala.Option<java.lang.Class<? extends T>> clazz)
        Deprecated.
        Use deserialize that accepts the `manifest` as a class name. Since Akka 2.6.0.
        Deserializes the given array of bytes using the specified serializer id, using the optional type hint to the Serializer. Returns either the resulting object or an Exception if one was thrown.
      • deserialize

        public scala.util.Try<java.lang.Object> deserialize​(byte[] bytes,
                                                            int serializerId,
                                                            java.lang.String manifest)
        Deserializes the given array of bytes using the specified serializer id, using the optional type hint to the Serializer. Returns either the resulting object or an Exception if one was thrown.
      • deserializeByteBuffer

        public java.lang.Object deserializeByteBuffer​(java.nio.ByteBuffer buf,
                                                      int serializerId,
                                                      java.lang.String manifest)
                                               throws java.io.NotSerializableException
        Deserializes the given ByteBuffer of bytes using the specified serializer id, using the optional type hint to the Serializer. Returns either the resulting object or throws an exception if deserialization fails.
        Throws:
        java.io.NotSerializableException
      • deserialize

        public <T> scala.util.Try<T> deserialize​(byte[] bytes,
                                                 java.lang.Class<T> clazz)
        Deserializes the given array of bytes using the specified type to look up what Serializer should be used. Returns either the resulting object or an Exception if one was thrown.
      • findSerializerFor

        public Serializer findSerializerFor​(java.lang.Object o)
        Returns the Serializer configured for the given object, returns the NullSerializer if it's null.

        Throws org.apache.pekko.ConfigurationException if no serialization-bindings is configured for the class of the object.

      • serializerFor

        public Serializer serializerFor​(java.lang.Class<?> clazz)
                                 throws java.io.NotSerializableException
        Returns the configured Serializer for the given Class. The configured Serializer is used if the configured class isAssignableFrom from the clazz, i.e. the configured class is a super class or implemented interface. In case of ambiguity it is primarily using the most specific configured class, and secondly the entry configured first.

        Throws java.io.NotSerializableException if no serialization-bindings is configured for the class.

        Throws:
        java.io.NotSerializableException
      • serializerOf

        public scala.util.Try<Serializer> serializerOf​(java.lang.String serializerFQN)
        Tries to load the specified Serializer by the fully-qualified name; the actual loading is performed by the system&rsquo;s pekko.actor.DynamicAccess.
      • serializerByIdentity

        public scala.collection.immutable.Map<java.lang.Object,​Serializer> serializerByIdentity()
        Maps from a Serializer Identity (Int) to a Serializer instance (optimization)