Преобразование XSD в Avro - SchemaParseException: невозможно переопределить roleNotesGroup - PullRequest
1 голос
/ 21 апреля 2020

Я работаю над преобразованием xsd в схему avro

Фрагмент XSD:

<xsd:element name="roleNotesGroup">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="roleNotesSubGroup" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="roleNotesGroup" minOccurs="0" maxOccurs="unbounded">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="roleNotes" type="xsd:string" minOccurs="0">
                                            <xsd:annotation>
                                                <xsd:appinfo>
                                                    <source application="CUSTOMER" field="REL.CUSTOMER"/>
                                                    <fieldPiiAttribute value="INDIRECT"/>
                                                    <fieldPiiPurpose value="LEGITIMATE"/>
                                                    <fieldPiiEraseOption value="NO.ACTION"/>
                                                    <fieldPiiAccessibility value="ACCESS PORTABLE"/>
                                                </xsd:appinfo>
                                            </xsd:annotation>
                                        </xsd:element>
                                    </xsd:sequence>
                                    <xsd:attribute name="index" type="xsd:integer"/>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                        <xsd:attribute name="index" type="xsd:integer"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="index" type="xsd:integer"/>
        </xsd:complexType>
    </xsd:element>

Я использую

Schema schema = Schema.createRecord(name, null, null, false); 

для создания запись схемы avro. В приведенном выше xsd roleNotesGroup является дочерним элементом roleNotesSubGroup, который является дочерним для roleNotesGroup. Я могу рекурсивно получить схему avro до roleNotesSubGroup, которая затем преобразуется в список.

List<Schema.Field> is obtained recursively.

Теперь проблема состоит в том, когда я пытаюсь добавить сформированные поля в элемент roleNotesGroup элемента head, используя

Schema schema = Schema.createRecord(name, null, null, false);
schema.setFields(schemaFields);

Я получаю следующую ошибку: SchemaParseException: невозможно переопределить roleNotesGroup

Есть ли какие-либо ограничения в avro или avro конвертировании, что одни и те же имена не должны появляться снова?

...