## helma.scripting.rhino
Class JSAdapter

    java.lang.Object
      helma.scripting.rhino.JSAdapter

All Implemented Interfaces:
  org.mozilla.javascript.Callable, org.mozilla.javascript.Function, org.mozilla.javascript.Scriptable

    public final class JSAdapter

extends java.lang.Object
implements org.mozilla.javascript.Scriptable, org.mozilla.javascript.Function

JSAdapter is java.lang.reflect.Proxy equivalent for JavaScript. JSAdapter calls specially named JavaScript methods on an adaptee object when property access is attempted on it. Example: var y = { __get__ : function (name) { ... } __has__ : function (name) { ... } __put__ : function (name, value) {...} __delete__ : function (name) { ... } __getIds__ : function () { ... } }; var x = new JSAdapter(y); x.i; // calls y.__get__ i in x; // calls y.__has__ x.p = 10; // calls y.__put__ delete x.p; // calls y.__delete__ for (i in x) { print(i); } // calls y.__getIds__ If a special JavaScript method is not found in the adaptee, then JSAdapter forwards the property access to the adaptee itself. JavaScript caller of adapter object is isolated from the fact that the property access/mutation/deletion are really calls to JavaScript methods on adaptee. Use cases include 'smart' properties, property access tracing/debugging, encaptulation with easy client access - in short JavaScript becomes more "Self" like. Note that Rhino already supports special properties like __proto__ (to set, get prototype), __parent__ (to set, get parent scope). We follow the same double underscore nameing convention here. Similarly the name JSAdapter is derived from JavaAdapter -- which is a facility to extend, implement Java classes/interfaces by JavaScript.

Since:
  1.6

Method Summary
`java.lang.Object` `call(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable scope, org.mozilla.javascript.Scriptable thisObj, java.lang.Object[] args)`
`org.mozilla.javascript.Scriptable` `construct(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable scope, java.lang.Object[] args)`
`void` `delete(int index)`
`void` `delete(java.lang.String name)`
`java.lang.Object` `get(int index, org.mozilla.javascript.Scriptable start)`
`java.lang.Object` `get(java.lang.String name, org.mozilla.javascript.Scriptable start)`
`org.mozilla.javascript.Scriptable` `getAdaptee()`
`java.lang.String` `getClassName()`
`java.lang.Object` `getDefaultValue(java.lang.Class hint)`
`java.lang.Object[]` `getIds()`
`org.mozilla.javascript.Scriptable` `getParentScope()`
`org.mozilla.javascript.Scriptable` `getPrototype()`
`boolean` `has(int index, org.mozilla.javascript.Scriptable start)`
`boolean` `has(java.lang.String name, org.mozilla.javascript.Scriptable start)`
`boolean` `hasInstance(org.mozilla.javascript.Scriptable scriptable)`
`static void` `init(org.mozilla.javascript.Context cx, org.mozilla.javascript.Scriptable scope, boolean sealed)`
`void` `put(int index, org.mozilla.javascript.Scriptable start, java.lang.Object value)`
`void` `put(java.lang.String name, org.mozilla.javascript.Scriptable start, java.lang.Object value)`
`void` `setAdaptee(org.mozilla.javascript.Scriptable adaptee)`
`void` `setParentScope(org.mozilla.javascript.Scriptable parent)`
`void` `setPrototype(org.mozilla.javascript.Scriptable prototype)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### init

    public static void init(org.mozilla.javascript.Context cx,
                            org.mozilla.javascript.Scriptable scope,
                            boolean sealed)
                     throws org.mozilla.javascript.RhinoException

  Throws:
    `org.mozilla.javascript.RhinoException`

### getClassName

    public java.lang.String getClassName()

  Specified by:
    `getClassName` in interface `org.mozilla.javascript.Scriptable`

### get

    public java.lang.Object get(java.lang.String name,
                                org.mozilla.javascript.Scriptable start)

  Specified by:
    `get` in interface `org.mozilla.javascript.Scriptable`

### get

    public java.lang.Object get(int index,
                                org.mozilla.javascript.Scriptable start)

  Specified by:
    `get` in interface `org.mozilla.javascript.Scriptable`

### has

    public boolean has(java.lang.String name,
                       org.mozilla.javascript.Scriptable start)

  Specified by:
    `has` in interface `org.mozilla.javascript.Scriptable`

### has

    public boolean has(int index,
                       org.mozilla.javascript.Scriptable start)

  Specified by:
    `has` in interface `org.mozilla.javascript.Scriptable`

### put

    public void put(java.lang.String name,
                    org.mozilla.javascript.Scriptable start,
                    java.lang.Object value)

  Specified by:
    `put` in interface `org.mozilla.javascript.Scriptable`

### put

    public void put(int index,
                    org.mozilla.javascript.Scriptable start,
                    java.lang.Object value)

  Specified by:
    `put` in interface `org.mozilla.javascript.Scriptable`

### delete

    public void delete(java.lang.String name)

  Specified by:
    `delete` in interface `org.mozilla.javascript.Scriptable`

### delete

    public void delete(int index)

  Specified by:
    `delete` in interface `org.mozilla.javascript.Scriptable`

### getPrototype

    public org.mozilla.javascript.Scriptable getPrototype()

  Specified by:
    `getPrototype` in interface `org.mozilla.javascript.Scriptable`

### setPrototype

    public void setPrototype(org.mozilla.javascript.Scriptable prototype)

  Specified by:
    `setPrototype` in interface `org.mozilla.javascript.Scriptable`

### getParentScope

    public org.mozilla.javascript.Scriptable getParentScope()

  Specified by:
    `getParentScope` in interface `org.mozilla.javascript.Scriptable`

### setParentScope

    public void setParentScope(org.mozilla.javascript.Scriptable parent)

  Specified by:
    `setParentScope` in interface `org.mozilla.javascript.Scriptable`

### getIds

    public java.lang.Object[] getIds()

  Specified by:
    `getIds` in interface `org.mozilla.javascript.Scriptable`

### hasInstance

    public boolean hasInstance(org.mozilla.javascript.Scriptable scriptable)

  Specified by:
    `hasInstance` in interface `org.mozilla.javascript.Scriptable`

### getDefaultValue

    public java.lang.Object getDefaultValue(java.lang.Class hint)

  Specified by:
    `getDefaultValue` in interface `org.mozilla.javascript.Scriptable`

### call

    public java.lang.Object call(org.mozilla.javascript.Context cx,
                                 org.mozilla.javascript.Scriptable scope,
                                 org.mozilla.javascript.Scriptable thisObj,
                                 java.lang.Object[] args)
                          throws org.mozilla.javascript.RhinoException

  Specified by:
    `call` in interface `org.mozilla.javascript.Callable`
  Specified by:
    `call` in interface `org.mozilla.javascript.Function`
  Throws:
    `org.mozilla.javascript.RhinoException`

### construct

    public org.mozilla.javascript.Scriptable construct(org.mozilla.javascript.Context cx,
                                                       org.mozilla.javascript.Scriptable scope,
                                                       java.lang.Object[] args)
                                                throws org.mozilla.javascript.RhinoException

  Specified by:
    `construct` in interface `org.mozilla.javascript.Function`
  Throws:
    `org.mozilla.javascript.RhinoException`

### getAdaptee

    public org.mozilla.javascript.Scriptable getAdaptee()

### setAdaptee

    public void setAdaptee(org.mozilla.javascript.Scriptable adaptee)

Copyright © 1998-1998-${year} Helma.org. All Rights Reserved.