Class ProtoSerializerBuilder
java.lang.Object
com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializerBuilder
A builder for creating a ProtoRpcSerializer.
By default, is able to serialize base Java primitives (upcasting smaller numbers to integer), core Java classes such
as UUID, Date, and Locale, and some of the most fundamental Ignition classes,
such as NamedQuery and BasicQualifiedValue.
Additional serializers should be registered as needed for specific use cases. To do so,
- Choose a representation format (binary, 'composite', or 'sequence').
- Add an appropriate 'adapter' for that format that will handle serialization and deserialization.
- Ensure both sides of your RPC handshake are using an appropriately set up serializer.
-
Method Summary
Modifier and TypeMethodDescriptionaddAdapter(Class<T> clazz, ValueAdapter<T> adapter) addAdapter(Class<T> clazz, ValueSerializer<T> serializer, ValueDeserializer<T> deserializer) Registers an adapter capable of serializing and deserializing objects of the given class.addBinaryAdapter(Class<T> clazz, BinaryAdapter<T> adapter) Registers an adapter capable of serializing and deserializing objects of the given class.addBinaryAdapter(Class<T> clazz, BinarySerializer<T> serializer, BinaryDeserializer<T> deserializer) Registers an adapter capable of serializing and deserializing objects of the given class.<T,S extends com.inductiveautomation.ignition.common.gson.JsonSerializer<T> & com.inductiveautomation.ignition.common.gson.JsonDeserializer<T>>
ProtoSerializerBuilderaddGsonAdapter(Class<T> clazz, S adapter) Registers an adapter capable of serializing and deserializing objects of the given class.<T,S extends com.google.protobuf.Message>
ProtoSerializerBuilderaddProtoAdapter(Class<T> clazz, FragileFunction<byte[], S, com.google.protobuf.InvalidProtocolBufferException> protoDeserializer, FragileFunction<T, S, Exception> serializer, FragileFunction<S, T, Exception> deserializer) build()customizeGson(Consumer<com.inductiveautomation.ignition.common.gson.GsonBuilder> customizer) withFallbackSerializationStrategy(ValueAdapter<?> adapter) By default, the constructed serializer will fall back to a GSON reflection based approach to serialize values without more specific adapters registered.
-
Method Details
-
addBinaryAdapter
public <T> ProtoSerializerBuilder addBinaryAdapter(Class<T> clazz, BinarySerializer<T> serializer, BinaryDeserializer<T> deserializer) Registers an adapter capable of serializing and deserializing objects of the given class. This is the most flexible serialization method, as it allows for custom serialization and deserialization logic - you only need to provide your own logic to marshal to and from bytes. -
addBinaryAdapter
Registers an adapter capable of serializing and deserializing objects of the given class. This is the most flexible serialization method, as it allows for custom serialization and deserialization logic - you only need to provide your own logic to marshal to and from bytes.- Parameters:
clazz- the class this serializer pair works for. the class name is used as the identifier.
-
addAdapter
public <T> ProtoSerializerBuilder addAdapter(Class<T> clazz, ValueSerializer<T> serializer, ValueDeserializer<T> deserializer) Registers an adapter capable of serializing and deserializing objects of the given class. -
addAdapter
-
addGsonAdapter
public <T,S extends com.inductiveautomation.ignition.common.gson.JsonSerializer<T> & com.inductiveautomation.ignition.common.gson.JsonDeserializer<T>> ProtoSerializerBuilder addGsonAdapter(Class<T> clazz, S adapter) Registers an adapter capable of serializing and deserializing objects of the given class. This method will use the internal Gson instance to serialize and deserialize objects. -
addProtoAdapter
public <T,S extends com.google.protobuf.Message> ProtoSerializerBuilder addProtoAdapter(Class<T> clazz, FragileFunction<byte[], S, com.google.protobuf.InvalidProtocolBufferException> protoDeserializer, FragileFunction<T, S, Exception> serializer, FragileFunction<S, T, Exception> deserializer) -
customizeGson
public ProtoSerializerBuilder customizeGson(Consumer<com.inductiveautomation.ignition.common.gson.GsonBuilder> customizer) -
withFallbackSerializationStrategy
By default, the constructed serializer will fall back to a GSON reflection based approach to serialize values without more specific adapters registered. If you want to use a different approach, you can do so by providing serialization and deserialization methods appropriately. -
build
-