简体   繁体   English

使用推土机的InstantiationException

[英]InstantiationException using Dozer

Using Dozer 5.4.0 to do mappings and am running into an InstantiationException from the DozerConverter abstract class. 使用Dozer 5.4.0进行映射,并从DozerConverter抽象类运行到InstantiationException。 Here is my class, for the most part...BTW - tried both List and Map as well as HashMap and ArrayList - not expecting a difference and not disappointed!! 这是我的课程,大多数情况下...顺便说一句-尝试了List和Map以及HashMap和ArrayList-没什么不同,也没有失望!

public class DozerJAXBElementConverter extends DozerConverter<ArrayList<JAXBElement<String>>, HashMap<String, String>> {

    public DozerJAXBElementConverter(Class<ArrayList<JAXBElement<String>>> prototypeA, Class<HashMap<String, String>> prototypeB) {
        super(prototypeA, prototypeB);
    }  

    @Override
   public ArrayList<JAXBElement<String>> convertFrom(HashMap<String, String> sourceStringMap, ArrayList<JAXBElement<String>> destJaxbList) {

    //Nothign to convert?
    if(sourceStringMap == null || sourceStringMap.isEmpty()) return null;
    //Instantiate list if not already 
    if(destJaxbList == null) destJaxbList = new ArrayList<JAXBElement<String>>();
    //convert
    Iterator<Entry<String, String>> setIterator = sourceStringMap.entrySet().iterator();
    while(setIterator.hasNext()){
        Entry<String,String> e = setIterator.next();
        if(e != null){
            destJaxbList.add(new JAXBElement<String>(new QName(e.getKey(), DozerJAXBElementConverter.NAMESPACE), String.class, e.getValue()));
        }
    }
    return destJaxbList;
}


@Override
public HashMap<String, String> convertTo(ArrayList<JAXBElement<String>> sourceJaxbList, HashMap<String, String> destStringMap) {
    //Nothing to convert?
    if(sourceJaxbList == null || sourceJaxbList.isEmpty()) return null;

    //Instantiate list if not already 
    if(destStringMap == null) destStringMap = new HashMap<String,String>();

    //convert
    Iterator<JAXBElement<String>> i = sourceJaxbList.iterator();
    while(i.hasNext()){
        JAXBElement<String> element = i.next();
        if(element != null){
            destStringMap.put(element.getName().toString(), element.getValue());
        }
    }
    return destStringMap;
}

}} }}

I implement the appropriate methods, all compiles and I get the following traceat runtime - Any help is appreciated: 我实现了适当的方法,所有的编译都得到了以下traceat运行时-感谢您的帮助:

org.dozer.MappingException: java.lang.InstantiationException: gov.dhs.cbp.ctpat.pip.translate.DozerJAXBElementConverter
    at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:82) ~[dozer-5.4.0.jar:?]
    at org.dozer.util.ReflectionUtils.newInstance(ReflectionUtils.java:360) ~[dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapUsingCustomConverter(MappingProcessor.java:971) ~[dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:345) ~[dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapField(MappingProcessor.java:288) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:248) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:197) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapCustomObject(MappingProcessor.java:495) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:446) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:342) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.mapField(MappingProcessor.java:288) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:248) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:197) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:187) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:124) [dozer-5.4.0.jar:?]
    at org.dozer.MappingProcessor.map(MappingProcessor.java:119) [dozer-5.4.0.jar:?]
    at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:120) [dozer-5.4.0.jar:?]

I simplified to : 我简化为:

public class DozerJAXBElementConverter extends DozerConverter<List, Map> {

    public DozerJAXBElementConverter(Class<List> prototypeA, Class<Map> prototypeB) {
        super(prototypeA, prototypeB);
    }

    public DozerJAXBElementConverter(){
        super(List.class, Map.class);
    }

to get it working - not sure why the original impl didn't work... 使它起作用-不知道为什么原始的impl不起作用...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM