You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Sean Griffin (Jira)" <ji...@apache.org> on 2022/06/14 17:14:00 UTC
[jira] [Commented] (AVRO-3046) avrogen does not map inner record namespaces
[ https://issues.apache.org/jira/browse/AVRO-3046?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17554201#comment-17554201 ]
Sean Griffin commented on AVRO-3046:
------------------------------------
I think this is a duplicate of AVRO-2883, which is already resolved (but currently not yet released).
> avrogen does not map inner record namespaces
> --------------------------------------------
>
> Key: AVRO-3046
> URL: https://issues.apache.org/jira/browse/AVRO-3046
> Project: Apache Avro
> Issue Type: Bug
> Components: csharp
> Affects Versions: 1.10.1
> Reporter: Philip Sanetra
> Priority: Major
>
> The avrogen tool for C# fails to map the namespaces of inner records.
> Example:
> {code:java}
> {
> "type": "record",
> "name": "ExampleRecord",
> "namespace": "com.example",
> "fields": [
> {
> "name": "Id",
> "type": "string",
> "logicalType": "UUID"
> },
> {
> "name": "InnerRecord",
> "type": {
> "type": "record",
> "name": "InnerRecord",
> "fields": [
> {
> "name": "Id",
> "type": "string",
> "logicalType": "UUID"
> }
> ]
> }
> }
> ]
> }
> {code}
> Command:
> {code:java}
> avrogen -s ./example.avsc ./dotnet --namespace "com.example:Example"
> {code}
> Result:
> {code:java}
> // ------------------------------------------------------------------------------
> // <auto-generated>
> // Generated by avrogen, version 1.10.0.0
> // Changes to this file may cause incorrect behavior and will be lost if code
> // is regenerated
> // </auto-generated>
> // ------------------------------------------------------------------------------
> namespace Example
> {
> using System;
> using System.Collections.Generic;
> using System.Text;
> using Avro;
> using Avro.Specific;
>
> public partial class ExampleRecord : ISpecificRecord
> {
> public static Schema _SCHEMA = Avro.Schema.Parse("{\"type\":\"record\",\"name\":\"ExampleRecord\",\"namespace\":\"com.example\",\"fields\":[{\"nam" +
> "e\":\"Id\",\"type\":\"string\"},{\"name\":\"InnerRecord\",\"type\":{\"type\":\"record\",\"name\":\"I" +
> "nnerRecord\",\"namespace\":\"com.example\",\"fields\":[{\"name\":\"Id\",\"type\":\"string\"}]}}" +
> "]}");
> private string _Id;
> private com.example.InnerRecord _InnerRecord;
> public virtual Schema Schema
> {
> get
> {
> return ExampleRecord._SCHEMA;
> }
> }
> public string Id
> {
> get
> {
> return this._Id;
> }
> set
> {
> this._Id = value;
> }
> }
> public com.example.InnerRecord InnerRecord
> {
> get
> {
> return this._InnerRecord;
> }
> set
> {
> this._InnerRecord = value;
> }
> }
> public virtual object Get(int fieldPos)
> {
> switch (fieldPos)
> {
> case 0: return this.Id;
> case 1: return this.InnerRecord;
> default: throw new AvroRuntimeException("Bad index " + fieldPos + " in Get()");
> };
> }
> public virtual void Put(int fieldPos, object fieldValue)
> {
> switch (fieldPos)
> {
> case 0: this.Id = (System.String)fieldValue; break;
> case 1: this.InnerRecord = (com.example.InnerRecord)fieldValue; break;
> default: throw new AvroRuntimeException("Bad index " + fieldPos + " in Put()");
> };
> }
> }
> }
> {code}
>
> In this case the InnerRecord is referenced via "com.Example.InnerRecord", but it should be "Example.InnerRecord".
--
This message was sent by Atlassian Jira
(v8.20.7#820007)