I have a Java program that calls a C++ program to authenticate users. I would like the program to return either true or false, and if false, update a pointer to an error message variable that i then can grab from the Java program.
Another explination:
The native method would look something like this:
public native String takeInfo(String nt_domain, String nt_id, String nt_idca, String nt_password, String &error);
I would call that method here:
boolean canLogin = takeInfo(domain, userID, "", userPass, String &error)
Then in my C++ program I would check if the user is authenticated and store it in a boolean, then if false, get the error message and update &error with it. Then return that boolean to my Java program where I could display the error or let the user through.
Any ideas?
Originally I had it so the program would return either "true" or the error message, as a jstring, but my boss would like it as described above.
There is a common technique to simulate additional out parameter by using object array in parameter.
For example.
public native String takeInfo(String nt_domain, String nt_id, String nt_idca, String nt_password, String[] error);
boolean canLogin = takeInfo(domain, userID, "", userPass, error);
if(!canLogin){
String message = error[0];
}
There is a another way to do by returning a result object
class static TakeInfoResult{
boolean canLogon;
String error;
}
TakeInfoResult object = takeInfo(domain, userID, "", userPass);
In the 2nd case you will need to program more in the JNI layer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With