Class JsPromise

java.lang.Object
org.vaadin.firitin.util.JsPromise

public class JsPromise extends Object
Helper methods to consume asynchronous JS APIs without extra JS trickery. The given script bodies are executed on the UI element and wrapped into a promise, either using Promise with resolve and reject exposed to your script body or using an anonymous async function.
  • Constructor Details

    • JsPromise

      public JsPromise()
  • Method Details

    • resolveString

      public static CompletableFuture<String> resolveString(String promiseBody, Serializable... args)
      Asynchronously returns a string from the client side. The JS given for this method is a JS Promise body with "resolve" and "reject" defined for returning the value or failing the request.
      Parameters:
      promiseBody - a JS snippet that resolves a promise
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the string as CompletableFuture
    • computeString

      public static CompletableFuture<String> computeString(String asyncMethodBody, Serializable... args)
      Executes given JS snippet in an async method, making it possible to use "await" keyword to consume promises in an easier way. The return value is passed back to the server side as a CompletableFuture.
      Parameters:
      asyncMethodBody - the JS method body
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the future to get the value
    • computeInteger

      public static CompletableFuture<Integer> computeInteger(String asyncMethodBody, Serializable... args)
      Executes given JS snippet in an async method, making it possible to use "await" keyword to consume promises in an easier way. The return value is passed back to the server side as a CompletableFuture.
      Parameters:
      asyncMethodBody - the JS method body
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the future to get the value
    • computeDouble

      public static CompletableFuture<Double> computeDouble(String asyncMethodBody, Serializable... args)
      Executes given JS snippet in an async method, making it possible to use "await" keyword to consume promises in an easier way. The return value is passed back to the server side as a CompletableFuture.
      Parameters:
      asyncMethodBody - the JS method body
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the future to get the value
    • computeBoolean

      public static CompletableFuture<Boolean> computeBoolean(String asyncMethodBody, Serializable... args)
      Executes given JS snippet in an async method, making it possible to use "await" keyword to consume promises in an easier way. The return value is passed back to the server side as a CompletableFuture.
      Parameters:
      asyncMethodBody - the JS method body
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the future to get the value
    • resolveBoolean

      public static CompletableFuture<Boolean> resolveBoolean(String promiseBody, Serializable... args)
      Asynchronously returns a boolean from the client side. The JS given for this method is a JS Promise body with "resolve" and "reject" defined for returning the value or failing the request.
      Parameters:
      promiseBody - a JS snippet that resolves a promise
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the boolean as CompletableFuture
    • resolveInteger

      public static CompletableFuture<Integer> resolveInteger(String promiseBody, Serializable... args)
      Asynchronously returns an integer from the client side. The JS given for this method is a JS Promise body with "resolve" and "reject" defined for returning the value or failing the request.
      Parameters:
      promiseBody - a JS snippet that resolves a promise
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the integer as CompletableFuture
    • resolveDouble

      public static CompletableFuture<Double> resolveDouble(String promiseBody, Serializable... args)
      Asynchronously returns a double from the client side. The JS given for this method is a JS Promise body with "resolve" and "reject" defined for returning the value or failing the request.
      Parameters:
      promiseBody - a JS snippet that resolves a promise
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the double as CompletableFuture
    • resolve

      public static <T> CompletableFuture<T> resolve(String promiseBody, Class<T> returnType, Serializable... args)
      Asynchronously returns a value from the client side. The JS given for this method is a JS Promise body with "resolve" and "reject" defined for returning the value or failing the request.
      Type Parameters:
      T - the return type, if not a basic data type, the return parameter in browser is expected to be JSON that is then mapped to given type with Jackson
      Parameters:
      promiseBody - a JS snippet that resolves a promise
      returnType - the return value type: String, Integer, Double, Boolean or an object that gets serialized to JSON and deserialized with default Jackson settings on the server side.
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the future to get the value
    • compute

      public static <T> CompletableFuture<T> compute(String asyncMethodBody, Class<T> returnType, Serializable... args)
      Executes given JS snippet wrapped in an async method, making it possible to use "await" keyword to consume promises in an easier way. Once resolved, the return value is passed back to the server in a CompletableFuture.
      Type Parameters:
      T - the return type, if not a basic data type, the return parameter in browser is expected to be JSON that is then mapped to given type with Jackson
      Parameters:
      asyncMethodBody - the JS method body
      returnType - the return value type: String, Integer, Double, Boolean or an object that gets serialized to JSON and deserialized with default Jackson settings on the server side.
      args - the extra arguments interpolated into JS as in Element.executeJs
      Returns:
      the future to get the value