Class SerializerRegistry
java.lang.Object
pt.unl.fct.di.novasys.babel2.channels.serializers.SerializerRegistry
Central registry that maps Java types and message IDs to their
BabelNetworkSerializer / BabelNetworkMessageSerializer
implementations.
All registrations happen in a static initializer block that runs exactly once
per JVM.
The registry uses the ServiceLoader mechanism to discover
implementations:
- Classes that implement
BabelNetworkMessageSerializer(and therefore carry a numeric message ID) are registered in an unmodifiable map keyed by their handled class. A duplicate-ID check is performed and aMessagesWithSameIdExceptionis thrown if two different messages share the same identifier. - Classes that implement the base
BabelNetworkSerializerbut are not message serializers (e.g.IPBabelNodeComponentSerialiazer,UUIDSerializer) are registered in a separate map keyed by their handled class, and are used to encode or decode nested object fields inside generated message serializers.
This class is not instantiable.
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T extends BabelMessage>
@Nullable BabelNetworkMessageSerializer<T> getMessageSerializerByClass(Class<T> clazz) Looks up theBabelNetworkMessageSerializerregistered for the given message class.static <T extends BabelMessage>
@Nullable BabelNetworkMessageSerializer<T> getMessageSerializerById(int id) Looks up theBabelNetworkMessageSerializerregistered for the given message ID.static <T> @Nullable BabelNetworkSerializer<T> getSerializerByClass(Class<T> clazz) Looks up theBabelNetworkSerializerregistered for the given object class.static <T extends BabelMessage>
@Nullable BasicSignedBabelMessageSerializer<T> getSignedBabelMessageSerializerByClass(Class<T> clazz) Looks up theBasicSignedBabelMessageSerializerregistered for the given message class.static <T extends BabelMessage>
@Nullable BasicSignedBabelMessageSerializer<T> Looks up theBasicSignedBabelMessageSerializerregistered for the given message ID.static <T extends BabelMessage>
@Nullable BasicSignedBabelMessageSerializer<T> getSignedMessageSerializerById(int id) Looks up theBasicSignedBabelMessageSerializerregistered for the given message ID.
-
Method Details
-
getMessageSerializerByClass
public static <T extends BabelMessage> @Nullable BabelNetworkMessageSerializer<T> getMessageSerializerByClass(Class<T> clazz) Looks up theBabelNetworkMessageSerializerregistered for the given message class.- Type Parameters:
T- the message type- Parameters:
clazz- the class object for the message type- Returns:
- the corresponding serializer, or
nullif no serializer has been registered forclazz
-
getSerializerByClass
Looks up theBabelNetworkSerializerregistered for the given object class. This method returns only non-message serializers.- Type Parameters:
T- the object type- Parameters:
clazz- the class object for the type to look up- Returns:
- the corresponding serializer, or
nullif no serializer has been registered forclazz
-
getSignedBabelMessageSerializerByClass
public static <T extends BabelMessage> @Nullable BasicSignedBabelMessageSerializer<T> getSignedBabelMessageSerializerByClass(Class<T> clazz) Looks up theBasicSignedBabelMessageSerializerregistered for the given message class.- Type Parameters:
T- the message type- Parameters:
clazz- the class object for the message type- Returns:
- the corresponding signed serializer, or
nullif no serializer has been registered forclazz
-
getMessageSerializerById
public static <T extends BabelMessage> @Nullable BabelNetworkMessageSerializer<T> getMessageSerializerById(int id) Looks up theBabelNetworkMessageSerializerregistered for the given message ID.- Type Parameters:
T- the message type- Parameters:
id- the message type ID- Returns:
- the corresponding serializer, or
nullif no serializer has been registered forid
-
getSignedBabelMessageSerializerById
public static <T extends BabelMessage> @Nullable BasicSignedBabelMessageSerializer<T> getSignedBabelMessageSerializerById(int id) Looks up theBasicSignedBabelMessageSerializerregistered for the given message ID.- Type Parameters:
T- the message type- Parameters:
id- the message type ID- Returns:
- the corresponding signed serializer, or
nullif no serializer has been registered forid
-
getSignedMessageSerializerById
public static <T extends BabelMessage> @Nullable BasicSignedBabelMessageSerializer<T> getSignedMessageSerializerById(int id) Looks up theBasicSignedBabelMessageSerializerregistered for the given message ID. Alias forgetSignedBabelMessageSerializerById(int).- Type Parameters:
T- the message type- Parameters:
id- the message type ID- Returns:
- the corresponding signed serializer, or
nullif no serializer has been registered forid
-