phax / ph-ubl

Java library for reading and writing UBL 2.0, 2.1, 2.2, 2.3 and 2.4 documents
Apache License 2.0
110 stars 40 forks source link

Problem with the type name XML (two classes have the same XML type name) #16

Closed jpaez147 closed 6 years ago

jpaez147 commented 6 years ago

Hello there:

First of all, congratulation for your powerfull project. At this time I am trying to work with this in and Android application.

This has been done, but when I am trying to do the newInstance of the JAXBContext i recieved these errors

Two classes have the same XML type name "NameType". Use @XmlType.name and @XmlType.namespace to assign different names to them. this problem is related to the following location: at un.unece.uncefact.data.specification.unqualifieddatatypesschemamodule._2.NameType at oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.NameType at protected oasis.names.specification.ubl.schema.xsd.commonbasiccomponents_2.NameType

I don´t know if this happened to some of you. I am working with libraries customized to java android.

Thank you in advance.

phax commented 6 years ago

Hi. I'm on vacation so I dont have a Laptop with me. Please look at class UBL21Reader (or UBL20Reader) for reading from various sources. Hth

jpaez147 commented 6 years ago

Hello. I have researched and the problem is on my side. Aparrently in android I cant read the namespace annotation inside @XMLElement (Jaxb), so it crashes with that.

Regards.

jpaez147 commented 6 years ago

At the end, I changed all child extends classes (for example TypeName) had the same xmltype name. So i modified it and it worked. I dont know if I will have any problem changing the names or commenting it.

Regards.

phax commented 6 years ago

What JAXB implementation are you using on your side? Statement from the JavaDocs of @XmlType on the namespace field:

Name of the target namespace of the XML Schema type. By default, this is the target namespace to which the package containing the class is mapped.

One NameType is in the namespace urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2 (see class package-info in that package) and the other one uses urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2. That how they should be differentiated. Seems like your JAXB implementation does not honor this namespace.

jpaez147 commented 6 years ago

You are right Sir. In the 2.1.10 version I had some problems in a test. But using the 2.2.2v I have not seen this problem. However, In the android app some prefixes dissapears (for example: In UBLExtension the prefix ext) but it seems to be a jaxb impl jar problem

phax commented 6 years ago

I'm glad it could be resolved. The namespace prefixes are not part of the XML itself. They are just a shortcut for the real namespace URL. So it makes no difference to the content of the XML document if you call it hugo or ext :) It's basically just a short cut. But you can supply a custom namespace-prefix-to-url map to the JAXB Marshaller so that it prints out nice documents!