Package de.gsi.serializer
Class IoClassSerialiser
- java.lang.Object
-
- de.gsi.serializer.IoClassSerialiser
-
public class IoClassSerialiser extends java.lang.Objectreference implementation for streaming arbitrary object classes to and from a IoSerialiser- and IoBuffer-based buffers- Author:
- rstein
-
-
Field Summary
Fields Modifier and Type Field Description protected IoBufferdataBufferprotected java.util.function.Consumer<FieldDescription>endMarkerFunctionprotected java.util.List<IoSerialiser>ioSerialisersprotected IoSerialisermatchedIoSerialiserprotected java.util.function.Consumer<FieldDescription>startMarkerFunction
-
Constructor Summary
Constructors Constructor Description IoClassSerialiser(IoBuffer ioBuffer, java.lang.Class<? extends IoSerialiser>... ioSerialiserTypeClass)Initialises new IoBuffer-backed object serialiser
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddClassDefinition(FieldSerialiser<?> serialiser)voidautoUpdateSerialiser()if enabled (isAutoMatchSerialiser()then set matching serialiser<E> FieldSerialiser<E>cacheFindFieldSerialiser(java.lang.reflect.Type clazz, java.util.List<java.lang.reflect.Type> classGenericArguments)protected booleancheckClassCompatibility(java.util.List<java.lang.reflect.Type> ref1, java.util.List<java.lang.reflect.Type> ref2)static intcomputeHashCode(java.lang.Class<?> classPrototype, java.util.List<java.lang.reflect.Type> classGenericArguments)protected <E> voiddeserialise(java.lang.Object obj, java.lang.Class<E> clazz, FieldDescription fieldRoot, ClassFieldDescription classField, int recursionDepth)java.lang.ObjectdeserialiseObject(WireDataFieldDescription fieldRoot, java.lang.Object obj)<T> TdeserialiseObject(java.lang.Class<T> clazz)java.lang.ObjectdeserialiseObject(java.lang.Object obj)voidfinaliseBuffer(de.gsi.dataset.utils.ByteArrayCache arrayCache)<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 genericsstatic java.lang.reflect.Constructor<java.lang.Object>getClassConstructorByName(java.lang.String name, java.lang.Class<?>... parameterTypes)static java.lang.String[]getClassNames(java.util.List<java.lang.Class<?>> classGenericArguments)IoBuffergetDataBuffer()static java.lang.StringgetGenericFieldSimpleTypeString(java.util.List<java.lang.reflect.Type> classArguments)IoSerialisergetMatchedIoSerialiser()<E> java.util.function.BiFunction<java.lang.reflect.Type,java.lang.reflect.Type[],FieldSerialiser<E>>getSerialiserLookupFunction()booleanisAutoMatchSerialiser()booleanisUseCustomJsonSerialiser()java.util.Map<java.lang.reflect.Type,java.util.List<FieldSerialiser<?>>>knownClasses()WireDataFieldDescriptionparseWireFormat()voidserialiseObject(java.lang.Object obj)voidserialiseObject(java.lang.Object rootObj, ClassFieldDescription classField, int recursionDepth)voidsetAutoMatchSerialiser(boolean autoMatchSerialiser)voidsetDataBuffer(IoBuffer dataBuffer)voidsetMatchedIoSerialiser(java.lang.Class<? extends IoSerialiser> serialiserTemplate)voidsetUseCustomJsonSerialiser(boolean useCustomJsonSerialiser)
-
-
-
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.IoBufferioSerialiserTypeClass- optional IoSerialiser type class this IoClassSerialiser should start with (see also e.g.BinarySerialiser,CmwLightSerialiser, orJsonSerialiser
-
-
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 interfaceclassGenericArguments- 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()
-
parseWireFormat
public WireDataFieldDescription parseWireFormat()
-
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)
-
-