Menu

#313 XMLGregorianCalendar to XMLGregorianCalendar not ok in 5.3.1

Dozer v5.3.1
open
nobody
5
2014-11-25
2011-03-11
No

When mapping XMLGregorianCalendar to XMLGregorianCalendar mapping exception occurs. Creation of xml gregorian like so (I know about the newXMLGregorianCalendar(in,int,...)):

XMLGregorianCalendar getXMLCalendar(int year, int month, int day){
XMLGregorianCalendar d = DatatypeFactory.newInstance().newXMLGregorianCalendar();
d.setYear(year);
d.setMonth(month);
d.setDay(day);
d.setHour(0);
d.setMinute(0);
d.setSecond(0)
return d
}

org.dozer.MappingException: java.lang.IllegalAccessException: Class org.dozer.util.ReflectionUtils can not access a member of class org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl with modifiers "public"
at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:88)
at org.dozer.util.ReflectionUtils.invoke(ReflectionUtils.java:291)
at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.invokeReadMethod(GetterSetterPropertyDescriptor.java:243)
at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.getPropertyValue(GetterSetterPropertyDescriptor.java:76)
at org.dozer.fieldmap.FieldMap.getSrcFieldValue(FieldMap.java:82)
at org.dozer.MappingProcessor.mapField(MappingProcessor.java:257)
at org.dozer.MappingProcessor.map(MappingProcessor.java:239)
at org.dozer.MappingProcessor.processSuperTypeMapping(MappingProcessor.java:998)
at org.dozer.MappingProcessor.map(MappingProcessor.java:228)
at org.dozer.MappingProcessor.mapCustomObject(MappingProcessor.java:472)
at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:427)
at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:324)
at org.dozer.MappingProcessor.mapField(MappingProcessor.java:270)
at org.dozer.MappingProcessor.map(MappingProcessor.java:239)
at org.dozer.MappingProcessor.mapCustomObject(MappingProcessor.java:472)
at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:427)
at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:324)
at org.dozer.MappingProcessor.mapField(MappingProcessor.java:270)
at org.dozer.MappingProcessor.map(MappingProcessor.java:239)
at org.dozer.MappingProcessor.map(MappingProcessor.java:181)
at org.dozer.MappingProcessor.map(MappingProcessor.java:134)
at org.dozer.MappingProcessor.map(MappingProcessor.java:129)
at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:118)
at org.dozer.Mapper$map.call(Unknown Source)

Discussion

  • dmitry (lv)

    dmitry (lv) - 2011-03-12

    please provide a test case reproducing this issue or at least more details what are the source and target beans

     
  • Timothy Freyne

    Timothy Freyne - 2011-03-14

    This bug apears when xerces is on the classpath! When using xerces the implementation of XMLGregorian comes from this api org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl
    otherwhise it comes from JDKs com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl

    When using Xerces the mapping fails when using the JDKs is works. I will included a small maven test project for you to run and you can see the issue.

     
  • Timothy Freyne

    Timothy Freyne - 2011-03-14

    Very basic Eclipse Maven project that displays the issue

     
  • Timothy Freyne

    Timothy Freyne - 2011-03-14

    added very basic simple test project that displays the issue

     
  • Cameron Dale

    Cameron Dale - 2011-06-14

    I was just stung by this bug as well. I also have xerces (via WebSphere) on the classpath.

    Are there any plans to fix it?

     
  • sheela

    sheela - 2011-07-20

    I face the same issue. Is there any solution for this?

     
  • Deenadayalan

    Deenadayalan - 2012-01-04

    Add custom converter to fix this issue.

    <custom-converters>
    <converter type="com.xxx.XMLGC2XMLGC">
    <class-a>javax.xml.datatype.XMLGregorianCalendar</class-a>
    <class-b>javax.xml.datatype.XMLGregorianCalendar</class-b>
    </converter>
    </custom-converters>
    XMLGC2XMLGC.java:

    public class XMLGC2XMLGC extends
    DozerConverter<XMLGregorianCalendar, XMLGregorianCalendar> {

    public XMLGC2XMLGC() {
    super(XMLGregorianCalendar.class, XMLGregorianCalendar.class);
    }

    @Override
    public XMLGregorianCalendar convertFrom(XMLGregorianCalendar src,
    XMLGregorianCalendar dest) {
    return src;
    }

    @Override
    public XMLGregorianCalendar convertTo(XMLGregorianCalendar src,
    XMLGregorianCalendar dest) {
    return dest;
    }

    }

     

Log in to post a comment.