Import Java Jar in Mulesoft Project

62 Views Asked by At

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;
}
0

There are 0 best solutions below