Field alias not working due to Schema.getFieldAlias return null for fields not 
aliased
--------------------------------------------------------------------------------------

                 Key: AVRO-759
                 URL: https://issues.apache.org/jira/browse/AVRO-759
             Project: Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.4.1
            Reporter: Xiaolu Ye


When field alias is used, I get NullPointerException in Schema.Field.hashCode() 
because Field.name is null. This is because Schema.getFieldAlias return null 
for non-aliased field. Currently the code is as below:

private static String getFieldAlias(Name record, String field,
        Map<Name, Map<String, String>> fieldAliases) {
        Map<String, String> recordAliases = fieldAliases.get(record);
        if(recordAliases == null) {
            return field;
        }
        return recordAliases.get(field);
}

Given recordAliases only has aliases, it should return field itself if it's not 
in recordAliases as below:

private static String getFieldAlias(Name record, String field,
        Map<Name, Map<String, String>> fieldAliases) {
        Map<String, String> recordAliases = fieldAliases.get(record);
        if(recordAliases == null) {
            return field;
        }
        String ret = recordAliases.get(field);
        if (ret == null) ret = field;
        return ret;
}

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to