0
votes

We are using MobileFirst 7.1.0.0-MFPF-IF201705051403 version.

I want to know if WL.Client.invokeProcedure and Java Adapter combination works?

I tried invoking Java adapter with WL.Client.invokeProcedure, but it is giving me some error.

Sample Project

Java Adapter

@Path("/users")
public class TestJavaResource {
    /* Path for method: "<server address>/CustomAuth-release71/adapters/TestJava/users/username" */
    @GET
    @Path("username")
    public String helloUser(){
        return "Hello Username" ;
    }   
}

Added 2 button in index.html

<div>
        <input type="button" id="AuthSubmitButton" onclick="WLResourceRequestExample()" class="formButton" value="WLResourceRequestExample" />
        <input type="button" id="AuthCancelButton" onclick="invokeProcedureExample()" class="formButton" value="invokeProcedureExample" />
        </div>

main.js

function wlCommonInit(){

}

function invokeProcedureExample(){

    var invocationData = {
            adapter: "TestJava",
            procedure: "users/username",
            parameters: []
        };

        WL.Client.invokeProcedure(invocationData, {
            onSuccess : function(res){
                console.log(res);
            console.log('Success');
            },
            onFailure : function(res){
                console.log(res);
                console.log('Fail');},
            timeout : 30000
        });

}

function WLResourceRequestExample(){
    var resourceRequest = new WLResourceRequest("/adapters/TestJava/users/username", WLResourceRequest.GET, 30000);
    resourceRequest.send().then(
            function(res){
                console.log(res);
                console.log('Success')
                },
            function(res){
                    console.log(res);
                    console.log('Fail');
                    }
    );
}

When invoked Java Adapter through WLResourceRequest it works.

wlclient init started
    worklight.js:5384 before: initOptions.onSuccess
    worklight.js:5384 after: initOptions.onSuccess
    worklight.js:5384 wlclient init success
    test.js:1 test.js was run
    main.js:49 klass {responseHeaders: {…}, status: 200, responseText: "Hello Username", errorCode: undefined, errorMsg: "OK", …}
    main.js:50 Success
    worklight.js:5384 Request [/CustomAuth-release71/apps/services/api/HybridCustomAuth/common/query] 

When invoked Java Adapter through invokeProcedure it get error

Request [/CustomAuth-release71/apps/services/api/HybridCustomAuth/common/query]
worklight.js:1193 POST http://10.146.17.219:10080/CustomAuth-release71/apps/services/api/HybridCustomAuth/common/query 401 (Unauthorized)
request @ worklight.js:1193
initialize @ worklight.js:1151
klass @ worklight.js:540
__sendRequest @ worklight.js:3678
(anonymous) @ worklight.js:3661
(anonymous) @ wljq.js:1200
fire @ wljq.js:1045
add @ wljq.js:1091
(anonymous) @ wljq.js:1199
each @ wljq.js:656
(anonymous) @ wljq.js:1195
Deferred @ wljq.js:1256
then @ wljq.js:1194
sendRequest @ worklight.js:3656
initialize @ worklight.js:3522
klass @ worklight.js:540
__invokeProcedure @ worklight.js:9150
(anonymous) @ worklight.js:9193
setTimeout (async)
invokeProcedure @ worklight.js:9187
invokeProcedureExample @ main.js:32
onclick @ index.html:57
worklight.js:5384 Request [/CustomAuth-release71/apps/services/api/HybridCustomAuth/common/query]
worklight.js:5384 Procedure invocation error. Runtime: Procedure TestJava/users/username does not exist.
__log @ worklight.js:5384
PUBLIC_API.(anonymous function) @ worklight.js:5786
onInvokeProcedureSuccess @ worklight.js:9069
onSuccess @ worklight.js:3793
onWlSuccess @ worklight.js:3766
bound @ worklight.js:1029
respondToReadyState @ worklight.js:1287
onStateChange @ worklight.js:1209
bound @ worklight.js:1029
XMLHttpRequest.send (async)
request @ worklight.js:1193
initialize @ worklight.js:1151
klass @ worklight.js:540
__sendRequest @ worklight.js:3678
(anonymous) @ worklight.js:3661
(anonymous) @ wljq.js:1200
fire @ wljq.js:1045
add @ wljq.js:1091
(anonymous) @ wljq.js:1199
each @ wljq.js:656
(anonymous) @ wljq.js:1195
Deferred @ wljq.js:1256
then @ wljq.js:1194
sendRequest @ worklight.js:3656
handleResendOrSendPostAnswers @ worklight.js:4058
removeExpectedAnswer @ worklight.js:4027
challengeHandler.submitChallengeAnswer @ worklight.js:9888
wl_antiXSRFChallengeHandler.handleChallenge @ worklight.js:10655
AbstractChallengeHandler.startChallengeHandling @ worklight.js:9784
executeChallenge @ worklight.js:9690
checkResponseForChallenges @ worklight.js:9592
onWlFailure @ worklight.js:3830
bound @ worklight.js:1029
respondToReadyState @ worklight.js:1287
onStateChange @ worklight.js:1209
bound @ worklight.js:1029
XMLHttpRequest.send (async)
request @ worklight.js:1193
initialize @ worklight.js:1151
klass @ worklight.js:540
__sendRequest @ worklight.js:3678
(anonymous) @ worklight.js:3661
(anonymous) @ wljq.js:1200
fire @ wljq.js:1045
add @ wljq.js:1091
(anonymous) @ wljq.js:1199
each @ wljq.js:656
(anonymous) @ wljq.js:1195
Deferred @ wljq.js:1256
then @ wljq.js:1194
sendRequest @ worklight.js:3656
initialize @ worklight.js:3522
klass @ worklight.js:540
__invokeProcedure @ worklight.js:9150
(anonymous) @ worklight.js:9193
setTimeout (async)
invokeProcedure @ worklight.js:9187
invokeProcedureExample @ main.js:32
onclick @ index.html:57
main.js:38 klass {responseHeaders: {…}, status: 200, responseText: "/*-secure-↵{"WL-Authentication-Success":{"wl_antiX…],"isSuccessful":false,"warnings":[],"info":[]}*/", responseJSON: {…}, errorCode: "PROCEDURE_ERROR", …}
main.js:39 Fail
worklight.js:5384 Request [/CustomAuth-release71/apps/services/loguploader]
worklight.js:5384 Request [/CustomAuth-release71/apps/services/loguploader]
worklight.js:5983 Client logs successfully sent to the server
worklight.js:5983 Client logs successfully sent to the server
1

1 Answers

0
votes

invokeProcedure API is not compatible with JAVA Adapter and that is why you are ending up with the error. It is supported only with JavaScript Adapter.

However WLResourceRequest API supports both JAVA and JavaScript Adapters.