[ 
https://issues.apache.org/jira/browse/AVRO-3161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17755555#comment-17755555
 ] 

Christophe Le Saec commented on AVRO-3161:
------------------------------------------

[~ehardy] : Could you precise more the context of issue.
On maven plugin, you can choose stringType, between String, Utf8 and 
CharSequence. If you chose String, there is no reference to Utf8 on code; so 
there is no reason to call the put method with a List of Utf8 ?


> 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)

Reply via email to