Class IoClassSerialiser


  • public class IoClassSerialiser
    extends java.lang.Object
    reference implementation for streaming arbitrary object classes to and from a IoSerialiser- and IoBuffer-based buffers
    Author:
    rstein
    • Field Detail

      • ioSerialisers

        protected final java.util.List<IoSerialiser> ioSerialisers
      • matchedIoSerialiser

        protected IoSerialiser matchedIoSerialiser
      • dataBuffer

        protected IoBuffer dataBuffer
      • startMarkerFunction

        protected java.util.function.Consumer<FieldDescription> startMarkerFunction
      • endMarkerFunction

        protected java.util.function.Consumer<FieldDescription> endMarkerFunction
    • Constructor Detail

      • IoClassSerialiser

        @SafeVarargs
        public IoClassSerialiser​(IoBuffer ioBuffer,
                                 java.lang.Class<? extends IoSerialiser>... ioSerialiserTypeClass)
        Initialises new IoBuffer-backed object serialiser
        Parameters:
        ioBuffer - the backing IoBuffer (see e.g. IoBuffer
        ioSerialiserTypeClass - optional IoSerialiser type class this IoClassSerialiser should start with (see also e.g. BinarySerialiser, CmwLightSerialiser, or JsonSerialiser
    • Method Detail

      • addClassDefinition

        public void addClassDefinition​(FieldSerialiser<?> serialiser)
      • autoUpdateSerialiser

        public void autoUpdateSerialiser()
        if enabled (isAutoMatchSerialiser() then set matching serialiser
      • cacheFindFieldSerialiser

        public <E> FieldSerialiser<E> cacheFindFieldSerialiser​(java.lang.reflect.Type clazz,
                                                               java.util.List<java.lang.reflect.Type> classGenericArguments)
      • deserialiseObject

        public java.lang.Object deserialiseObject​(WireDataFieldDescription fieldRoot,
                                                  java.lang.Object obj)
      • deserialiseObject

        public <T> T deserialiseObject​(java.lang.Class<T> clazz)
      • deserialiseObject

        public java.lang.Object deserialiseObject​(java.lang.Object obj)
      • finaliseBuffer

        public void finaliseBuffer​(de.gsi.dataset.utils.ByteArrayCache arrayCache)
      • findFieldSerialiser

        public <E> FieldSerialiser<E> findFieldSerialiser​(java.lang.reflect.Type type,
                                                          java.util.List<java.lang.reflect.Type> classGenericArguments)
        find FieldSerialiser for known class, interface and corresponding generics
        Type Parameters:
        E - The type of the Object to (de)serialise
        Parameters:
        type - the class or interface
        classGenericArguments - optional generics arguments
        Returns:
        FieldSerialiser matching the base class/interface and generics arguments
      • getDataBuffer

        public IoBuffer getDataBuffer()
      • getMatchedIoSerialiser

        public IoSerialiser getMatchedIoSerialiser()
      • getSerialiserLookupFunction

        public final <E> java.util.function.BiFunction<java.lang.reflect.Type,​java.lang.reflect.Type[],​FieldSerialiser<E>> getSerialiserLookupFunction()
      • isAutoMatchSerialiser

        public boolean isAutoMatchSerialiser()
      • isUseCustomJsonSerialiser

        public boolean isUseCustomJsonSerialiser()
      • knownClasses

        public java.util.Map<java.lang.reflect.Type,​java.util.List<FieldSerialiser<?>>> knownClasses()
      • serialiseObject

        public void serialiseObject​(java.lang.Object rootObj,
                                    ClassFieldDescription classField,
                                    int recursionDepth)
      • serialiseObject

        public void serialiseObject​(java.lang.Object obj)
      • setAutoMatchSerialiser

        public void setAutoMatchSerialiser​(boolean autoMatchSerialiser)
      • setDataBuffer

        public void setDataBuffer​(IoBuffer dataBuffer)
      • setMatchedIoSerialiser

        public void setMatchedIoSerialiser​(java.lang.Class<? extends IoSerialiser> serialiserTemplate)
      • setUseCustomJsonSerialiser

        public void setUseCustomJsonSerialiser​(boolean useCustomJsonSerialiser)
      • checkClassCompatibility

        protected boolean checkClassCompatibility​(java.util.List<java.lang.reflect.Type> ref1,
                                                  java.util.List<java.lang.reflect.Type> ref2)
      • deserialise

        protected <E> void deserialise​(java.lang.Object obj,
                                       java.lang.Class<E> clazz,
                                       FieldDescription fieldRoot,
                                       ClassFieldDescription classField,
                                       int recursionDepth)
      • computeHashCode

        public static int computeHashCode​(java.lang.Class<?> classPrototype,
                                          java.util.List<java.lang.reflect.Type> classGenericArguments)
      • getClassConstructorByName

        public static java.lang.reflect.Constructor<java.lang.Object> getClassConstructorByName​(java.lang.String name,
                                                                                                java.lang.Class<?>... parameterTypes)
      • getClassNames

        public static java.lang.String[] getClassNames​(java.util.List<java.lang.Class<?>> classGenericArguments)
      • getGenericFieldSimpleTypeString

        public static java.lang.String getGenericFieldSimpleTypeString​(java.util.List<java.lang.reflect.Type> classArguments)