Class DefaultObjectMapper

java.lang.Object
eu.cloudnetservice.driver.impl.network.object.DefaultObjectMapper
All Implemented Interfaces:
eu.cloudnetservice.driver.network.object.ObjectMapper

@Singleton public class DefaultObjectMapper extends Object implements eu.cloudnetservice.driver.network.object.ObjectMapper
The default object mapper implementation.
Since:
4.0
  • Field Details

    • DEFAULT_MAPPER

      public static final eu.cloudnetservice.driver.network.object.ObjectMapper DEFAULT_MAPPER
    • DEFAULT_SERIALIZERS

      private static final Map<Type, eu.cloudnetservice.driver.network.object.ObjectSerializer<?>> DEFAULT_SERIALIZERS
    • registeredSerializers

      private final Map<Type, eu.cloudnetservice.driver.network.object.ObjectSerializer<?>> registeredSerializers
    • typeCache

      private final com.github.benmanes.caffeine.cache.LoadingCache<Type, Collection<Tuple2<Type,Type>>> typeCache
  • Constructor Details

    • DefaultObjectMapper

      public DefaultObjectMapper()
      Constructs a new default object mapper instance with all default object serializers already registered. This call is equivalent to new DefaultObjectMapper(true).
    • DefaultObjectMapper

      public DefaultObjectMapper(boolean registerDefaultSerializers)
      Constructs a new default object mapper instance and optionally registers the default serializers to it.
      Parameters:
      registerDefaultSerializers - true if the default serializers should get registered, false otherwise.
  • Method Details

    • unregisterBinding

      @NonNull public @NonNull eu.cloudnetservice.driver.network.object.ObjectMapper unregisterBinding(@NonNull @NonNull Type type, boolean superTypes)
      Specified by:
      unregisterBinding in interface eu.cloudnetservice.driver.network.object.ObjectMapper
    • unregisterBindings

      @NonNull public @NonNull eu.cloudnetservice.driver.network.object.ObjectMapper unregisterBindings(@NonNull @NonNull ClassLoader classLoader)
      Specified by:
      unregisterBindings in interface eu.cloudnetservice.driver.network.object.ObjectMapper
    • registerBinding

      @NonNull public <T> @NonNull eu.cloudnetservice.driver.network.object.ObjectMapper registerBinding(@NonNull @NonNull Type type, @NonNull @NonNull eu.cloudnetservice.driver.network.object.ObjectSerializer<T> serializer, boolean superTypes)
      Specified by:
      registerBinding in interface eu.cloudnetservice.driver.network.object.ObjectMapper
    • writeObject

      @NonNull public <T> eu.cloudnetservice.driver.network.buffer.DataBuf.Mutable writeObject(@NonNull eu.cloudnetservice.driver.network.buffer.DataBuf.Mutable dataBuf, @Nullable T object)
      Specified by:
      writeObject in interface eu.cloudnetservice.driver.network.object.ObjectMapper
    • readObject

      @Nullable public <T> T readObject(@NonNull @NonNull eu.cloudnetservice.driver.network.buffer.DataBuf dataBuf, @NonNull @NonNull Type type)
      Specified by:
      readObject in interface eu.cloudnetservice.driver.network.object.ObjectMapper
    • serializerForType

      @Nullable protected <T> @Nullable eu.cloudnetservice.driver.network.object.ObjectSerializer<T> serializerForType(@NonNull @NonNull Tuple2<Type,Type> typePair)
      Finds the best matching serializer for the given type. The method first tries to get the serializer by the exact type of the supplied type token, then by the raw type.
      Type Parameters:
      T - the generic type of the object serializer to get.
      Parameters:
      typePair - the mapping pair of the actual type (first) and the raw type (second) of the serializer to get.
      Returns:
      the best matching object serializer for the given type.
      Throws:
      NullPointerException - if the given type token is null.