Class ClassParser
java.lang.Object
org.eclipse.yasson.internal.ClassParser
Created a class internal model.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Stringprivate static final Stringprivate final JsonbContextprivate static final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static voidcheckPropertyNameClash(List<PropertyModel> collectedProperties, Class<?> cls) private List<PropertyModel> getSortedParentProperties(ClassModel classModel, JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) Merges current class properties with parent class properties.private static booleanprivate static booleanprivate static booleanprivate static booleanisSpecialCaseMethod(Class<?> clazz, Method m) Filter out certain methods that get forcibly added to some classes.private static StringlowerFirstLetter(String name) private static PropertymergeProperty(Property current, PropertyModel parentProp, JsonbAnnotatedElement<Class<?>> classElement) private static voidmergePropertyModels(List<PropertyModel> unsortedMerged) private voidparseClassAndInterfaceMethods(JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) private static voidparseFields(JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) private voidparseIfaceMethodAnnotations(Class<?> ifc, JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) private voidparseMethods(Class<?> clazz, JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) (package private) voidparseProperties(ClassModel classModel, JsonbAnnotatedElement<Class<?>> classElement) Parse class fields and getters setters.private PropertyregisterMethod(String propertyName, Method method, JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) private static MethodselectMostSpecificNonDefaultMethod(Method current, Method parent) Select the correct method to use.private static StringtoPropertyMethod(String name)
-
Field Details
-
IS_PREFIX
- See Also:
-
GET_PREFIX
- See Also:
-
SET_PREFIX
- See Also:
-
jsonbContext
-
-
Constructor Details
-
ClassParser
ClassParser(JsonbContext jsonbContext)
-
-
Method Details
-
parseProperties
Parse class fields and getters setters. Merge to java bean like properties. -
mergePropertyModels
-
parseClassAndInterfaceMethods
private void parseClassAndInterfaceMethods(JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) -
parseIfaceMethodAnnotations
-
registerMethod
-
parseMethods
-
isSpecialCaseMethod
-
isGetter
-
isSetter
-
toPropertyMethod
-
lowerFirstLetter
-
isPropertyMethod
-
parseFields
private static void parseFields(JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) -
checkPropertyNameClash
-
getSortedParentProperties
private List<PropertyModel> getSortedParentProperties(ClassModel classModel, JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) Merges current class properties with parent class properties. If javabean property is declared in more than one inheritance levels, merge field, getters and setters of that property.For example BaseClass contains field foo and getter getFoo. In BaseExtensions there is a setter setFoo. All three will be merged for BaseExtension.
Such property is sorted based on where its getter or field is located.
-
selectMostSpecificNonDefaultMethod
Select the correct method to use. The correct method is the most specific method which is not a default one:- if current is not defined, returns parent;
- if parent is not defined, returns current;
- if current is a default method and parent is not, returns parent;
- By definition, it is not possible to make a choice betweentwo default
methods.
Here, the most specific is selected, but a concrete implementation MUST eventually be provided as the source code won't even compile if such a method does not exist - returns current otherwise
- Parameters:
current- current 'child' implementationparent- parent implementation- Returns:
- effective method to register as getter or setter
-
mergeProperty
private static Property mergeProperty(Property current, PropertyModel parentProp, JsonbAnnotatedElement<Class<?>> classElement)
-