Joe Gamache created AVRO-1100:
---------------------------------

             Summary: ResolveUnion in 1.6.3 thinks a HashMap is a Record.
                 Key: AVRO-1100
                 URL: https://issues.apache.org/jira/browse/AVRO-1100
             Project: Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.6.3
         Environment: Windows, eclipse
            Reporter: Joe Gamache
         Attachments: IntegerMap.java, ReflectDataTest.java

Getting an exception thrown on line 542 of ReflectData.java.   Put a breakpoint 
there and found the following:

1. Datum is a HashMap with 119 entries.
2. If I select "getSchemaName(datum)" (line 539) and say inspect, it returns 
"java.util.HashMap"
3. The "indexByName" also being accessed on line 539 = {map=1, null=0}
4. In "getSchemaName" if I select "isMap(datum)" and say inspect, it returns 
"true" (this would then return "map" which DOES exist in the indexByName 
structure
5. However, still in "getSchemaName" if I select "isRecord(datum)" and say 
inspect, I also get back "true".  This then returns 
"getRecordSchema(datum).getFullName(), which is where the java.util.HashMap 
from item #2 comes from.   Since this is not in the "indexByName" map, I get an 
UnresolvedUntionException.

Either "isRecord" needs to be fixed to not return true for Maps, or the test 
for "isMap" at line 556 needs to moved up ahead of the test for "isRecord".

This works fine under 1.5.4, but breaks under 1.6.3.  I have a JUnit test that 
reproduces this, if I can figure out how to attach it :), I will.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to