2017-07-14 2 views
1

Wir verwenden jaxb2, um Java-Code aus XML-Schemadefinitionen für einige externe Daten zu generieren. Das Projekt ist ziemlich alt und hat das maven-jaxb-plugin 1.1.1 benutzt. Wir wollen auf jaxb2-maven-plugin updaten, welches auch jaxb2 verwenden wird, aber wir haben einige Unterschiede im generierten Code gefunden. Insbesondere haben wir Attribute in Form vonJAXB2 generiert Getter/Setter mit primitiven Typen für optionale Attribute

<xsd:attribute name="num" type="xsd:int" use="optional"> 

die zu Integer Felder in den generierten Code abgebildet werden.

@XmlAttribute(name = "num") 
protected Integer num; 

erzeugt jedoch jaxb2 Getter und Setter mit primitivem Typ anstelle von NULL festlegbaren Typen:

public int getNum() { 
    return num; 
} 

public void setNum(int value) { 
    this.num = value; 
} 

public boolean isSetNum() { 
    return (this.num!= null); 
} 

public void unsetNum() { 
    this.num = null; 
} 

jedoch unser aktueller Code geht davon aus, dass getNum gibt einen NULL festlegbaren geschachtelte Typen und testet auch diese in Einheit Tests, die scheitern mit einer Nullzeigerausnahme.

Gibt es eine Möglichkeit, Getter/Setter mit nullfähigen Typen für optionale Attribute zu generieren? Die xsd-Dateien werden von einem externen Anbieter zur Verfügung gestellt, so dass ich sie nicht modifizieren möchte. Wir setzen optionalProperty nicht in <globalBindings>, daher ist der Wert der Standardwert wrapper.

Antwort

1

Ich denke, ich habe eine Lösung für meine eigene Frage. Zusätzlich zu optionalProperty in globalBindings gibt es die Option generateIsSetMethod, die steuert, ob Methoden wie isSetNum generiert werden sollen oder nicht. Wenn dies aktiviert ist, werden primitive Typen wie int anstelle von Integer verwendet.

Verwandte Themen