Class EnumTypeAdapterFactory
java.lang.Object
io.datarouter.gson.typeadapterfactory.EnumTypeAdapterFactory
- All Implemented Interfaces:
com.google.gson.TypeAdapterFactory
- Direct Known Subclasses:
EnumTypeAdapterFactory.AnonymousAllowUnregisteredEnumTypeAdapterFactory,EnumTypeAdapterFactory.RejectAllEnumTypeAdapterFactory
public abstract class EnumTypeAdapterFactory
extends Object
implements com.google.gson.TypeAdapterFactory
Intercepts all enum serialization, preventing accidental serialization of enums without explicitly specifying
an encoding.
This will reject unknown enums by default but can allow them by setting allowUnregistered()
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThis can be used to intercept and log unregistered enums, however when multiple of these exist, the logs will not differentiate between them.static class -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected EnumTypeAdapterFactoryNot recommended.<T> com.google.gson.TypeAdapter<T>create(com.google.gson.Gson gson, com.google.gson.reflect.TypeToken<T> type) protected <T> EnumTypeAdapterFactoryprotected <T extends Enum<T>>
EnumTypeAdapterFactoryregisterStringMappedEnumOptional(io.datarouter.enums.MappedEnum<T, String> mappedEnum, T replacement) protected <T extends Enum<T>>
EnumTypeAdapterFactoryregisterStringMappedEnumOptionalWithLogging(io.datarouter.enums.MappedEnum<T, String> mappedEnum, T replacement) protected <T extends Enum<T>>
EnumTypeAdapterFactoryregisterStringMappedEnumRequired(io.datarouter.enums.MappedEnum<T, String> mappedEnum) protected EnumTypeAdapterFactoryNot recommended.
-
Constructor Details
-
EnumTypeAdapterFactory
public EnumTypeAdapterFactory()
-
-
Method Details
-
allowUnregistered
Not recommended. Instead of throwing an exception for unregistered Enum types, let Gson serialize by enum.name() or annotation -
suppressUnregisteredLogging
Not recommended. Suppress the warning logs when unregistered enums are encountered, for cases where the enums can't be known about ahead of time. -
register
protected <T> EnumTypeAdapterFactory register(Class<T> cls, com.google.gson.TypeAdapter<T> typeAdapter) -
registerStringMappedEnumRequired
protected <T extends Enum<T>> EnumTypeAdapterFactory registerStringMappedEnumRequired(io.datarouter.enums.MappedEnum<T, String> mappedEnum) -
registerStringMappedEnumOptional
protected <T extends Enum<T>> EnumTypeAdapterFactory registerStringMappedEnumOptional(io.datarouter.enums.MappedEnum<T, String> mappedEnum, T replacement) -
registerStringMappedEnumOptionalWithLogging
protected <T extends Enum<T>> EnumTypeAdapterFactory registerStringMappedEnumOptionalWithLogging(io.datarouter.enums.MappedEnum<T, String> mappedEnum, T replacement) -
create
public <T> com.google.gson.TypeAdapter<T> create(com.google.gson.Gson gson, com.google.gson.reflect.TypeToken<T> type) - Specified by:
createin interfacecom.google.gson.TypeAdapterFactory
-