I tried to implement a NativeObject in javascript as following but
some error while trying to iterate the properties.
Some of my code are borrowed from HelmaNG framework.

I'm trying to make a http://jsext.sourceforge.net/JSEXT1.ActiveDirectory.html
API for my Rhino application.
Any suggestion?

importPackage(org.mozilla.javascript);

function MyNative(obj) {
    var nativeObj = new JavaAdapter(NativeObject, {
        get: function(name, start) {
            var value = obj[name];
            if (value === undefined) {
                return Scriptable.NOT_FOUND;
            } else {
                return value;
            }
        },

        put: function(name, start, value) {
                        if (obj[name]) {
                obj[name] = value;
            }
        },

        has: function(name, start) {
            return obj in name;
        },

        getIds: function() {
            var ids = this.super$getIds().concat();
            for (var id in obj) {
                ids.push(id);
            }
            return ids;
        },

        equivalentValues: function(other) {
            if (other == this) {
                return true;
            }
            return Scriptable.NOT_FOUND;
        }
    });
    nativeObj.__proto__ = this.__proto__;
    return nativeObj;
}

Test code:

var test = new MyNative({key: 'value'});
print('key' in test);
print(test.key);
for(var prop in test){
        print(prop);
}

Output:
true
value
Exception in thread "main" java.lang.ClassCastException:
org.mozilla.javascript.NativeArray cannot be cast to
[Ljava.lang.Object;
        at adapter1.getIds(<adapter>)
        at org.mozilla.javascript.ScriptRuntime.enumChangeObject
(ScriptRuntime.java:2088)
        at org.mozilla.javascript.ScriptRuntime.enumInit(ScriptRuntime.java:
1987)
        at
org.mozilla.javascript.gen.E__eclipse_workspaces_appengine_jsTool_app_test_native_js_1._c_script_0
(Unknown Source)
        at
org.mozilla.javascript.gen.E__eclipse_workspaces_appengine_jsTool_app_test_native_js_1.call
(Unknown Source)
        at org.mozilla.javascript.ContextFactory.doTopCall
(ContextFactory.java:405)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:
3059)
        at
org.mozilla.javascript.gen.E__eclipse_workspaces_appengine_jsTool_app_test_native_js_1.call
(Unknown Source)
        at
org.mozilla.javascript.gen.E__eclipse_workspaces_appengine_jsTool_app_test_native_js_1.exec
(Unknown Source)
        at org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:
563)
        at org.mozilla.javascript.tools.shell.Main.processFileSecure
(Main.java:485)
        at org.mozilla.javascript.tools.shell.Main.processFile(Main.java:451)
        at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:
443)
        at org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:
196)
        at org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:117)
        at org.mozilla.javascript.Context.call(Context.java:522)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:
514)
        at org.mozilla.javascript.tools.shell.Main.exec(Main.java:179)
        at org.mozilla.javascript.tools.shell.Main.main(Main.java:157)
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino

Reply via email to