George Fletcher created AVRO-1166:
-------------------------------------

             Summary: IDL return type of map<record> fails in schema processing
                 Key: AVRO-1166
                 URL: https://issues.apache.org/jira/browse/AVRO-1166
             Project: Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.7.1
            Reporter: George Fletcher


An IDL construct such as ...
{code:title=Foo.idl}
protocol MyService {
    record Bar {
        int     count;
        string  message;
    }

    map<Bar> getBars();
}
{code}

generates run-time errors because of this code in SpecificData.java
{code:title=SpecificData.java lines 189-196}
      } else if (Map.class.isAssignableFrom(raw)) {   // map
        java.lang.reflect.Type key = params[0];
        java.lang.reflect.Type value = params[1];
        if (!(type instanceof Class
              && CharSequence.class.isAssignableFrom((Class)type)))
          throw new AvroTypeException("Map key class not CharSequence: "+key);
        return Schema.createMap(createSchema(value, names));
      } else {
{code}

the issue is that CharSequence.class.isAssignableFrom((Class)type)) should 
really be CharSequence.class.isAssignableFrom((Class)*key*))

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to