Skip to content

Commit 465b4e8

Browse files
Informaticjoeferner
authored andcommitted
fix empty string promise suffix
Only notable behaviour broken with empty string promise suffix was static method calls on imported classes. (java.import('...').staticMethod()) This is due to double-promisification of callStaticMethod function. This change extracts raw, pre-promisified methods used later in runtime by java bridge as local variables and uses that instead. This also fixes a similar breakage if someone set "Sync" as promise suffix.
1 parent 6c48aac commit 465b4e8

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

lib/nodeJavaBridge.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ java.classpath.pushDir = function(dir) {
3030
};
3131
java.nativeBindingLocation = binaryPath;
3232

33+
var callStaticMethod = java.callStaticMethod;
34+
var callStaticMethodSync = java.callStaticMethodSync;
35+
var newInstanceSync = java.newInstanceSync;
36+
3337
var syncSuffix = undefined;
3438
var asyncSuffix = undefined;
3539
var ifReadOnlySuffix = '_';
@@ -230,7 +234,7 @@ java.import = function(name) {
230234
for (var i = 0; i < arguments.length; i++) {
231235
args.push(arguments[i]);
232236
}
233-
return java.newInstanceSync.apply(java, args);
237+
return newInstanceSync.apply(java, args);
234238
};
235239
var i;
236240

@@ -270,17 +274,17 @@ java.import = function(name) {
270274

271275
if (_.isString(syncSuffix)) {
272276
var syncName = usableName(methodName + syncSuffix);
273-
result[syncName] = java.callStaticMethodSync.bind(java, name, methodName);
277+
result[syncName] = callStaticMethodSync.bind(java, name, methodName);
274278
}
275279

276280
if (_.isString(asyncSuffix)) {
277281
var asyncName = usableName(methodName + asyncSuffix);
278-
result[asyncName] = java.callStaticMethod.bind(java, name, methodName);
282+
result[asyncName] = callStaticMethod.bind(java, name, methodName);
279283
}
280284

281285
if (promisify && _.isString(promiseSuffix)) {
282286
var promiseName = usableName(methodName + promiseSuffix);
283-
result[promiseName] = promisify(java.callStaticMethod.bind(java, name, methodName));
287+
result[promiseName] = promisify(callStaticMethod.bind(java, name, methodName));
284288
}
285289
}
286290
}

0 commit comments

Comments
 (0)