JAXB: automatisches Groß schreiben Property

meikmeik

Mitglied
Heho,

habe hier ein Problem mit JAXB.

in meiner XSD habe ich ein Property: xx_xxxxxx
Jaxb denkt es müsste daraus: xx_Xxxxxx machen.

Gibt es einen Weg, wie man das verhindern kann.

Um die Unterstriche zu erhalten benutze ich

<jxb:globalBindings underscoreBinding="asCharInWord" >

Über einen Lösungsvorschlag wäre ich sehr erfreut.
Zur Not würde ich auch die Methode direkt in JAXB überschreiben, wenn jemand weiß wie diese heist.

Meik wars
 

meikmeik

Mitglied
Auszug aus der XSD

[XML]
<xs:element name="hi_eintragsdatum" nillable="true" sql:relation="xxx" sql:field="hi_eintragsdatum" sql:datatype="datetime">
<xs:simpleType>
<xs:restriction base="xs:dateTime">
<xs:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
[/XML]

BINDING:
[XML]
<jxb:bindings version="2.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:ext="http://xml.w-wins.com/xjc-plugins/interfaces"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="../mud/XXX.xsd" node="xs:schema">
<jxb:globalBindings underscoreBinding="asCharInWord" >
<jxb:javaType name="java.util.Date" xmlType="xs:dateTime" parseMethod="com.xxx.cat.eingabe.unternehmen.utils.JAXBConverterDate.parseDate" printMethod="com.xxx.cat.eingabe.unternehmen.utils.JAXBConverterDate.printDate"/>
</jxb:globalBindings>

<jxb:schemaBindings>
<jxb:nameXmlTransform>
<jxb:elementName suffix="Base" />
</jxb:nameXmlTransform>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
[/XML]

RESULTAT:

@XmlElement(name = "hi_eintragsdatum", required = true, type = String.class, nillable = true)
@XmlJavaTypeAdapter(Adapter1 .class)
protected Date hiEintragsdatum;


--------------------------------------------------------------------------------------------------------------------------
@XmlElement(name = "hi_eintragsdatum" -> ist korrekt

protected Date hiEintragsdatum; -> ist falsch


Ist alles Korrekt(Klassenname, getter setter) bis auf die Properties.
 

mvitz

Top Contributor
Was genau stört dich daran?

JAXB versucht in den generierten Javaklassen sich an die gängigen Java-Standards zu halten. Da in diesen der _ nicht benutzt werden sollte, macht dies JAXB auch nicht.

Wenn du den Objektbaum letztlich serialisierst, nutzt JAXB den Wert von @XmlElement(name) um das XML zu generieren, d.h. das serialisierte XML genügt dem Schema.
 

meikmeik

Mitglied
Das Problem ist, dass er die Property einfach umbennent, es muss doch eine Möglichkeit geben dies zu unterbinden, Konvention hin oder her.
Das ist ja wie die Frage nach der { Klammer, darum sollte es ja nicht gehen.
 

Noctarius

Top Contributor
Aber wieso ist dir die Schreibweise der Properties wichtig, wenn du Getter / Setter hast (und diese hoffentlich auch nutzt)?

Da generierter Code normalerweise nur in Ausnahmefällen in ein Code-Repository gehört, who cares?
 

meikmeik

Mitglied
XSD aus Db erstellen;
Klassen aus XSD generieren;
Klassen befüllen:
Klassen der Speicherklasse übergeben,
Werte sind in der DB.

Speicherklasse braucht diese richtig geschriebenen Props sonst funzt das mapping nicht.

Für mich gibt es keinen ersichtlichen Grund warum JAXB meine Props umbenennt, bzw in JAVA Standards konvertiert wenn ich das nicht will, sowas muss man doch ausstellen können.

Bitte keine Gegenfragen stellen sondern versuchen das Problem zu beheben.
 

Noctarius

Top Contributor
Ok dann keine Gegenfrage:
Sicherlich kann man das Abstellen, wie das geht verrät sicher auch der Source der JAXB Implementierung die du nutzt. Da das Verhalten nicht zum Standard gehört wird es, wenn implementiert, in jeder Implementierung anders aussehen.

Alternativ sollte man überlegen wieso man überhaupt nicht standardkonformes Verhalten will. Generell erhöht das nur Einarbeitungsaufwand für Neulinge. Und ob der Grund für dich ersichtlich ist oder nicht spielt erstmal keine Rolle. JAXB ist ein Standard und hält sich als solcher an die Java Standards (alles andere wäre sinnfrei).

Wer auf interne Details achtet ist halt selber Schuld, wer sagt dir denn, dass der Generator in der nächsten Version nicht "mPropertyName" aus den Properties macht? Solange nur externes Verhalten dokumentiert und spezifiziert ist darf meine Implementierung intern machen was sie will und wenn ich die Daten über 100 Klassen verteilen möchte darf ich das auch.

Wenn man mehrere Dinge integrieren möchte muss man halt eventuell schon mal selber Hand anlegen.
 

meikmeik

Mitglied
Warum schafft JAXB den Underscore überall ohne ändern zu lassen nur bei den Props nicht.
Wo ist das ein Standard wenn man es ausschalten kann aber er es nicht überall macht ?
Gibt es dazu eine Erklärung die ich nicht nicht gefunden habe.

<jxb:globalBindings underscoreBinding="asCharInWord" >

Underscore oder nicht ist für mich wirklich eine Glaubensfrage, ähnlich { oder Tab oder Leerzeichen
 

Noctarius

Top Contributor
Spezifiziert ist das externe API welches die Klasse zur Verfügung stellen muss, frei implementierbar die interne Umsetzung. Was ist daran so schwer zu verstehen?

Versuch halt eine andere JAXB Implementierung oder bau dir deinen eigenen Generator wenn du so einen Wert darauf legst...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
Rakshan Unmarshalling multiple namespaces with jaxb XML & JSON 0
B JAXB und HTML XML & JSON 1
E JAXB und java.nio.file.Path XML & JSON 4
W jaxb-api XML Feld nicht gesendet setzt das Defaultvalue nicht XML & JSON 3
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
S JAXB mit mehreren zusammenhängenden .xsd-Files XML & JSON 0
N JAXB: Überflüssiges Wrapper-Tag für Map-Einträge XML & JSON 0
D JAXB mit Map und Color XML & JSON 2
K JAXB-XML unvollständig XML & JSON 1
K JAXB Unmarshelling XML & JSON 1
E JAXB und abstrakte Klasse(n) XML & JSON 0
B JAXB - Unmarshal -> Kinder bekommen und die Kinder von den Kinder XML & JSON 7
B JAXB - Marshal ArrayList XML & JSON 2
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
B JAXB-Fehler bei REST-Api XML & JSON 0
M JAXB HashMap Dynamisches Laden XML & JSON 0
M JAXB @XMLID und @XMLIDREF, wie Daten hinzufügen XML & JSON 2
P JAXB-Problem XML & JSON 1
A JAXB: XMLMixed generieren XML & JSON 0
R [JAXB] XmlRootElement und XmlType gemeinsam nutzen XML & JSON 0
I XML to Object - Mapping mit JAXB 1.0 XML & JSON 1
L JAXB - Generischen Wert mit Liste belegen XML & JSON 1
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
K JAXB Annotation @XMLRootElement vererben XML & JSON 0
F JAXB Unmarshal - Kein "default Constructor" XML & JSON 2
F.S.WhiTeY JAXB: Schema nicht "erben" XML & JSON 2
B JAXB - manuell Klassen aus xsd XML & JSON 3
S Jaxb Unmarshalling Problem XML & JSON 4
S JAXB - Any Elementliste - wie Werte verändern? XML & JSON 4
R JAXB: A cycle is detected in the object graph. This will cause infinitely deep XML XML & JSON 6
M JAXB versucht abstrakte Klasse zu erzeugen XML & JSON 7
C Projekt - JAXB, EMF oder doch DOM? XML & JSON 4
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
J JAXB: Mehrmals abspeichern XML & JSON 3
D XML Einlesen mit JaxB XML & JSON 4
W JAXB Binding customization XML & JSON 4
L JAXB und Interfaces XML & JSON 4
S Problem with JAXB unmarshalling classes that have the same name in @XmlRootElement XML & JSON 2
eykarhorn JAXB namespace attribut aus rootelement entfernen XML & JSON 2
nrg JAXB - nor any of its super class is known to this context XML & JSON 3
S aus XML mit JAXB zu Baumstruktur XML & JSON 3
nrg JAXB generell auf XMLs übertragbar XML & JSON 22
Landei JAXB: Wert von übergeordneten Element XML & JSON 4
B PropertyChangeListener generieren mit JAXB (xjc) XML & JSON 3
G JAXB und verschachtelte Elemente? XML & JSON 6
G JAXB XML-Attribute feststellen XML & JSON 4
S JAXB 2 und JSR 303 XML & JSON 11
M [JAXB] @XmlAnyElement namespace XML & JSON 4
R JAXB Unmarshal XML & JSON 2
J JAXB und ArrayList XML & JSON 4
Landei Jpa2 -> jaxb??? XML & JSON 9
M JAXB - HashMap XML & JSON 1
dzim JAXB-Unmarshalling ignoriert/löscht Einträge aus XML - oder lässt sie verschwinden XML & JSON 3
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
ruutaiokwu jaxb eclipse plugin... XML & JSON 3
K JAXB: Klassen mit Annotation Lesen/Schreiben XML XML & JSON 3
R JAXB ausgewählte Felder XML & JSON 10
TiME-SPLiNTER JAXB: com.sun.xml.bind.v2.ContextFactory XML & JSON 3
V JAXB und leere Listen XML & JSON 2
L compareto(), equals() in JAXB generierten Dateien XML & JSON 3
D jaxb validierung/verification vor marshalling XML & JSON 3
J JAXB mit GregorianCalendar XML & JSON 4
HombreDelMundo JAXB can't handle interfaces XML & JSON 4
N Individuelles Wrapper-Element um Collection mit JAXB XML & JSON 6
B JAXB Unmarshalling mehrerer Objekte XML & JSON 2
V JAXB schema 2 java XML & JSON 3
B JPA + JAXB Mapping Problem XML & JSON 2
S Navigieren in unbekannten JAXB-Objecten XML & JSON 2
J JAXB NullPointerException im ContextFinder XML & JSON 6
H JAXB und STAX XML & JSON 2
H JAXB Probleme beim Unmarshalling XML & JSON 3
C Serialisierung mit JAXB XML & JSON 6
K JAXB und Maps -> Marshalling-Problem XML & JSON 6
S JAXB und viele verschachtelte Attribute XML & JSON 1
J JAXB - Map XML & JSON 2
O JAXB generierte Klassen sollen Serializable implementieren XML & JSON 1
aze JaxB: Nullelemente in Array nicht anzeigen XML & JSON 3
turmaline JAXB can't handle interfaces XML & JSON 20
sambalmueslie JAXB - Unmarshall ein XML-Document das aus zwei XSD Definitionen besteht XML & JSON 8
S JAXB und abstrakte Klasse(n) XML & JSON 4
P JAXB: Marshalling XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
M JAXB: Wie folgendes Konstrukt abbilden? XML & JSON 20
A Jaxb und Interfaces XML & JSON 12
B JaxB und XSD :-) XML & JSON 8
G JAXB - Marshaller - kein Rückgabewert XML & JSON 2
N XML will nicht weder JAXB noch XStream XML & JSON 8
F Zugriff auf durch JAXB erzeugte Object-Struktur... XML & JSON 6
C Java-Imports bei Jaxb XML & JSON 8
F Marshaling eines JAXB Objektes worin ein anderes JAXB Objekt eingeschlossen ist XML & JSON 6
K JAXB, Vererbung und Codegeneration XML & JSON 2
M XmlRootElement und JAXB XML & JSON 4
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
G jaxb Vector (oder ähnliches) von Elementen generieren XML & JSON 6
M Jaxb Annotationen, Wert als XML Element XML & JSON 2
J JCheckbox abfragen und serialisieren mit JAXB 2.0 XML & JSON 15
F JAXB erste schritte XML & JSON 6

Ähnliche Java Themen

Neue Themen


Oben