joeferner / node-java

Bridge API to connect with existing Java APIs.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Type java.lang.Long mapping

ebasley opened this issue · comments

Take a class Test like this :

public class Test {
public static void test(java.lang.Long a){
System.out.println("test1");
}
}

Try this :

var java=require('java')
java.classpath.push('./test.jar');
var Test = java.import('Test');
Test.testSync(java.newInstanceSync("java.lang.Long", 1));

Gives :

Error: Could not find method "test(java.lang.Integer)" on class "class Test".
Possible matches:
public static void Test.test(java.lang.Long)

done it with last build.

Regards.

Just published a new version (v0.2.0) which keeps longs and long objects.

Thank you,

but when using v 0.2.0 with a Long as parameter, we have this message: "javaToV8: unhandled type: 0x003"

I spent this morning using the new version, and I'm afraid this is not the good solution because now we have to cast all long java objects to integer (intValue()) to use them in javascript, it's a long and dangerous task =>
java.newInstanceSync('java.lang.Long', 1) +1 => '11'
and at the end I had to uncomment your patch !!
I think it's very important to convert transparantly Long to Number, but then how to find the rigth method from JS to java when the last is using long parameters ?
Can't we image to explicitly cast, with something like Number#toLong() ?
Regards.

OK, I think I came up with a better solution. I've published v0.2.1 with the fix. I've also updated the readme with an example and description of how to handle longs.