Class WrapFactory

java.lang.Object
org.htmlunit.corejs.javascript.WrapFactory

public class WrapFactory extends 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 calling a Java method or accessing a Java field.
Since:
1.5 Release 4
See Also:
  • Constructor Details

    • WrapFactory

      public WrapFactory()
  • Method Details

    • wrap

      public final Object wrap(Context cx, VarScope scope, Object obj, Class<?> staticType)
      See Also:
    • wrap

      public Object wrap(Context cx, VarScope scope, Object obj, TypeInfo staticType)
      Wrap the object.

      The value returned must be one of

      • java.lang.Boolean
      • java.lang.String
      • java.lang.Number
      • org.htmlunit.corejs.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. It will be used for improving generic support and fallback type when security restrictions prevent wrapping object based on object class
      Returns:
      the wrapped value.
      Since:
      1.9.0
    • wrapNewObject

      public Scriptable wrapNewObject(Context cx, VarScope 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.
    • wrapAsJavaObject

      public final Scriptable wrapAsJavaObject(Context cx, VarScope scope, Object javaObject, Class<?> staticType)
      See Also:
    • wrapAsJavaObject

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

      wrap(Context, VarScope, Object, Class) and wrapNewObject(Context, VarScope, 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. It will be used for improving generic support and fallback type when security restrictions prevent wrapping object based on object class
      Returns:
      the wrapped value which shall not be null
      Since:
      1.9.0
    • wrapJavaClass

      public Scriptable wrapJavaClass(Context cx, VarScope scope, Class<?> javaClass)
      Wrap a Java class as Scriptable instance to allow access to its static members and fields and use as constructor from JavaScript.

      Subclasses can override this method to provide custom wrappers for Java classes.

      Parameters:
      cx - the current Context for this thread
      scope - the scope of the executing script
      javaClass - the class to be wrapped
      Returns:
      the wrapped value which shall not be null
      Since:
      1.7R3
    • isJavaPrimitiveWrap

      public final 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. By default the method returns true to indicate that instances of String, Number, Boolean and Character should be wrapped as any other Java object and scripts can access any Java method available in these objects. Use setJavaPrimitiveWrap(boolean) to change this.
    • setJavaPrimitiveWrap

      public final void setJavaPrimitiveWrap(boolean value)
      See Also: