Interface JsSet

All Superinterfaces:
JsObject

public interface JsSet extends JsObject
A JavaScript set.

A set object can be passed between Java and JavaScript as a method argument or a return value. The object lifetime is bound to the lifetime of the frame this object belongs to. When the owner frame is unloaded, all the JavaScript objects are automatically disposed.

An attempt to access a disposed JavaScript object will result in IllegalStateException.

Since:
7.20
  • Method Details

    • add

      JsSet add(@Nullable Object element)
      Adds the specified element to this set.

      The type mapping rules are the following:

      
       | Java               | JavaScript                    |
       |--------------------|-------------------------------|
       | Double             | Number                        |
       | String             | String                        |
       | Boolean            | Boolean                       |
       | null               | null                          |
       | JsObject           | Object                        |
       | Node               | Node                          |
       | List<?>            | Array or Proxy Object         |
       | Set<?>             | Set or Proxy Object           |
       | Map<?,?>           | Map or Proxy Object           |
       | byte[]             | ArrayBuffer                   |
       | Object             | Proxy Object                  |
       

      If you pass a non-primitive Java object to JavaScript, it will be converted into a "proxy" JavaScript object. Method and property calls to this object will be delegated to the Java object. For security reasons, JavaScript can access only those methods and fields of the injected Java object that are explicitly marked as accessible either using the JsAccessible annotation or via the JsAccessibleTypes class.

      Java collections that are not made accessible to JavaScript using the JsAccessible annotation or via the JsAccessibleTypes class are converted to JavaScript collections. The content of the converted collection is a deep copy of the Java collection. Modifications of the converted collection in JavaScript do not affect the collection in Java.

      Java collections that are made accessible to JavaScript using the JsAccessible annotation or via the JsAccessibleTypes class are wrapped into a JavaScript proxy object. Such proxy objects can be used to modify the collection in Java.

      Parameters:
      element - the element to insert
      Returns:
      this set
      Throws:
      IllegalArgumentException - when element is a JsObject from a different web page or frame
      ObjectClosedException - when the JavaScript object is already disposed or invalid
    • has

      boolean has(@Nullable Object element)
      Returns true if this set contains the specified element.
      Parameters:
      element - the element whose presence in this test is tested
      Returns:
      true if this set contains the specified element
      Throws:
      ObjectClosedException - when the JavaScript object is already disposed or invalid
    • delete

      boolean delete(Object element)
      Removes the specified element from this set.
      Parameters:
      element - the element to be removed from this set
      Returns:
      true if this set contained the specified element
      Throws:
      ObjectClosedException - when the JavaScript object is already disposed or invalid
    • size

      long size()
      Returns the number of elements in this set.
    • clear

      void clear()
      Removes all elements from this set. Does nothing if the set is empty.
    • toSet

      Set<Object> toSet()
      Converts this set to a Set.

      The type mapping rules for the set elements are the following:

      
       | JavaScript         | Java           |
       |--------------------|----------------|
       | Number             | Double         |
       | String             | String         |
       | Boolean            | Boolean        |
       | null and undefined | null           |
       | Node               | Node, JsObject |
       | ArrayBuffer        | byte[]         |
       | Array              | List<?>        |
       | Set                | Set<?>         |
       | Map                | Map<?,?>       |
       | Object             | JsObject       |
       | Proxy Object       | Object         |
       

      Proxy objects are mapped to the corresponding injected Java object.

      Returns:
      a set containing the converted elements from this set
      Throws:
      ObjectClosedException - when the JavaScript object is already disposed or invalid
    • toSet

      <T> Set<T> toSet(Class<T> type)
      Converts this set to a Set.

      The type mapping rules for the set elements are the following:

      
       | JavaScript         | Java           |
       |--------------------|----------------|
       | Number             | Double         |
       | String             | String         |
       | Boolean            | Boolean        |
       | null and undefined | null           |
       | Node               | Node, JsObject |
       | ArrayBuffer        | byte[]         |
       | Array              | List<?>        |
       | Set                | Set<?>         |
       | Map                | Map<?,?>       |
       | Object             | JsObject       |
       | Proxy Object       | Object         |
       

      Proxy objects are mapped to the corresponding injected Java object.

      All elements in this set must be of a type convertible to the type T according to the mapping rules.

      Type Parameters:
      T - the type of the converted elements
      Parameters:
      type - the Java type to convert elements in this set to, according to the mapping rules
      Returns:
      a set containing the converted elements from this set
      Throws:
      ObjectClosedException - when the JavaScript object is already disposed or invalid