diff --git a/experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaCallFunctionBuilder.java b/experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaCallFunctionBuilder.java index c9a20266f..f11c2d552 100644 --- a/experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaCallFunctionBuilder.java +++ b/experimental/lambda/src/main/java/io/serverlessworkflow/impl/executors/func/JavaCallFunctionBuilder.java @@ -24,7 +24,7 @@ import io.serverlessworkflow.impl.WorkflowDefinition; import io.serverlessworkflow.impl.WorkflowMutablePosition; import io.serverlessworkflow.impl.executors.CallFunctionExecutorBuilder; -import io.serverlessworkflow.impl.executors.CallableTaskFactory; +import io.serverlessworkflow.impl.executors.CallableTask; import java.util.Map; import java.util.Optional; import java.util.function.Consumer; @@ -42,7 +42,7 @@ public int priority() { } @Override - public CallableTaskFactory init( + public CallableTask build( CallFunction task, WorkflowDefinition definition, WorkflowMutablePosition position) { if (CallJava.JAVA_CALL_KEY.equals(task.getCall())) { if (task.getWith() == null) { @@ -62,32 +62,30 @@ public CallableTaskFactory init( Optional> output = (Optional>) props.getOrDefault(CallJava.OUTPUT_CLASS_KEY, Optional.empty()); if (obj instanceof ContextFunction fn) { - return () -> new JavaContextFunctionCallExecutor(input, output, fn); + return new JavaContextFunctionCallExecutor(input, output, fn); } else if (obj instanceof FilterFunction fn) { - return () -> new JavaFilterFunctionCallExecutor(input, output, fn); + return new JavaFilterFunctionCallExecutor(input, output, fn); } else if (obj instanceof LoopFunction loop) { - return () -> - new JavaLoopFunctionCallExecutor( - loop, (String) props.get(CallJava.VAR_NAME_KEY), input, output); + return new JavaLoopFunctionCallExecutor( + loop, (String) props.get(CallJava.VAR_NAME_KEY), input, output); } else if (obj instanceof LoopFunctionIndex loop) { - return () -> - new JavaLoopFunctionIndexCallExecutor( - loop, - (String) props.get(CallJava.VAR_NAME_KEY), - (String) props.get(CallJava.INDEX_NAME_KEY), - input, - output); + return new JavaLoopFunctionIndexCallExecutor( + loop, + (String) props.get(CallJava.VAR_NAME_KEY), + (String) props.get(CallJava.INDEX_NAME_KEY), + input, + output); } else if (obj instanceof Function fn) { - return () -> new JavaFunctionCallExecutor(input, output, fn); + return new JavaFunctionCallExecutor(input, output, fn); } else if (obj instanceof Consumer consumer) { - return () -> new JavaConsumerCallExecutor(input, consumer); + return new JavaConsumerCallExecutor(input, consumer); } else { throw new UnsupportedOperationException("Unrecognized function " + obj); } } else { logger.info("Calling regular function handler for task call {}", task.getCall()); - return super.init(task, definition, position); + return super.build(task, definition, position); } } } diff --git a/impl/a2a/src/main/java/io/serverlessworkflow/impl/executors/a2a/A2AExecutorBuilder.java b/impl/a2a/src/main/java/io/serverlessworkflow/impl/executors/a2a/A2AExecutorBuilder.java index b49e37e88..495fcba1f 100644 --- a/impl/a2a/src/main/java/io/serverlessworkflow/impl/executors/a2a/A2AExecutorBuilder.java +++ b/impl/a2a/src/main/java/io/serverlessworkflow/impl/executors/a2a/A2AExecutorBuilder.java @@ -24,8 +24,8 @@ import io.serverlessworkflow.impl.WorkflowMutablePosition; import io.serverlessworkflow.impl.WorkflowUtils; import io.serverlessworkflow.impl.WorkflowValueResolver; +import io.serverlessworkflow.impl.executors.CallableTask; import io.serverlessworkflow.impl.executors.CallableTaskBuilder; -import io.serverlessworkflow.impl.executors.CallableTaskFactory; import java.net.URI; import java.util.Map; import java.util.Optional; @@ -38,7 +38,7 @@ public boolean accept(Class clazz) { } @Override - public CallableTaskFactory init( + public CallableTask build( CallA2A task, WorkflowDefinition definition, WorkflowMutablePosition position) { A2AArguments args = task.getWith(); @@ -88,6 +88,6 @@ public CallableTaskFactory init( parameters.getString(), a2aParameters != null ? a2aParameters.getAdditionalProperties() : null)); } - return () -> new A2AExecutor(uriSupplier, dispatcher, mapResolver); + return new A2AExecutor(uriSupplier, dispatcher, mapResolver); } } diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallFunctionExecutorBuilder.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallFunctionExecutorBuilder.java index 1d53ad799..9418e9a0f 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallFunctionExecutorBuilder.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallFunctionExecutorBuilder.java @@ -34,7 +34,7 @@ public class CallFunctionExecutorBuilder implements CallableTaskBuilder { @Override - public CallableTaskFactory init( + public CallableTask build( CallFunction task, WorkflowDefinition definition, WorkflowMutablePosition position) { String functionName = task.getCall(); Use use = definition.workflow().getUse(); @@ -86,7 +86,7 @@ catalogEndpoint, pathFromFunctionName(functionName.substring(0, indexOf))), ? WorkflowUtils.buildMapResolver( definition.application(), functionArgs.getAdditionalProperties()) : (w, t, m) -> Map.of(); - return () -> this.build(executorBuilder, args); + return buildCallable(executorBuilder, args); } private String pathFromFunctionName(String functionName) { @@ -120,7 +120,7 @@ public boolean accept(Class clazz) { return clazz.equals(CallFunction.class); } - private CallableTask build( + private CallableTask buildCallable( TaskExecutorBuilder executorBuilder, WorkflowValueResolver args) { TaskExecutor executor = executorBuilder.build(); return (w, t, m) -> diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java index fec6bcb7e..17a638cab 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java @@ -30,7 +30,6 @@ public class CallTaskExecutor extends RegularTaskExecutor public static class CallTaskExecutorBuilder extends RegularTaskExecutorBuilder { - private CallableTaskFactory callableFactory; private List callableProxyBuilders; private CallableTask callable; @@ -44,12 +43,11 @@ protected CallTaskExecutorBuilder( definition.application().callableProxyBuilders().stream() .filter(t -> t.accept(task)) .toList(); - this.callableFactory = callableBuilder.init(task, definition, position); + this.callable = callableBuilder.build(task, definition, position); } @Override public CallTaskExecutor buildInstance() { - this.callable = callableFactory.get(); for (CallableTaskProxyBuilder callableBuilder : callableProxyBuilders) { this.callable = callableBuilder.build(callable); } diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskBuilder.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskBuilder.java index ae8ed60f8..41704ab5b 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskBuilder.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskBuilder.java @@ -24,5 +24,5 @@ public interface CallableTaskBuilder extends ServicePriority boolean accept(Class clazz); - CallableTaskFactory init(T task, WorkflowDefinition definition, WorkflowMutablePosition position); + CallableTask build(T task, WorkflowDefinition definition, WorkflowMutablePosition position); } diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskFactory.java deleted file mode 100644 index baac373fc..000000000 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTaskFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2020-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.serverlessworkflow.impl.executors; - -import java.util.function.Supplier; - -@FunctionalInterface -public interface CallableTaskFactory extends Supplier {} diff --git a/impl/grpc/src/main/java/io/serverlessworkflow/impl/executors/grpc/GrpcExecutorBuilder.java b/impl/grpc/src/main/java/io/serverlessworkflow/impl/executors/grpc/GrpcExecutorBuilder.java index 4c22b4a61..1848fe665 100644 --- a/impl/grpc/src/main/java/io/serverlessworkflow/impl/executors/grpc/GrpcExecutorBuilder.java +++ b/impl/grpc/src/main/java/io/serverlessworkflow/impl/executors/grpc/GrpcExecutorBuilder.java @@ -24,8 +24,8 @@ import io.serverlessworkflow.impl.WorkflowDefinition; import io.serverlessworkflow.impl.WorkflowMutablePosition; import io.serverlessworkflow.impl.WorkflowUtils; +import io.serverlessworkflow.impl.executors.CallableTask; import io.serverlessworkflow.impl.executors.CallableTaskBuilder; -import io.serverlessworkflow.impl.executors.CallableTaskFactory; import java.util.Map; import java.util.Objects; @@ -37,7 +37,7 @@ public boolean accept(Class clazz) { } @Override - public CallableTaskFactory init( + public CallableTask build( CallGRPC task, WorkflowDefinition definition, WorkflowMutablePosition position) { GRPCArguments with = task.getWith(); WithGRPCService service = with.getService(); @@ -53,16 +53,13 @@ public CallableTaskFactory init( Objects.requireNonNull( serviceDescriptor.findMethodByName(with.getMethod()), "Method not found: " + with.getMethod()); - return () -> - new GrpcExecutor( - service.getHost(), - service.getPort(), - WorkflowUtils.buildMapResolver( - definition.application(), - with.getArguments() != null - ? with.getArguments().getAdditionalProperties() - : Map.of()), - serviceDescriptor, - methodDescriptor); + return new GrpcExecutor( + service.getHost(), + service.getPort(), + WorkflowUtils.buildMapResolver( + definition.application(), + with.getArguments() != null ? with.getArguments().getAdditionalProperties() : Map.of()), + serviceDescriptor, + methodDescriptor); } } diff --git a/impl/http/src/main/java/io/serverlessworkflow/impl/executors/http/CallableTaskHttpExecutorBuilder.java b/impl/http/src/main/java/io/serverlessworkflow/impl/executors/http/CallableTaskHttpExecutorBuilder.java index 5f45f5562..2319f47ed 100644 --- a/impl/http/src/main/java/io/serverlessworkflow/impl/executors/http/CallableTaskHttpExecutorBuilder.java +++ b/impl/http/src/main/java/io/serverlessworkflow/impl/executors/http/CallableTaskHttpExecutorBuilder.java @@ -24,14 +24,14 @@ import io.serverlessworkflow.impl.WorkflowDefinition; import io.serverlessworkflow.impl.WorkflowMutablePosition; import io.serverlessworkflow.impl.WorkflowValueResolver; +import io.serverlessworkflow.impl.executors.CallableTask; import io.serverlessworkflow.impl.executors.CallableTaskBuilder; -import io.serverlessworkflow.impl.executors.CallableTaskFactory; import java.net.URI; public class CallableTaskHttpExecutorBuilder implements CallableTaskBuilder { @Override - public CallableTaskFactory init( + public CallableTask build( CallHTTP task, WorkflowDefinition definition, WorkflowMutablePosition position) { HttpExecutorBuilder builder = HttpExecutorBuilder.builder(definition); @@ -67,7 +67,7 @@ public CallableTaskFactory init( builder.withBody(httpArgs.getBody()); builder.withMethod(httpArgs.getMethod().toUpperCase()); builder.redirect(httpArgs.isRedirect()); - return () -> builder.build(uriSupplier); + return builder.build(uriSupplier); } @Override diff --git a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OpenAPIExecutorBuilder.java b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OpenAPIExecutorBuilder.java index 8c7cd11be..7c83b6cf9 100644 --- a/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OpenAPIExecutorBuilder.java +++ b/impl/openapi/src/main/java/io/serverlessworkflow/impl/executors/openapi/OpenAPIExecutorBuilder.java @@ -21,8 +21,8 @@ import io.serverlessworkflow.api.types.TaskBase; import io.serverlessworkflow.impl.WorkflowDefinition; import io.serverlessworkflow.impl.WorkflowMutablePosition; +import io.serverlessworkflow.impl.executors.CallableTask; import io.serverlessworkflow.impl.executors.CallableTaskBuilder; -import io.serverlessworkflow.impl.executors.CallableTaskFactory; import io.serverlessworkflow.impl.executors.http.HttpExecutorBuilder; import java.util.Map; @@ -34,7 +34,7 @@ public boolean accept(Class clazz) { } @Override - public CallableTaskFactory init( + public CallableTask build( CallOpenAPI task, WorkflowDefinition definition, WorkflowMutablePosition position) { OpenAPIArguments with = task.getWith(); OpenAPIProcessor processor = new OpenAPIProcessor(with.getOperationId()); @@ -47,6 +47,6 @@ public CallableTaskFactory init( HttpExecutorBuilder.builder(definition) .withAuth(with.getAuthentication()) .redirect(with.isRedirect()); - return () -> new OpenAPIExecutor(processor, resource, parameters, builder); + return new OpenAPIExecutor(processor, resource, parameters, builder); } }