org.mozilla.javascript

Class WrapFactory


public class WrapFactory
extends java.lang.Object

Embeddings that wish to provide their own custom wrappings for Java objects may extend this class and call Context.setWrapFactory(WrapFactory) Once an instance of this class or an extension of this class is enabled for a given context (by calling setWrapFactory on that context), Rhino will call the methods of this class whenever it needs to wrap a value resulting from a call to a Java method or an access to a Java field.

Since:
1.5 Release 4

See Also:
Context.setWrapFactory(WrapFactory)

Method Summary

boolean
isJavaPrimitiveWrap()
Return false if result of Java method, which is instance of String, Number, Boolean and Character, should be used directly as JavaScript primitive type.
void
setJavaPrimitiveWrap(boolean value)
Object
wrap(Context cx, Scriptable scope, Object obj, Class staticType)
Wrap the object.
Scriptable
wrapAsJavaObject(Context cx, Scriptable scope, Object javaObject, Class staticType)
Wrap Java object as Scriptable instance to allow full access to its methods and fields from JavaScript.
Scriptable
wrapNewObject(Context cx, Scriptable scope, Object obj)
Wrap an object newly created by a constructor call.

Method Details

isJavaPrimitiveWrap

public final boolean isJavaPrimitiveWrap()


setJavaPrimitiveWrap

public final void setJavaPrimitiveWrap(boolean value)

See Also:
isJavaPrimitiveWrap()


wrap

public Object wrap(Context cx,
                   Scriptable scope,
                   Object obj,
                   Class staticType)
Wrap the object.

The value returned must be one of

  • java.lang.Boolean
  • java.lang.String
  • java.lang.Number
  • org.mozilla.javascript.Scriptable objects
  • The value returned by Context.getUndefinedValue()
  • null

Parameters:
cx - the current Context for this thread
scope - the scope of the executing script
obj - the object to be wrapped. Note it can be null.
staticType - type hint. If security restrictions prevent to wrap object based on its class, staticType will be used instead.

Returns:
the wrapped value.


wrapAsJavaObject

public Scriptable wrapAsJavaObject(Context cx,
                                   Scriptable scope,
                                   Object javaObject,
                                   Class staticType)
Wrap Java object as Scriptable instance to allow full access to its methods and fields from JavaScript.

wrap(Context,Scriptable,Object,Class) and wrapNewObject(Context,Scriptable,Object) call this method when they can not convert javaObject to JavaScript primitive value or JavaScript array.

Subclasses can override the method to provide custom wrappers for Java objects.

Parameters:
cx - the current Context for this thread
scope - the scope of the executing script
javaObject - the object to be wrapped
staticType - type hint. If security restrictions prevent to wrap object based on its class, staticType will be used instead.

Returns:
the wrapped value which shall not be null


wrapNewObject

public Scriptable wrapNewObject(Context cx,
                                Scriptable scope,
                                Object obj)
Wrap an object newly created by a constructor call.

Parameters:
cx - the current Context for this thread
scope - the scope of the executing script
obj - the object to be wrapped

Returns:
the wrapped value.