I am trying to set attributes of InvoiceDocument which contains one userDefined class EventPayload. The primitive type of objects in EventPayload are getting mapped but inside that one more class is there OrderInvoice which is setting as null. I have created a different mapper to set that but not sure how to link them. In source object OrderInvoice is a list but in Target it is an object.
@BeanMapping(ignoreByDefault = true)
@Mapping(target = "eventPayload", source = "baseRequest.invoice.eventPayload")
InvoiceDocument createInvoiceDocument(PaymentTriggerBaseModel baseRequest);
@Mapping(target = "orderInvoice", source ="baseRequest.invoice.eventPayload.orderInvoices", qualifiedByName="firstElement")
OrderInvoice createEventPayload(PaymentTriggerBaseModel baseRequest);
@Named("firstElement")
default OrderInvoice map(List<com.sams.oms.ng.common.models.payment.request.OrderInvoice> value) {
if(value == null) return null;
if(value.isEmpty()) return null;
return mapInvoice(value.get(0));
}
abstract com.sams.oms.ng.common.models.payment.cosmos.OrderInvoice mapInvoice(com.sams.oms.ng.common.models.payment.request.OrderInvoice invoice);
POJO classes
public class InvoiceDocument {
private EventPayload eventPayload;
}
public class EventPayload{
private String customerId;
private String enterpriseCode;
private OrderInvoice orderInvoice;
}
public class OrderInvoice {
private String invoiceNo;
private String invoiceType;
}
Error
java: Unmapped target property: "orderInvoice". Mapping from property "Order baseRequest.invoice.eventPayload" to "EventPayload eventPayload".