protected final Set < String > inferThriftFieldIds ( ) { Set < String > fieldsWithConflictingIds = new HashSet <> ( ) ; // group fields by explicit name or by name extracted from field, method or property Multimap < String , FieldMetadata > fieldsByExplicitOrExtractedName = Multimaps . index ( fields , getOrExtractThriftFieldName ( ) ) ; inferThriftFieldIds ( fieldsByExplicitOrExtractedName , fieldsWithConflictingIds ) ; // group fields by name extracted from field, method or property // this allows thrift name to be set explicitly without having to duplicate the name on getters and setters // todo should this be the only way this works? Multimap < String , FieldMetadata > fieldsByExtractedName = Multimaps . index ( fields , extractThriftFieldName ( ) ) ; inferThriftFieldIds ( fieldsByExtractedName , fieldsWithConflictingIds ) ; return fieldsWithConflictingIds ; }
Assigns all fields an id if possible . Fields are grouped by name and for each group if there is a single id all fields in the group are assigned this id . If the group has multiple ids an error is reported .