VMBridge (rhino 1.7.15 API)

Package org.mozilla.javascript

## Class VMBridge

- java.lang.Object
- - org.mozilla.javascript.VMBridge

- Direct Known Subclasses:
    `VMBridge_jdk18`

      public abstract class VMBridge
      extends java.lang.Object

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `VMBridge()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract Context` | `getContext​(java.lang.Object contextHelper)` | Get `Context` instance associated with the current thread or null if none.
    `protected abstract java.lang.Object` | `getInterfaceProxyHelper​(ContextFactory cf, java.lang.Class<?>[] interfaces)` | Create helper object to create later proxies implementing the specified interfaces later.
    `protected abstract java.lang.Object` | `getThreadContextHelper()` | Return a helper object to optimize `Context` access.
    `protected abstract java.lang.Object` | `newInterfaceProxy​(java.lang.Object proxyHelper, ContextFactory cf, InterfaceAdapter adapter, java.lang.Object target, Scriptable topScope)` | Create proxy object for `InterfaceAdapter`.
    `protected abstract void` | `setContext​(java.lang.Object contextHelper, Context cx)` | Associate `Context` instance with the current thread or remove the current association if `cx` is null.
    `protected abstract boolean` | `tryToMakeAccessible​(java.lang.reflect.AccessibleObject accessible)` | In many JVMSs, public methods in private classes are not accessible by default (Sun Bug #4071593).

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### VMBridge

          public VMBridge()

  - ### Method Detail

    - #### getThreadContextHelper

          protected abstract java.lang.Object getThreadContextHelper()

      Return a helper object to optimize `Context` access.

      The runtime will pass the resulting helper object to the subsequent calls to `getContext(Object contextHelper)` and `setContext(Object contextHelper, Context cx)` methods. In this way the implementation can use the helper to cache information about current thread to make `Context` access faster.

    - #### getContext

          protected abstract Context getContext​(java.lang.Object contextHelper)

      Get `Context` instance associated with the current thread or null if none.
      Parameters:
        `contextHelper` - The result of `getThreadContextHelper()` called from the current thread.

    - #### setContext

          protected abstract void setContext​(java.lang.Object contextHelper,
                                             Context cx)

      Associate `Context` instance with the current thread or remove the current association if `cx` is null.
      Parameters:
        `contextHelper` - The result of `getThreadContextHelper()` called from the current thread.

    - #### tryToMakeAccessible

          protected abstract boolean tryToMakeAccessible​(java.lang.reflect.AccessibleObject accessible)

      In many JVMSs, public methods in private classes are not accessible by default (Sun Bug #4071593). VMBridge instance should try to workaround that via, for example, calling method.setAccessible(true) when it is available. The implementation is responsible to catch all possible exceptions like SecurityException if the workaround is not available.
      Returns:
        true if it was possible to make method accessible or false otherwise.

    - #### getInterfaceProxyHelper

          protected abstract java.lang.Object getInterfaceProxyHelper​(ContextFactory cf,
                                                                      java.lang.Class<?>[] interfaces)

      Create helper object to create later proxies implementing the specified interfaces later. Under JDK 1.3 the implementation can look like:

           return java.lang.reflect.Proxy.getProxyClass(..., interfaces).
               getConstructor(new Class[] {
                   java.lang.reflect.InvocationHandler.class });

      Parameters:
        `interfaces` - Array with one or more interface class objects.

    - #### newInterfaceProxy

          protected abstract java.lang.Object newInterfaceProxy​(java.lang.Object proxyHelper,
                                                                ContextFactory cf,
                                                                InterfaceAdapter adapter,
                                                                java.lang.Object target,
                                                                Scriptable topScope)

      Create proxy object for `InterfaceAdapter`. The proxy should call `InterfaceAdapter.invoke(ContextFactory, Object, Scriptable, Object, Method, Object[])` as implementation of interface methods associated with `proxyHelper`. `Method`
      Parameters:
        `proxyHelper` - The result of the previous call to `getInterfaceProxyHelper(ContextFactory, Class[])`.