2016-07-06 51 views
10

Uso il plugin jaxb2-maven per generare classi JaxB da un determinato XSD. Funziona bene. Ma ora voglio usare java.util.Optional nelle Classi generate. Ma JaxB ha generato le Classi senza Optionals. Quindi sono costretto a fare un controllo Null di ogni variabile.Come generare classi JaxB con java.util.Optional?

Qualcuno sa come deve essere configurato il plugin jaxb2-maven per utilizzare java.util.Optional?

Grazie per il vostro aiuto!

+1

Lavorare su classi generate non è buona scelta. Perché non arricchire il xsd con i campi nillable = "true". –

+0

Sono d'accordo con @Mark dovresti evitare di modificare qualsiasi classe generata. Ho trovato una domanda simile e Sembra fattibile utilizzando l'adattatore personalizzato senza modificare le classi generate: https://stackoverflow.com/questions/23071450/using-guavas-optional-with-xmlattribute – Woody

risposta

0

Forse potresti trovare qualcosa di più generico ma non sono sicuro che sia possibile. Ad ogni modo è ancora possibile definire l'adattatore personalizzato per i tipi che si desidera siano facoltativi.

Ecco un esempio di Integer

In primo luogo, creare un adattatore

public final class IntegerOptionalAdapter extends OptionalAdapter<Integer> 
{ 
} 

Quindi utilizzare questo adattatore nel vostro legame

@XmlAttribute 
@XmlJavaTypeAdapter(IntegerOptionalAdapter.class) 
private Optional<Integer> someInteger; 
+0

In realtà non è una buona idea memorizzare gli optionals in campi. Meglio crearli nei getter. –