* Implementing global asJavaObject() function.
This commit is contained in:
parent
05a978e901
commit
b67a171983
1 changed files with 28 additions and 1 deletions
|
@ -74,7 +74,7 @@ public class GlobalObject extends ImporterTopLevel implements PropertyRecorder {
|
||||||
"getXmlDocument", "getHtmlDocument", "seal",
|
"getXmlDocument", "getHtmlDocument", "seal",
|
||||||
"getDBConnection", "getURL", "write", "writeln",
|
"getDBConnection", "getURL", "write", "writeln",
|
||||||
"serialize", "deserialize", "defineLibraryScope",
|
"serialize", "deserialize", "defineLibraryScope",
|
||||||
"wrapJavaMap", "unwrapJavaMap"
|
"wrapJavaMap", "unwrapJavaMap", "asJavaObject"
|
||||||
};
|
};
|
||||||
|
|
||||||
defineFunctionProperties(globalFuncs, GlobalObject.class, DONTENUM | READONLY | PERMANENT);
|
defineFunctionProperties(globalFuncs, GlobalObject.class, DONTENUM | READONLY | PERMANENT);
|
||||||
|
@ -426,6 +426,33 @@ public class GlobalObject extends ImporterTopLevel implements PropertyRecorder {
|
||||||
return new NativeJavaObject(core.global, obj, Map.class);
|
return new NativeJavaObject(core.global, obj, Map.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an object into a wrapper that exposes the java
|
||||||
|
* methods of the object to JavaScript. This is useful for
|
||||||
|
* treating native numbers, strings, etc as their java
|
||||||
|
* counterpart such as java.lang.Double, java.lang.String etc.
|
||||||
|
* @param obj a java object that is wrapped in a special way
|
||||||
|
* Rhino
|
||||||
|
* @return the object wrapped as NativeJavaObject, exposing
|
||||||
|
* the public methods of the underlying class.
|
||||||
|
*/
|
||||||
|
public Object asJavaObject(Object obj) {
|
||||||
|
if (obj == null || obj instanceof NativeJavaObject
|
||||||
|
|| obj == Undefined.instance) {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
if (obj instanceof Wrapper) {
|
||||||
|
obj = ((Wrapper) obj).unwrap();
|
||||||
|
} else if (obj instanceof Scriptable) {
|
||||||
|
String className = ((Scriptable) obj).getClassName();
|
||||||
|
if ("Date".equals(className)) {
|
||||||
|
return new NativeJavaObject(this,
|
||||||
|
new Date((long) ScriptRuntime.toNumber(obj)), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new NativeJavaObject(this, obj, null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue