JAXB, XMLAdapter a primitivny typ

Radovana Straube radovana_straube na yahoo.com
Úterý Duben 21 12:02:14 CEST 2009


Dobry den,

mam XML-data s elementami typu:
<odpoved1>j</odpoved1>
<odpoved2>j</odpoved2>
j = ano (Ja)
n = nie (Nein)
a potrebujem pouzit unmarshalling, ktory mi tieto stringy prevedie na booleany. XmlAdapter som uz parkrat uspesne pouzila pri konvertovani stringov na stringy, ale konverziu boolean-string neviem rozchodit (autoboxing by mal snad fungovat).

public class BooleanAdapter extends XmlAdapter<String, Boolean> {

    @Override
    public Boolean unmarshal(String _sValue) {
        boolean value = BooleanType.YES.equals(_sValue);
        return new Boolean(value);
    }
    
    @Override
    public String marshal(Boolean _value){
        if (_value) {
            return BooleanType.YES.value;
        } else {
            return BooleanType.NO.value;
        }
    }   
}


@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Zeichen {

    @XmlJavaTypeAdapter(BooleanAdapter.class)
    @XmlElement(name="faeulnis")
    private boolean faeulnis;
    
    public boolean isFaeulnis() {
        return faeulnis;
    }
        
    public void setFaeulnis(boolean faeulnis) {
        this.faeulnis = faeulnis;
    }
....

Pri spusteni dostanem nasledovnu chybu:
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Adapter de.bolsys.stala.mortality.data.model.adapter.BooleanAdapter is not applicable to the field type boolean. 
        this problem is related to the following location:
                at @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(type=class javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT, value=class de.bolsys.stala.mortality.data.model.adapter.BooleanAdapter)
                at private boolean de.bolsys.stala.mortality.data.model.Zeichen.faeulnis

Nasla som na Internete, ze aj primitivne typy by mali fungovat ale popisane riesenie mi bohuzial nefungovalo. Vedel by mi prosim nieto poradit ako na to?

Dakujem
Radovana Straube


      



Další informace o konferenci Konference