final List<Field> declaredFields = ReflectionUtils.getInheritedFields(pojoClass);
final Map<String, TupleRule<?, ?>> innerBuilders = new HashMap<String, TupleRule<?, ?>>();
for (Field declaredField : declaredFields)
{
Scalar scalar = declaredField.getAnnotation(Scalar.class);
Mapping mapping = declaredField.getAnnotation(Mapping.class);
Sequence sequence = declaredField.getAnnotation(Sequence.class);
TupleRule<?, ?> tupleRule = null;
TupleHandler tupleHandler = null;
boolean required = false;
if (scalar != null)
{
tupleRule = createScalarRule(declaredField, scalar);
tupleHandler = createHandler(scalar.handler(), scalar.alias(), ScalarNode.class);
required = scalar.required();
}
else if (mapping != null)
{
tupleRule = createMappingRule(declaredField, mapping);
tupleHandler = createHandler(mapping.handler(), mapping.alias(), MappingNode.class);
required = mapping.required();
if (tupleRule instanceof MapTupleRule)
{
((MapTupleRule) tupleRule).setInnerTupleHandler(createHandler(mapping.innerHandler(), "", null));
}
}
else if (sequence != null)
{
tupleRule = createSequenceRule(declaredField, sequence);