Martin Mucha created AVRO-3161: ---------------------------------- Summary: bad classcast, avro-maven-plugin not respecing configured stringType for collections Key: AVRO-3161 URL: https://issues.apache.org/jira/browse/AVRO-3161 Project: Apache Avro Issue Type: Bug Affects Versions: 1.9.2 Reporter: Martin Mucha
Using avro schema defining element as: {code:java} { "name": "field1", "type": "string" },{code} and {code:java} { "name": "field2", "type": ["null", { "type": "array", "name": "field2Array", "items": { "type": "string" } }], "default": null }{code} the avro-maven-plugin will generate put method, which will look like this: {code:java} public void put(int field$, java.lang.Object value$) { switch (field$) { case 1: field1 = value$ != null ? value$.toString() : null; break; case 19: field2 = (java.util.List<java.lang.String>)value$; break; default: throw new org.apache.avro.AvroRuntimeException("Bad index"); } }{code} the problem is, that `value$.toString()` will correctly turn Utf8 to String, while unchecked cast of List<Utf8> to List<String> will successfully trick the compiller, but the items will still be of type Utf8. Plugin configuration: {code:java} <plugin> <groupId>org.apache.avro</groupId> <artifactId>avro-maven-plugin</artifactId> <version>1.9.2</version> <executions> <execution> <id>generateClassesFromTestSchemata</id> <phase>generate-sources</phase> <goals> <goal>schema</goal> </goals> <configuration> <stringType>String</stringType> <fieldVisibility>PRIVATE</fieldVisibility> <testSourceDirectory>...</testSourceDirectory> <testOutputDirectory>...</testOutputDirectory> </configuration> </execution> </executions> </plugin>{code} -- This message was sent by Atlassian Jira (v8.3.4#803005)