Interface PendingJavaScriptResult

All Superinterfaces:
Serializable
All Known Implementing Classes:
PendingJavaScriptInvocation

public interface PendingJavaScriptResult extends Serializable
A pending result from a JavaScript snippet sent to the browser for evaluation.

If any of the then or toCompletableFuture methods have been invoked before the snippet is sent to the browser, then there will be an additional round trip for sending the results of the evaluation back to any registered handler. If the JavaScript execution returns a Promise, then the result will be sent to the server only when it is resolved.

It is not possible to add handlers after the invocation has been sent to the browser since the original result would in that case already be discarded.

Since:
2.0
Author:
Vaadin Ltd
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    Exception used when a CompletableFuture returned from PendingJavaScriptResult is completed exceptionally because of a client-side error.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Cancel the javascript execution, if it was not yet sent to the browser for execution.
    boolean
    Checks whether the JavaScript execution has already been sent to the browser.
    default void
    then(SerializableConsumer<tools.jackson.databind.JsonNode> resultHandler)
    Adds an untyped handler that will be run for a successful execution.
    void
    then(SerializableConsumer<tools.jackson.databind.JsonNode> resultHandler, SerializableConsumer<String> errorHandler)
    Adds an untyped handler that will be run for a successful execution and a handler that will be run for a failed execution.
    default <T> void
    then(Class<T> targetType, SerializableConsumer<T> resultHandler)
    Adds a typed handler that will be run for a successful execution.
    default <T> void
    then(Class<T> targetType, SerializableConsumer<T> resultHandler, SerializableConsumer<String> errorHandler)
    Adds a typed handler that will be run for a successful execution and a handler that will be run for a failed execution.
    default <T> void
    then(tools.jackson.core.type.TypeReference<T> typeReference, SerializableConsumer<T> resultHandler)
    Adds a typed handler that will be run for a successful execution.
    default <T> void
    then(tools.jackson.core.type.TypeReference<T> typeReference, SerializableConsumer<T> resultHandler, SerializableConsumer<String> errorHandler)
    Adds a typed handler that will be run for a successful execution and a handler that will be run for a failed execution.
    default CompletableFuture<tools.jackson.databind.JsonNode>
    Creates an untyped completable future that will be completed with the result of the execution.
    default <T> CompletableFuture<T>
    toCompletableFuture(Class<T> targetType)
    Creates a typed completable future that will be completed with the result of the execution.
    default <T> CompletableFuture<T>
    toCompletableFuture(tools.jackson.core.type.TypeReference<T> typeReference)
    Creates a typed completable future that will be completed with the result of the execution.
  • Method Details

    • cancelExecution

      boolean cancelExecution()
      Cancel the javascript execution, if it was not yet sent to the browser for execution.
      Returns:
      true if the execution was canceled, false if not
    • isSentToBrowser

      boolean isSentToBrowser()
      Checks whether the JavaScript execution has already been sent to the browser. It is no longer possible to cancel the execution or add a handler for the result after the execution has been sent.
      Returns:
      true if the execution is sent to the browser, false if it's still pending
    • then

      default <T> void then(Class<T> targetType, SerializableConsumer<T> resultHandler, SerializableConsumer<String> errorHandler)
      Adds a typed handler that will be run for a successful execution and a handler that will be run for a failed execution. One of the handlers will be invoked asynchronously when the result of the execution is sent back to the server.

      The JavaScript return value will be automatically converted to the specified target type. All types supported by Jackson for JSON deserialization are supported, including custom bean classes.

      Handlers can only be added before the execution has been sent to the browser.

      Type Parameters:
      T - the type to convert the result to
      Parameters:
      targetType - the type to convert the JavaScript return value to, not null
      resultHandler - a handler for the return value from a successful execution, not null
      errorHandler - a handler for an error message in case the execution failed, or null to ignore errors
    • then

      default <T> void then(Class<T> targetType, SerializableConsumer<T> resultHandler)
      Adds a typed handler that will be run for a successful execution. The handler will be invoked asynchronously if the execution was successful. In case of a failure, no handler will be run.

      The JavaScript return value will be automatically converted to the specified target type. All types supported by Jackson for JSON deserialization are supported, including custom bean classes.

      A handler can only be added before the execution has been sent to the browser.

      Type Parameters:
      T - the type to convert the result to
      Parameters:
      targetType - the type to convert the JavaScript return value to, not null
      resultHandler - a handler for the return value from a successful execution, not null
    • toCompletableFuture

      default <T> CompletableFuture<T> toCompletableFuture(Class<T> targetType)
      Creates a typed completable future that will be completed with the result of the execution. It will be completed asynchronously when the result of the execution is sent back to the server. It is not possible to synchronously wait for the result of the execution while holding the session lock since the request handling thread that makes the result available will also need to lock the session.

      The JavaScript return value will be automatically converted to the specified target type. All types supported by Jackson for JSON deserialization are supported, including custom bean classes.

      A completable future can only be created before the execution has been sent to the browser.

      Type Parameters:
      T - the type to convert the result to
      Parameters:
      targetType - the type to convert the JavaScript return value to, not null
      Returns:
      a completable future that will be completed based on the execution results, not null
    • then

      default <T> void then(tools.jackson.core.type.TypeReference<T> typeReference, SerializableConsumer<T> resultHandler, SerializableConsumer<String> errorHandler)
      Adds a typed handler that will be run for a successful execution and a handler that will be run for a failed execution. One of the handlers will be invoked asynchronously when the result of the execution is sent back to the server.

      The JavaScript return value will be automatically converted to the type specified by the TypeReference. This method supports generic types such as List<MyBean> and Map<String, MyBean>.

      Example usage:

       element.executeJs("return [{name: 'Alice', age: 30}]")
               .then(new TypeReference<List<Person>>() {
               }, list -> System.out.println(list.get(0).name));
       

      Handlers can only be added before the execution has been sent to the browser.

      Type Parameters:
      T - the type to convert the result to
      Parameters:
      typeReference - the type reference describing the target type, not null
      resultHandler - a handler for the return value from a successful execution, not null
      errorHandler - a handler for an error message in case the execution failed, or null to ignore errors
    • then

      default <T> void then(tools.jackson.core.type.TypeReference<T> typeReference, SerializableConsumer<T> resultHandler)
      Adds a typed handler that will be run for a successful execution. The handler will be invoked asynchronously if the execution was successful. In case of a failure, no handler will be run.

      The JavaScript return value will be automatically converted to the type specified by the TypeReference. This method supports generic types such as List<MyBean> and Map<String, MyBean>.

      A handler can only be added before the execution has been sent to the browser.

      Type Parameters:
      T - the type to convert the result to
      Parameters:
      typeReference - the type reference describing the target type, not null
      resultHandler - a handler for the return value from a successful execution, not null
    • toCompletableFuture

      default <T> CompletableFuture<T> toCompletableFuture(tools.jackson.core.type.TypeReference<T> typeReference)
      Creates a typed completable future that will be completed with the result of the execution. It will be completed asynchronously when the result of the execution is sent back to the server.

      The JavaScript return value will be automatically converted to the type specified by the TypeReference. This method supports generic types such as List<MyBean> and Map<String, MyBean>.

      A completable future can only be created before the execution has been sent to the browser.

      Type Parameters:
      T - the type to convert the result to
      Parameters:
      typeReference - the type reference describing the target type, not null
      Returns:
      a completable future that will be completed based on the execution results, not null
    • then

      void then(SerializableConsumer<tools.jackson.databind.JsonNode> resultHandler, SerializableConsumer<String> errorHandler)
      Adds an untyped handler that will be run for a successful execution and a handler that will be run for a failed execution. One of the handlers will be invoked asynchronously when the result of the execution is sent back to the server. It is not possible to synchronously wait for the result of the execution while holding the session lock since the request handling thread that makes the result available will also need to lock the session.

      Handlers can only be added before the execution has been sent to the browser.

      Parameters:
      resultHandler - a handler for the JSON representation of the value from a successful execution, not null
      errorHandler - a handler for an error message in case the execution failed, or null to ignore errors
    • then

      default void then(SerializableConsumer<tools.jackson.databind.JsonNode> resultHandler)
      Adds an untyped handler that will be run for a successful execution. The handler will be invoked asynchronously if the execution was successful. In case of a failure, no handler will be run.

      A handler can only be added before the execution has been sent to the browser.

      Parameters:
      resultHandler - a handler for the JSON representation of the return value from a successful execution, not null
    • toCompletableFuture

      default CompletableFuture<tools.jackson.databind.JsonNode> toCompletableFuture()
      Creates an untyped completable future that will be completed with the result of the execution. It will be completed asynchronously when the result of the execution is sent back to the server.

      A completable future can only be created before the execution has been sent to the browser.

      Returns:
      a completable future that will be completed based on the execution results, not null