[
https://issues.apache.org/jira/browse/AVRO-3161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17838922#comment-17838922
]
Martin Mucha commented on AVRO-3161:
------------------------------------
I can confirm that this does not happen in 1.11.0
> 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
> Priority: Major
>
> 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.20.10#820010)