Hi Matt,
In my case how can I covert from object to array? That is:
my destination field is Array and my source is an object. how to do that conversion using Dozer?
public abstract class ABC implements Serializable {
private final String originalIdentifier;
// some other stuffs
// And no setter getter for this originalIdentifier.
So, how to use dozer in this case to convert from dto.report.ReportOptions to domain.report.ReportOptions?
Can you please help me out? I've tried a lot of ways. But after conversion, those two fields are coming null if I use type="One-way" or else the error is like :
MapId: null
Type: null
Source parent class: dto.report.ReportOptions
Source field name: groupIds.groupIds
Source field type: class java.util.HashSet
Source field value:
Dest parent class: domain.report.ReportOptions
Dest field name: groupIds
Dest field type: [Ljava.lang.Integer;
java.lang.IllegalArgumentException: array element type mismatch
at java.lang.reflect.Array.set(Native Method)
at org.dozer.util.CollectionUtils.convertListToArray(CollectionUtils.java:98)
at org.dozer.MappingProcessor.mapListToArray(MappingProcessor.java:637)
at org.dozer.MappingProcessor.mapSetToArray(MappingProcessor.java:785)
at org.dozer.MappingProcessor.mapCollection(MappingProcessor.java:499)
at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:394)
at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:303)
at org.dozer.MappingProcessor.mapField(MappingProcessor.java:249)
at org.dozer.MappingProcessor.map(MappingProcessor.java:218)
at org.dozer.MappingProcessor.map(MappingProcessor.java:163)
at org.dozer.MappingProcessor.map(MappingProcessor.java:119)
at org.dozer.MappingProcessor.map(MappingProcessor.java:114)
at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:92)
Hi Matt,
In my case how can I covert from object to array? That is:
my destination field is Array and my source is an object. how to do that conversion using Dozer?
<mapping>
<class-a>domain.report.ReportOptions</class-a>
<class-b>dto.report.ReportOptions</class-b>
<field>
…..
</field>
</mapping>
My classes: domain.report.ReportOptions
@XmlRootElement
public class ReportOptions implements Serializable {
private Integer groupIds;
private Integer userIds;
// Respective Setter Getters
**************************************************************************************
dto.report.ReportOptions class:
@XmlRootElement(name = "reportOptions")
public class ReportOptions {
private GroupIdList groupIds;
private UserIdList userIds;
//Setters Getters for those fields
*******************************************************************
GroupIdList class:
@XmlRootElement(name = "groupIdList")
public class GroupIdList {
private Set<GroupIdentifier> groupIds = new HashSet<GroupIdentifier>();
/**
* Add a group id
*
* @param groupId
* Group id to add
*/
public void addGroup(GroupIdentifier groupId)
{
groupIds.add(groupId);
}
public Set<GroupIdentifier> getGroupIds()
{
return groupIds;
}
public void setGroupIds(Set<GroupIdentifier> groupIds)
{
this.groupIds = groupIds;
}
************************************************************************
GroupIdentifier class:
public class GroupIdentifier extends ABC {
public GroupIdentifier(String… components)
{
super(shiftPrefix("xyz", components));
}
}
********************************************************************
ABC class:
public abstract class ABC implements Serializable {
private final String originalIdentifier;
// some other stuffs
// And no setter getter for this originalIdentifier.
So, how to use dozer in this case to convert from dto.report.ReportOptions to domain.report.ReportOptions?
Can you please help me out? I've tried a lot of ways. But after conversion, those two fields are coming null if I use type="One-way" or else the error is like :
MapId: null
Type: null
Source parent class: dto.report.ReportOptions
Source field name: groupIds.groupIds
Source field type: class java.util.HashSet
Source field value:
Dest parent class: domain.report.ReportOptions
Dest field name: groupIds
Dest field type: [Ljava.lang.Integer;
java.lang.IllegalArgumentException: array element type mismatch
at java.lang.reflect.Array.set(Native Method)
at org.dozer.util.CollectionUtils.convertListToArray(CollectionUtils.java:98)
at org.dozer.MappingProcessor.mapListToArray(MappingProcessor.java:637)
at org.dozer.MappingProcessor.mapSetToArray(MappingProcessor.java:785)
at org.dozer.MappingProcessor.mapCollection(MappingProcessor.java:499)
at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:394)
at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:303)
at org.dozer.MappingProcessor.mapField(MappingProcessor.java:249)
at org.dozer.MappingProcessor.map(MappingProcessor.java:218)
at org.dozer.MappingProcessor.map(MappingProcessor.java:163)
at org.dozer.MappingProcessor.map(MappingProcessor.java:119)
at org.dozer.MappingProcessor.map(MappingProcessor.java:114)
at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:92)
My xml class goes here:
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
http://dozer.sourceforge.net/schema/beanmapping.xsd">
<mappings>
<mapping>
<class-a>domain.report.ReportOptions</class-a>
<class-b>dto.report.ReportOptions</class-b>
<field>
<a>groupIds</a>
<b>groupIds.groupIds</b>
</field>
</mapping>
</mappings>
Can any body help me regarding this??