Package org.vaadin.firitin.util
Class JsPromise
java.lang.Object
org.vaadin.firitin.util.JsPromise
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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic <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.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.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.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.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.static <T> CompletableFuture
<T> resolve
(String promiseBody, Class<T> returnType, Serializable... args) Asynchronously returns a value from the client side.static CompletableFuture
<Boolean> resolveBoolean
(String promiseBody, Serializable... args) Asynchronously returns a boolean from the client side.static CompletableFuture
<Double> resolveDouble
(String promiseBody, Serializable... args) Asynchronously returns a double from the client side.static CompletableFuture
<Integer> resolveInteger
(String promiseBody, Serializable... args) Asynchronously returns an integer from the client side.static CompletableFuture
<String> resolveString
(String promiseBody, Serializable... args) Asynchronously returns a string from the client side.
-
Constructor Details
-
JsPromise
public JsPromise()
-
-
Method Details
-
resolveString
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 promiseargs
- the extra arguments interpolated into JS as in Element.executeJs- Returns:
- the string as
CompletableFuture
-
computeString
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 aCompletableFuture
.- Parameters:
asyncMethodBody
- the JS method bodyargs
- 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 aCompletableFuture
.- Parameters:
asyncMethodBody
- the JS method bodyargs
- the extra arguments interpolated into JS as in Element.executeJs- Returns:
- the future to get the value
-
computeDouble
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 aCompletableFuture
.- Parameters:
asyncMethodBody
- the JS method bodyargs
- 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 aCompletableFuture
.- Parameters:
asyncMethodBody
- the JS method bodyargs
- the extra arguments interpolated into JS as in Element.executeJs- Returns:
- the future to get the value
-
resolveBoolean
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 promiseargs
- the extra arguments interpolated into JS as in Element.executeJs- Returns:
- the boolean as
CompletableFuture
-
resolveInteger
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 promiseargs
- the extra arguments interpolated into JS as in Element.executeJs- Returns:
- the integer as
CompletableFuture
-
resolveDouble
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 promiseargs
- 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 promisereturnType
- 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 aCompletableFuture
.- 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 bodyreturnType
- 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
-