Skip to content

Loading…

Type java.lang.Long mapping #40

Closed
ebasley opened this Issue · 4 comments

2 participants

@ebasley

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.

@joeferner
Owner

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

@joeferner joeferner closed this
@ebasley

Thank you,

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

@ebasley

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.

@joeferner
Owner

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.

@ArkeologeN ArkeologeN referenced this issue in inolen/gremlin-node
Closed

Error: installing gremlin with orientdb #60

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.