наследование jaxb, неупорядочивание вызывает исключение nullpointerexception

У меня есть абстрактный класс ElectivePolicy, который имеет два подкласса: PackagedElectivePolicy и SimpleElectivePolicy. для сопоставления этого отношения наследования я использую typeAdapter, и, как я проверил, метод unmarshal вызывается и работает хорошо, но в программном классе, который имеет объект выборной политики, объект остается нулевым. Можете ли вы помочь мне с этой проблемой? Благодарность

Выборная политика:

@XmlJavaTypeAdapter(ElectivePolicyAdapter.class)
    public abstract class ElectivePolicy {
}

ЭлективеПолициадаптер:

public class ElectivePolicyAdapter extends XmlAdapter<ElectivePolicyAdapter.AdaptedElectivePolicy, ElectivePolicy>{

    @Override
    public ElectivePolicy unmarshal(AdaptedElectivePolicy adaptedElectivePolicy) throws Exception {

        if(adaptedElectivePolicy == null)
            return null;
        if(adaptedElectivePolicy.packages == null ){
            SimpleElectivePolicy sep = new SimpleElectivePolicy();
            return sep;
        }
        else{
            PackegedElectivePolicy pep = new PackegedElectivePolicy();
            pep.packages = adaptedElectivePolicy.packages;  
            return pep;
        }
    }

    @Override
    public AdaptedElectivePolicy marshal(ElectivePolicy v) throws Exception {
        if(v == null)
            return null;
        AdaptedElectivePolicy adaptedElectivePolicy = new AdaptedElectivePolicy();
        if(v instanceof PackegedElectivePolicy){
            PackegedElectivePolicy pep = (PackegedElectivePolicy) v;
            adaptedElectivePolicy.packages = pep.packages;
        }
        return adaptedElectivePolicy;
    }

    public static class AdaptedElectivePolicy{
        @XmlElement
        ArrayList<Package> packages;
    }
}

Простая выборная политика:

public class SimpleElectivePolicy extends ElectivePolicy{
}

PackedElectivePolicy:

public class PackegedElectivePolicy extends ElectivePolicy {

    ArrayList<Package> packages;
    public PackegedElectivePolicy(){
        packages = new ArrayList<Package>();
    }
    public ArrayList<Package> getPackages() {
        return packages;
    }

Программа:

@XmlRootElement(name = "program")
@XmlType(propOrder = {"policy" })
public class Program {
    @XmlElement(name = "ElectivePolicy")
    public ElectivePolicy getPolicy() {
        return policy;
    }
 }

person user1630657    schedule 03.04.2013    source источник


Ответы (1)


Я не добавил сеттер для политики, и это вызвало исключение nullPointerException.

person user1630657    schedule 05.04.2013