Skip to content

[Fix #1283] Async Java Function Call executor#1285

Merged
fjtirado merged 1 commit intoserverlessworkflow:mainfrom
fjtirado:Fix_#1283
Apr 1, 2026
Merged

[Fix #1283] Async Java Function Call executor#1285
fjtirado merged 1 commit intoserverlessworkflow:mainfrom
fjtirado:Fix_#1283

Conversation

@fjtirado
Copy link
Copy Markdown
Collaborator

@fjtirado fjtirado commented Apr 1, 2026

Fix #1283

@fjtirado fjtirado force-pushed the Fix_#1283 branch 2 times, most recently from 69f4f28 to b073f84 Compare April 1, 2026 14:57
@fjtirado fjtirado marked this pull request as ready for review April 1, 2026 14:58
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes issue #1283 by improving the Java function call execution path to correctly support async returns (e.g., CompletableFuture) and explicit output type conversion.

Changes:

  • Refactors CallJava tasks to carry optional input/output class metadata and introduces an abstract base for Java functions.
  • Updates Java call executors/builders to use typed generics, optional output conversion, and async execution behavior.
  • Moves/renames reflection-related functional interfaces/utilities and consolidates/adjusts tests (adds async call test, moves Jackson event filtering test).

Reviewed changes

Copilot reviewed 34 out of 34 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
impl/core/src/main/java/io/serverlessworkflow/impl/events/DefaultCloudEventPredicate.java Adjusts envelope predicate extraction/removal from additional properties.
experimental/types/src/main/java/io/serverlessworkflow/api/types/func/CallJava.java Adds generics + input/output class metadata and refactors function task hierarchy.
experimental/test/src/test/java/io/serverlessworkflow/fluent/test/Review.java Replaced a test record with a new abstract function base class (currently in test sources).
experimental/test/src/test/java/io/serverlessworkflow/fluent/test/JacksonEventFilteringTest.java Removes standalone Jackson event filtering test (moved/merged elsewhere).
experimental/test/src/test/java/io/serverlessworkflow/fluent/test/FuncEventFilterTest.java Expands event filter tests and inlines Jackson conversion test + domain records.
experimental/test/src/test/java/io/serverlessworkflow/fluent/test/FuncCallAsyncTest.java Adds coverage for async/sync/lambda Java function calls.
experimental/lambda/src/test/java/io/serverless/workflow/impl/executors/func/StringBuilder2String.java Adds converter targetType() to support target-driven conversion.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaLoopFunctionIndexCallExecutor.java Fixes executor generics to return typed result.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaLoopFunctionCallExecutor.java Fixes executor generics to return typed result.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaFunctionCallExecutorBuilder.java Plumbs output class into executor construction.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaFunctionCallExecutor.java Updates executor to support typed return + output class conversion.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaFilterFunctionCallExecutorBuilder.java Plumbs output class into executor construction.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaFilterFunctionCallExecutor.java Updates executor to support typed return + output class conversion.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaContextFunctionCallExecutorBuilder.java Plumbs output class into executor construction.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaContextFunctionCallExecutor.java Updates executor to support typed return + output class conversion.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/DataTypeConverterRegistry.java Tightens registry API to Class<?>.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/DataTypeConverter.java Adds targetType() to support target-directed conversions.
experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/AbstractJavaCallExecutor.java Adds output type conversion + async execution handling logic.
experimental/fluent/func/src/test/java/io/serverlessworkflow/fluent/func/FuncDSLUniqueIdTest.java Updates imports after moving UniqueIdBiFunction.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/UniqueIdBiFunction.java Changes package to io.serverlessworkflow.api.reflection.func.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/Step.java Updates imports to new reflection function packages.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/SerializablePredicate.java Changes package to io.serverlessworkflow.api.reflection.func.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/SerializableFunction.java Changes package to io.serverlessworkflow.api.reflection.func.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/SerializableConsumer.java Changes package to io.serverlessworkflow.api.reflection.func.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/ReflectionUtils.java Makes reflection utilities public and adds result type inference.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/InstanceIdFunction.java Changes package to io.serverlessworkflow.api.reflection.func.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/FuncEventFilterSpec.java Updates imports to new SerializablePredicate location.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/FuncEmitSpec.java Updates imports to new reflection utilities and serializable function.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/FuncDSL.java Adds output type inference and overloads that accept explicit output classes.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/FuncCallStep.java Stores return class and forwards it into call task builder configuration.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/dsl/CommonFuncOps.java Updates imports to new reflection utilities/functions.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncForkTaskBuilder.java Adds branch overload supporting explicit output class.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncEmitEventPropertiesBuilder.java Updates import to new SerializableFunction package.
experimental/fluent/func/src/main/java/io/serverlessworkflow/fluent/func/FuncCallTaskBuilder.java Adds overloads to pass optional output class into CallJava.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Collaborator

@gmunozfe gmunozfe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, great work @fjtirado

Copilot AI review requested due to automatic review settings April 1, 2026 15:23
Signed-off-by: fjtirado <ftirados@redhat.com>
[Fix serverlessworkflow#1283] Async Java Function Call executor

Signed-off-by: fjtirado <ftirados@redhat.com>
Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 34 out of 34 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@fjtirado fjtirado merged commit bb52a64 into serverlessworkflow:main Apr 1, 2026
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Experimental] Run java function calls asynchronously

3 participants