I have a Java Jar imported as external library in my mule project, which has a class SellingEmployees with method employeeSell.
The method employeeSell accepts 2 parameters, JavaList as param1 and javaObject as param2.
I'm invoking the java method in my mule project as below along with class
<java:invoke-static doc:name="Invoke static" doc:id="c8453417-b2c3-40bb-b68c-d270958d5be0" class="com.employee.detail.service.SellingEmployees" method="employeeSell(java.util.List,com.employee.model.details.empDetails)">
<java:args ><![CDATA[#[{
arg0: vars.param1,
arg1: vars.param2
}]]]></java:args>
</java:invoke-static>
Sample Data which employeeSell method accepts is as below.
Data weave code used to generate both the arguments are as below
**param2 java-Object :**
%dw 2.0
output application/java
---
{empDetails: {
presentAvail: {
availableNumber: payload.data.availableNumber
},
futureAvail: payload.data.futureAvail map {
availableNumber: $.availableNumber
}
}
} as Object {class: com.employee.model.details.empDetails}
**param1 java-List :**
%dw 2.0
output application/json
---
[vars.apiResponse map {
sknempNumber: $.sknempNumber,
joinDate: $.joinDate as Date,
empType: if($."type" == 'PERMANENT') true else false
}]
as Array {class : "java.Util.ArrayList<sellingEmpDetails>" }
When these 2 parameters are passed to Java Static, I'm getting JAVA:ARGUMENTS_MISMTACH error as below. Can anyone suggest , What am I missing while passing the array argument to my java method?
Failed to invoke static Method 'employeeSell(java.util.List,com.employee.model.details.empDetails)' from Class 'com.employee.detail.service.SellingEmployees'.
Expected arguments are [java.util.List<com.employee.model.details.sellingEmpDetails> collectsellingEmpDetails, com.employee.model.details.empDetails empDetails] and invocation was attempted with arguments [org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider arg0, com.employee.model.details.empDetails empDetails arg1]: java.lang.IllegalArgumentException - argument type mismatch
Java Class Details for the List is as below:
package com.employee.detail.service.request;
import java.time.LocalDate;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class sellingEmpDetails {
private String sknempNumber;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate joinDate;
private boolean empType;
private int onSellQuantity;
private int waitSellQuantity;
private int preSellInventory;
}