Konflikt nazw klas w generowanych klasach z XSD

0

Cześć.

Przychodzę do was z następującym problemem mianowicie, załóżmy że mamy dostarczonego XSD z klasami kontraktowymi:

<xsd:schema
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
    <xsd:complexType name="LogonReference">
        <xsd:sequence>
            <xsd:element name="user" type="xsd:string" minOccurs="0"/>
            <xsd:element name="password" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="Logon">
        <xsd:sequence>
            <xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
            <xsd:element name="reference">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="data" type="xsd:string" minOccurs="0"/>
                </xsd:sequence>
            </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

Do generowania klas używam plugina mavenowego:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>2.5.0</version>
                <executions>
                    <execution>
                        <id>xsd-to-java</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <packageName>com.matadini.data</packageName>
                    <sources>src/main/resources/xsd</sources>
                </configuration>
            </plugin>

Niestety, próba generowania klas z tej schemy klas, kończy się niepowodzeniem gdyż trafia się błąd:

[ERROR] file:/C:/Users/janusz_nosacz/IdeaProjects/jaxb-bug/src/main/resources/xsd/mydata.xsd [4,44] 
com.sun.istack.SAXParseException2: Two declarations cause a collision in the ObjectFactory class.

Zauważyłem że jeżeli zmienię wartość name z LogonReference na np. LogonReferences problem nie występuje. IMHO wygląda to tak że konflikt wynika z tego że klasa zagnieżdżona z Logon generuje nazwę logonReference i tym samym kłóci się ze wcześniej zadeklarowanym typem LogonReference.

I moje pytanie brzmi: jak to rozwiązać? Czy ktoś się już z tym spotkał? Próbowałem coś kombinować z binding.xml ale bez skutku. Będę wdzięczny za pomoc. ;)

Edit:
Dodam jeszcze informacyjnie że XSD nie może zostać zmodyfikowany gdyż pochodzi od firmy zewnętrznej, fajne przez poufne itp itd.

3

Jakiego systemu operacyjnego używasz? Windows nie rozróżnia wielkości liter. Jak to było przygotowywane na linuksie to mogli nawet tego problemu nie zauważyć

0

Wszystko leci na Windowsie.

Edit:
Dobra temat do zamknięcia, po X godzinach kopania się z tym szmelcem okazało się że wystarczyło poprawnie dorzucić do projektu plik z bindingiem i zmienić wartość factoryMethod

1 użytkowników online, w tym zalogowanych: 0, gości: 1