Module org.apache.johnzon.jsonb
Class JsonbPolymorphismHandler
- java.lang.Object
- 
- org.apache.johnzon.jsonb.polymorphism.JsonbPolymorphismHandler
 
- 
 public class JsonbPolymorphismHandler extends java.lang.Object
- 
- 
Field SummaryFields Modifier and Type Field Description private java.util.Map<java.lang.Class<?>,JsonbPolymorphismTypeInfo>typeInfoCache
 - 
Constructor SummaryConstructors Constructor Description JsonbPolymorphismHandler()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description JsonbPolymorphismTypeInfogetOrCreatePolymorphismTypeInfo(java.lang.Class<?> clazz)Looks up aJsonbPolymorphismTypeInfofrom the cache or creates it for the givenclazzif it supports polymorphism.java.util.Map.Entry<java.lang.String,java.lang.String>[]getPolymorphismPropertiesToSerialize(java.lang.Class<?> clazz, java.util.Collection<java.lang.String> otherProperties)java.lang.Class<?>getTypeToDeserialize(jakarta.json.JsonObject jsonObject, java.lang.Class<?> clazz)booleanhasPolymorphism(java.lang.Class<?> clazz)voidvalidateJsonbPolymorphismAnnotations(java.lang.Class<?> classToValidate)ValidatesJsonbTypeInfoannotation on clazz and its parents (superclass/interfaces), seevalidateSubtypeCompatibility(Class),validateOnlyOneParentWithTypeInfo(Class)andvalidateNoTypeInfoKeyCollision(Class)protected voidvalidateNoTypeInfoKeyCollision(java.lang.Class<?> classToValidate)Validates thatJsonbTypeInfo.key()is only defined once in type hierarchy.protected voidvalidateOnlyOneParentWithTypeInfo(java.lang.Class<?> classToValidate)Validates that only one parent class (superclass + interfaces) hasJsonbTypeInfoannotationprotected voidvalidateSubtypeCompatibility(java.lang.Class<?> classToValidate)Validation fails if any clazz andJsonbSubtype.type()aren't compatible.
 
- 
- 
- 
Field Detail- 
typeInfoCacheprivate final java.util.Map<java.lang.Class<?>,JsonbPolymorphismTypeInfo> typeInfoCache 
 
- 
 - 
Method Detail- 
hasPolymorphismpublic boolean hasPolymorphism(java.lang.Class<?> clazz) 
 - 
getPolymorphismPropertiesToSerializepublic java.util.Map.Entry<java.lang.String,java.lang.String>[] getPolymorphismPropertiesToSerialize(java.lang.Class<?> clazz, java.util.Collection<java.lang.String> otherProperties)
 - 
getTypeToDeserializepublic java.lang.Class<?> getTypeToDeserialize(jakarta.json.JsonObject jsonObject, java.lang.Class<?> clazz)
 - 
getOrCreatePolymorphismTypeInfopublic JsonbPolymorphismTypeInfo getOrCreatePolymorphismTypeInfo(java.lang.Class<?> clazz) Looks up aJsonbPolymorphismTypeInfofrom the cache or creates it for the givenclazzif it supports polymorphism. This is the case if either one of these conditions is truthy:- clazzhas an- JsonbTypeInfoannotation
- any class in the type hierarchy of clazzhas anJsonbTypeInfoannotation
 - Parameters:
- clazz- Class to inspect
- Returns:
- JsonbPolymorphismTypeInfoif the class supports polymorphism,- nullotherwise
 
 - 
validateJsonbPolymorphismAnnotationspublic void validateJsonbPolymorphismAnnotations(java.lang.Class<?> classToValidate) ValidatesJsonbTypeInfoannotation on clazz and its parents (superclass/interfaces), seevalidateSubtypeCompatibility(Class),validateOnlyOneParentWithTypeInfo(Class)andvalidateNoTypeInfoKeyCollision(Class)- Parameters:
- classToValidate- Class to validate
- Throws:
- jakarta.json.bind.JsonbException- validation failed
 
 - 
validateSubtypeCompatibilityprotected void validateSubtypeCompatibility(java.lang.Class<?> classToValidate) Validation fails if any clazz andJsonbSubtype.type()aren't compatible.- Parameters:
- classToValidate- Class to validate
- Throws:
- jakarta.json.bind.JsonbException- validation failed
 
 - 
validateOnlyOneParentWithTypeInfoprotected void validateOnlyOneParentWithTypeInfo(java.lang.Class<?> classToValidate) Validates that only one parent class (superclass + interfaces) hasJsonbTypeInfoannotation- Parameters:
- classToValidate- class to validate
- Throws:
- jakarta.json.bind.JsonbException- validation failed
 
 - 
validateNoTypeInfoKeyCollisionprotected void validateNoTypeInfoKeyCollision(java.lang.Class<?> classToValidate) Validates thatJsonbTypeInfo.key()is only defined once in type hierarchy. AssumesvalidateOnlyOneParentWithTypeInfo(Class)already passed.- Parameters:
- classToValidate- class to validate
- Throws:
- jakarta.json.bind.JsonbException- validation failed
 
 
- 
 
-