2016-07-06 37 views
10

Belirli bir XSD'den JaxB Sınıflarını oluşturmak için jaxb2-maven eklentisini kullanıyorum. İyi çalışıyor. Ama şimdi oluşturulan Sınıflarda java.util.Optional kullanmak istiyorum. Ancak JaxB, Optionals olmadan Sınıfları oluşturdu. Bu yüzden her Değişkenin Boş Kontrolünü yapmak zorundayım.java.util.Optional ile JaxB Sınıfları nasıl oluşturulur?

jaxb2-maven-plugin'in java.util.Optional'ı kullanacak şekilde nasıl yapılandırılacağını bilen var mı?

Yardımlarınız için teşekkürler!

+1

bağlama bu adaptörü kullanmak iyi bir seçim değildir. Neden xsd'yi nillable = "true" alanları ile zenginleştiremiyoruz. –

+0

@Mark ile katılıyorum, oluşturulan herhangi bir sınıfı değiştirmekten kaçınmalısınız. Benzer bir soru buldum ve oluşturulan sınıfları değiştirmeden özel bir bağdaştırıcı kullanılarak yapılabilir görünüyor: https://stackoverflow.com/questions/23071450/using-guavas-optional-with-xmlattribute – Woody

cevap

0

Belki daha genel bir şey bulabilirsin ama bunun mümkün olup olmadığından emin değilim. Yine de isteğe bağlı olmasını istediğiniz türleri için özel Adaptör tanımlayabilirsiniz. İşte

İlk Tamsayı

bir örnektir, Sonra bir Adaptörü

public final class IntegerOptionalAdapter extends OptionalAdapter<Integer> 
{ 
} 

tane oluştur oluşturulan sınıfları üzerinde çalışma

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

Aslında bu isteğe bağlı dosyaları saklamak için iyi bir fikir değil alanlar. Getiricilerde onları yaratmak daha iyi. –