From fa3d1d3ef4cb832f0419070febd9ddac1e6844ed Mon Sep 17 00:00:00 2001 From: Francisco Javier Tirado Sarti Date: Mon, 25 Nov 2024 14:52:03 +0100 Subject: [PATCH] [Fix #473] Refactor project structure Signed-off-by: Francisco Javier Tirado Sarti --- api/pom.xml | 71 ------------ impl/bom/pom.xml | 20 ++++ impl/core/.checkstyle | 14 +++ impl/core/pom.xml | 48 ++++++++ .../impl/DefaultWorkflowPosition.java | 0 .../serverlessworkflow/impl/TaskContext.java | 0 .../impl/WorkflowApplication.java | 0 .../impl/WorkflowContext.java | 0 .../impl/WorkflowDefinition.java | 0 .../impl/WorkflowExecutionListener.java | 0 .../impl/WorkflowFilter.java | 0 .../impl/WorkflowInstance.java | 0 .../impl/WorkflowPosition.java | 0 .../impl/WorkflowState.java | 22 ++++ .../impl/WorkflowUtils.java | 0 .../impl/executors/AbstractTaskExecutor.java | 0 .../impl/executors/CallTaskExecutor.java | 37 +++++++ .../impl/executors/CallableTask.java | 30 +++++ .../executors/DefaultTaskExecutorFactory.java | 19 +++- .../impl/executors/DoExecutor.java | 0 .../impl/executors/SetExecutor.java | 0 .../impl/executors/SwitchExecutor.java | 15 +++ .../impl/executors/TaskExecutor.java | 0 .../impl/executors/TaskExecutorFactory.java | 0 .../impl/expressions/Expression.java | 0 .../impl/expressions/ExpressionFactory.java | 0 .../impl/expressions/ExpressionUtils.java | 0 .../ExpressionValidationException.java | 29 +++++ .../impl/expressions/JQExpression.java | 0 .../impl/expressions/JQExpressionFactory.java | 0 .../impl/expressions/ProxyMap.java | 0 .../impl/json/JsonUtils.java | 0 .../impl/json/MergeUtils.java | 0 .../jsonschema/DefaultSchemaValidator.java | 25 ++--- .../DefaultSchemaValidatorFactory.java | 0 .../impl/jsonschema/SchemaValidator.java | 0 .../jsonschema/SchemaValidatorFactory.java | 0 .../resources/ClasspathResource.java | 0 .../resources/DefaultResourceLoader.java | 0 .../DefaultResourceLoaderFactory.java | 34 ++++++ .../resources/DynamicResource.java | 0 .../resources/FileResource.java | 0 .../resources/HttpResource.java | 0 .../resources/ResourceLoader.java | 0 .../resources/ResourceLoaderFactory.java | 0 .../resources/StaticResource.java | 0 .../impl/WorkflowDefinitionTest.java | 87 +++++++++++++++ .../test/resources/switch-then-string.yaml | 0 impl/http/.checkstyle | 14 +++ impl/http/pom.xml | 43 ++++++++ .../impl/executors/HttpExecutor.java | 26 +++-- ...erlessworkflow.impl.executors.CallableTask | 1 + .../impl/HTTPWorkflowDefinitionTest.java} | 41 +------ .../call-http-endpoint-interpolation.yaml | 0 ...http-query-parameters-external-schema.yaml | 0 .../resources/call-http-query-parameters.yaml | 0 .../src/test/resources/callGetHttp.yaml | 0 .../src/test/resources/callPostHttp.yaml | 0 .../test/resources/schema/searchquery.yaml | 0 impl/pom.xml | 103 ++++++------------ .../impl/WorkflowState.java | 7 -- .../ExpressionValidationException.java | 14 --- .../DefaultResourceLoaderFactory.java | 19 ---- pom.xml | 61 +++++++++++ 64 files changed, 535 insertions(+), 245 deletions(-) create mode 100644 impl/bom/pom.xml create mode 100644 impl/core/.checkstyle create mode 100644 impl/core/pom.xml rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/DefaultWorkflowPosition.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/TaskContext.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowContext.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowDefinition.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowExecutionListener.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowFilter.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowInstance.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowPosition.java (100%) create mode 100644 impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowState.java rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/WorkflowUtils.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/AbstractTaskExecutor.java (100%) create mode 100644 impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java create mode 100644 impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTask.java rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java (71%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/DoExecutor.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java (74%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutor.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutorFactory.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/expressions/Expression.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionFactory.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionUtils.java (100%) create mode 100644 impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/expressions/JQExpression.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/expressions/JQExpressionFactory.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/expressions/ProxyMap.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/json/JsonUtils.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/json/MergeUtils.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java (61%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidatorFactory.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidator.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidatorFactory.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/ClasspathResource.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoader.java (100%) create mode 100644 impl/core/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/DynamicResource.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/FileResource.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/HttpResource.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/ResourceLoader.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/ResourceLoaderFactory.java (100%) rename impl/{ => core}/src/main/java/io/serverlessworkflow/resources/StaticResource.java (100%) create mode 100644 impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java rename impl/{ => core}/src/test/resources/switch-then-string.yaml (100%) create mode 100644 impl/http/.checkstyle create mode 100644 impl/http/pom.xml rename impl/{ => http}/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java (89%) create mode 100644 impl/http/src/main/resources/META-INF/services/io.serverlessworkflow.impl.executors.CallableTask rename impl/{src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java => http/src/test/java/io/serverlessworkflow/impl/HTTPWorkflowDefinitionTest.java} (72%) rename impl/{ => http}/src/test/resources/call-http-endpoint-interpolation.yaml (100%) rename impl/{ => http}/src/test/resources/call-http-query-parameters-external-schema.yaml (100%) rename impl/{ => http}/src/test/resources/call-http-query-parameters.yaml (100%) rename impl/{ => http}/src/test/resources/callGetHttp.yaml (100%) rename impl/{ => http}/src/test/resources/callPostHttp.yaml (100%) rename impl/{ => http}/src/test/resources/schema/searchquery.yaml (100%) delete mode 100644 impl/src/main/java/io/serverlessworkflow/impl/WorkflowState.java delete mode 100644 impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java delete mode 100644 impl/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java diff --git a/api/pom.xml b/api/pom.xml index d5128d57..f6186156 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -121,77 +121,6 @@ - - org.apache.maven.plugins - maven-checkstyle-plugin - - - - - - - - - - - - - - - - ${project.build.directory}/checkstyle.log - true - true - true - false - false - ${checkstyle.logViolationsToConsole} - ${checkstyle.failOnViolation} - - ${project.build.sourceDirectory} - ${project.build.testSourceDirectory} - - - - - compile - - check - - - - - - com.spotify.fmt - fmt-maven-plugin - - src/main/java - src/test/java - false - .*\.java - false - false - - - - - - format - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - test-jar - - - - diff --git a/impl/bom/pom.xml b/impl/bom/pom.xml new file mode 100644 index 00000000..63ef0fe3 --- /dev/null +++ b/impl/bom/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + io.serverlessworkflow + serverlessworkflow-impl + 7.0.0-SNAPSHOT + + serverlessworkflow-impl-bom + pom + + + io.serverlessworkflow + serverlessworkflow-impl-core + + + io.serverlessworkflow + serverlessworkflow-impl-http + + + \ No newline at end of file diff --git a/impl/core/.checkstyle b/impl/core/.checkstyle new file mode 100644 index 00000000..cdd4188c --- /dev/null +++ b/impl/core/.checkstyle @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/impl/core/pom.xml b/impl/core/pom.xml new file mode 100644 index 00000000..597b3758 --- /dev/null +++ b/impl/core/pom.xml @@ -0,0 +1,48 @@ + + 4.0.0 + + io.serverlessworkflow + serverlessworkflow-impl + 7.0.0-SNAPSHOT + + serverlessworkflow-impl-core + + 1.1.0 + + + + io.serverlessworkflow + serverlessworkflow-api + 7.0.0-SNAPSHOT + + + com.networknt + json-schema-validator + + + net.thisptr + jackson-jq + ${version.net.thisptr} + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.jupiter + junit-jupiter-params + test + + + org.assertj + assertj-core + test + + + diff --git a/impl/src/main/java/io/serverlessworkflow/impl/DefaultWorkflowPosition.java b/impl/core/src/main/java/io/serverlessworkflow/impl/DefaultWorkflowPosition.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/DefaultWorkflowPosition.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/DefaultWorkflowPosition.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/TaskContext.java b/impl/core/src/main/java/io/serverlessworkflow/impl/TaskContext.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/TaskContext.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/TaskContext.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowContext.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowContext.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowContext.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowContext.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowDefinition.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowDefinition.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowDefinition.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowDefinition.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowExecutionListener.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowExecutionListener.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowExecutionListener.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowExecutionListener.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowFilter.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowFilter.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowFilter.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowFilter.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowInstance.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowInstance.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowInstance.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowInstance.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowPosition.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowPosition.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowPosition.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowPosition.java diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowState.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowState.java new file mode 100644 index 00000000..310dbd0b --- /dev/null +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowState.java @@ -0,0 +1,22 @@ +/* + * 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; + +public enum WorkflowState { + STARTED, + WAITING, + COMPLETED +} diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowUtils.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowUtils.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/WorkflowUtils.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowUtils.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/AbstractTaskExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/AbstractTaskExecutor.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/AbstractTaskExecutor.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/AbstractTaskExecutor.java 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 new file mode 100644 index 00000000..535057fa --- /dev/null +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java @@ -0,0 +1,37 @@ +/* + * 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 io.serverlessworkflow.api.types.TaskBase; +import io.serverlessworkflow.impl.TaskContext; +import io.serverlessworkflow.impl.WorkflowContext; +import io.serverlessworkflow.impl.WorkflowDefinition; + +public class CallTaskExecutor extends AbstractTaskExecutor { + + private final CallableTask callable; + + protected CallTaskExecutor(T task, WorkflowDefinition definition, CallableTask callable) { + super(task, definition); + this.callable = callable; + callable.init(task, definition); + } + + @Override + protected void internalExecute(WorkflowContext workflow, TaskContext taskContext) { + taskContext.rawOutput(callable.apply(workflow, taskContext, taskContext.input())); + } +} diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTask.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTask.java new file mode 100644 index 00000000..ffb94912 --- /dev/null +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallableTask.java @@ -0,0 +1,30 @@ +/* + * 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 com.fasterxml.jackson.databind.JsonNode; +import io.serverlessworkflow.api.types.TaskBase; +import io.serverlessworkflow.impl.TaskContext; +import io.serverlessworkflow.impl.WorkflowContext; +import io.serverlessworkflow.impl.WorkflowDefinition; + +public interface CallableTask { + void init(T task, WorkflowDefinition definition); + + JsonNode apply(WorkflowContext workflowContext, TaskContext taskContext, JsonNode input); + + boolean accept(Class clazz); +} diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java similarity index 71% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java index 117a8ed2..8ca2feb4 100644 --- a/impl/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/DefaultTaskExecutorFactory.java @@ -15,10 +15,13 @@ */ package io.serverlessworkflow.impl.executors; +import io.serverlessworkflow.api.types.CallHTTP; import io.serverlessworkflow.api.types.CallTask; import io.serverlessworkflow.api.types.Task; import io.serverlessworkflow.api.types.TaskBase; import io.serverlessworkflow.impl.WorkflowDefinition; +import java.util.ServiceLoader; +import java.util.ServiceLoader.Provider; public class DefaultTaskExecutorFactory implements TaskExecutorFactory { @@ -30,12 +33,15 @@ public static TaskExecutorFactory get() { protected DefaultTaskExecutorFactory() {} + private ServiceLoader callTasks = ServiceLoader.load(CallableTask.class); + public TaskExecutor getTaskExecutor( Task task, WorkflowDefinition definition) { if (task.getCallTask() != null) { CallTask callTask = task.getCallTask(); if (callTask.getCallHTTP() != null) { - return new HttpExecutor(callTask.getCallHTTP(), definition); + return new CallTaskExecutor<>( + callTask.getCallHTTP(), definition, findCallTask(CallHTTP.class)); } } else if (task.getSwitchTask() != null) { return new SwitchExecutor(task.getSwitchTask(), definition); @@ -46,4 +52,15 @@ public TaskExecutor getTaskExecutor( } throw new UnsupportedOperationException(task.get().getClass().getName() + " not supported yet"); } + + @SuppressWarnings("unchecked") + private CallableTask findCallTask(Class clazz) { + return (CallableTask) + callTasks.stream() + .map(Provider::get) + .filter(s -> s.accept(clazz)) + .findAny() + .orElseThrow( + () -> new UnsupportedOperationException(clazz.getName() + " not supported yet")); + } } diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/DoExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/DoExecutor.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/DoExecutor.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/DoExecutor.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java similarity index 74% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java index 9f421acb..f081dfa4 100644 --- a/impl/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/SwitchExecutor.java @@ -1,3 +1,18 @@ +/* + * 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 io.serverlessworkflow.api.types.FlowDirective; diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutor.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutor.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutor.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutor.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutorFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutorFactory.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutorFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/executors/TaskExecutorFactory.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/Expression.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/Expression.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/expressions/Expression.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/expressions/Expression.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionFactory.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionFactory.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionUtils.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionUtils.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionUtils.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionUtils.java diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java new file mode 100644 index 00000000..8dc1b4f2 --- /dev/null +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java @@ -0,0 +1,29 @@ +/* + * 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.expressions; + +public class ExpressionValidationException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public ExpressionValidationException(String message) { + super(message); + } + + public ExpressionValidationException(String message, Throwable ex) { + super(message, ex); + } +} diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/JQExpression.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/JQExpression.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/expressions/JQExpression.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/expressions/JQExpression.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/JQExpressionFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/JQExpressionFactory.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/expressions/JQExpressionFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/expressions/JQExpressionFactory.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/ProxyMap.java b/impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ProxyMap.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/expressions/ProxyMap.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/expressions/ProxyMap.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/json/JsonUtils.java b/impl/core/src/main/java/io/serverlessworkflow/impl/json/JsonUtils.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/json/JsonUtils.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/json/JsonUtils.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/json/MergeUtils.java b/impl/core/src/main/java/io/serverlessworkflow/impl/json/MergeUtils.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/json/MergeUtils.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/json/MergeUtils.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java b/impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java similarity index 61% rename from impl/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java index 232926b3..d3ab3190 100644 --- a/impl/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidator.java @@ -1,20 +1,17 @@ /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 + * Copyright 2020-Present The Serverless Workflow Specification Authors * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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 * - * 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. + * 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.jsonschema; diff --git a/impl/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidatorFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidatorFactory.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidatorFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/DefaultSchemaValidatorFactory.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidator.java b/impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidator.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidator.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidator.java diff --git a/impl/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidatorFactory.java b/impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidatorFactory.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidatorFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/impl/jsonschema/SchemaValidatorFactory.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/ClasspathResource.java b/impl/core/src/main/java/io/serverlessworkflow/resources/ClasspathResource.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/ClasspathResource.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/ClasspathResource.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoader.java b/impl/core/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoader.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoader.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoader.java diff --git a/impl/core/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java b/impl/core/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java new file mode 100644 index 00000000..4efddb30 --- /dev/null +++ b/impl/core/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java @@ -0,0 +1,34 @@ +/* + * 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.resources; + +import java.nio.file.Path; + +public class DefaultResourceLoaderFactory implements ResourceLoaderFactory { + + public static final ResourceLoaderFactory get() { + return factory; + } + + private static final ResourceLoaderFactory factory = new DefaultResourceLoaderFactory(); + + private DefaultResourceLoaderFactory() {} + + @Override + public ResourceLoader getResourceLoader(Path path) { + return new DefaultResourceLoader(path); + } +} diff --git a/impl/src/main/java/io/serverlessworkflow/resources/DynamicResource.java b/impl/core/src/main/java/io/serverlessworkflow/resources/DynamicResource.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/DynamicResource.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/DynamicResource.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/FileResource.java b/impl/core/src/main/java/io/serverlessworkflow/resources/FileResource.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/FileResource.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/FileResource.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/HttpResource.java b/impl/core/src/main/java/io/serverlessworkflow/resources/HttpResource.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/HttpResource.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/HttpResource.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/ResourceLoader.java b/impl/core/src/main/java/io/serverlessworkflow/resources/ResourceLoader.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/ResourceLoader.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/ResourceLoader.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/ResourceLoaderFactory.java b/impl/core/src/main/java/io/serverlessworkflow/resources/ResourceLoaderFactory.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/ResourceLoaderFactory.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/ResourceLoaderFactory.java diff --git a/impl/src/main/java/io/serverlessworkflow/resources/StaticResource.java b/impl/core/src/main/java/io/serverlessworkflow/resources/StaticResource.java similarity index 100% rename from impl/src/main/java/io/serverlessworkflow/resources/StaticResource.java rename to impl/core/src/main/java/io/serverlessworkflow/resources/StaticResource.java diff --git a/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java b/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java new file mode 100644 index 00000000..f6c3455a --- /dev/null +++ b/impl/core/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java @@ -0,0 +1,87 @@ +/* + * 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; + +import static io.serverlessworkflow.api.WorkflowReader.readWorkflowFromClasspath; +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.util.Map; +import java.util.stream.Stream; +import org.assertj.core.api.Condition; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class WorkflowDefinitionTest { + + private static WorkflowApplication appl; + + @BeforeAll + static void init() { + appl = WorkflowApplication.builder().build(); + } + + @ParameterizedTest + @MethodSource("provideParameters") + void testWorkflowExecution(String fileName, Object input, Condition condition) + throws IOException { + assertThat(appl.workflowDefinition(readWorkflowFromClasspath(fileName)).execute(input).output()) + .is(condition); + } + + private static Stream provideParameters() { + Map petInput = Map.of("petId", 10); + Condition petCondition = + new Condition<>( + o -> ((Map) o).containsKey("photoUrls"), "callHttpCondition"); + return Stream.of( + Arguments.of( + "switch-then-string.yaml", + Map.of("orderType", "electronic"), + new Condition( + o -> + o.equals( + Map.of("orderType", "electronic", "validate", true, "status", "fulfilled")), + "switch-electronic")), + Arguments.of( + "switch-then-string.yaml", + Map.of("orderType", "physical"), + new Condition( + o -> + o.equals( + Map.of( + "orderType", + "physical", + "inventory", + "clear", + "items", + 1, + "address", + "Elmer St")), + "switch-physical")), + Arguments.of( + "switch-then-string.yaml", + Map.of("orderType", "unknown"), + new Condition( + o -> + o.equals( + Map.of( + "orderType", "unknown", "log", "warn", "message", "something's wrong")), + "switch-unknown"))); + } +} diff --git a/impl/src/test/resources/switch-then-string.yaml b/impl/core/src/test/resources/switch-then-string.yaml similarity index 100% rename from impl/src/test/resources/switch-then-string.yaml rename to impl/core/src/test/resources/switch-then-string.yaml diff --git a/impl/http/.checkstyle b/impl/http/.checkstyle new file mode 100644 index 00000000..a33f7d91 --- /dev/null +++ b/impl/http/.checkstyle @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/impl/http/pom.xml b/impl/http/pom.xml new file mode 100644 index 00000000..1b19e5a4 --- /dev/null +++ b/impl/http/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + + io.serverlessworkflow + serverlessworkflow-impl + 7.0.0-SNAPSHOT + + serverlessworkflow-impl-http + + + org.glassfish.jersey.core + jersey-client + + + org.glassfish.jersey.media + jersey-media-json-jackson + + + io.serverlessworkflow + serverlessworkflow-impl-core + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.jupiter + junit-jupiter-params + test + + + org.assertj + assertj-core + test + + + \ No newline at end of file diff --git a/impl/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java b/impl/http/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java similarity index 89% rename from impl/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java rename to impl/http/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java index b8548549..684acd47 100644 --- a/impl/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java +++ b/impl/http/src/main/java/io/serverlessworkflow/impl/executors/HttpExecutor.java @@ -21,6 +21,7 @@ import io.serverlessworkflow.api.types.Endpoint; import io.serverlessworkflow.api.types.EndpointUri; import io.serverlessworkflow.api.types.HTTPArguments; +import io.serverlessworkflow.api.types.TaskBase; import io.serverlessworkflow.api.types.UriTemplate; import io.serverlessworkflow.impl.TaskContext; import io.serverlessworkflow.impl.WorkflowContext; @@ -39,14 +40,14 @@ import java.util.Map.Entry; import java.util.Optional; -public class HttpExecutor extends AbstractTaskExecutor { +public class HttpExecutor implements CallableTask { private static final Client client = ClientBuilder.newClient(); - private final TargetSupplier targetSupplier; - private final Map headersMap; - private final Map queryMap; - private final RequestSupplier requestFunction; + private TargetSupplier targetSupplier; + private Map headersMap; + private Map queryMap; + private RequestSupplier requestFunction; @FunctionalInterface private interface TargetSupplier { @@ -58,8 +59,8 @@ private interface RequestSupplier { JsonNode apply(Builder request, WorkflowContext workflow, TaskContext task, JsonNode node); } - public HttpExecutor(CallHTTP task, WorkflowDefinition definition) { - super(task, definition); + @Override + public void init(CallHTTP task, WorkflowDefinition definition) { HTTPArguments httpArgs = task.getWith(); this.targetSupplier = getTargetSupplier(httpArgs.getEndpoint(), definition.expressionFactory()); this.headersMap = @@ -92,8 +93,8 @@ public HttpExecutor(CallHTTP task, WorkflowDefinition definition) { } @Override - protected void internalExecute(WorkflowContext workflow, TaskContext taskContext) { - JsonNode input = taskContext.input(); + public JsonNode apply( + WorkflowContext workflow, TaskContext taskContext, JsonNode input) { WebTarget target = targetSupplier.apply(workflow, taskContext, input); for (Entry entry : ExpressionUtils.evaluateExpressionMap(queryMap, workflow, Optional.of(taskContext), input) @@ -103,7 +104,12 @@ protected void internalExecute(WorkflowContext workflow, TaskContext t Builder request = target.request(); ExpressionUtils.evaluateExpressionMap(headersMap, workflow, Optional.of(taskContext), input) .forEach(request::header); - taskContext.rawOutput(requestFunction.apply(request, workflow, taskContext, input)); + return requestFunction.apply(request, workflow, taskContext, input); + } + + @Override + public boolean accept(Class clazz) { + return clazz.equals(CallHTTP.class); } private static TargetSupplier getTargetSupplier( diff --git a/impl/http/src/main/resources/META-INF/services/io.serverlessworkflow.impl.executors.CallableTask b/impl/http/src/main/resources/META-INF/services/io.serverlessworkflow.impl.executors.CallableTask new file mode 100644 index 00000000..7d5e6bf9 --- /dev/null +++ b/impl/http/src/main/resources/META-INF/services/io.serverlessworkflow.impl.executors.CallableTask @@ -0,0 +1 @@ +io.serverlessworkflow.impl.executors.HttpExecutor \ No newline at end of file diff --git a/impl/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java b/impl/http/src/test/java/io/serverlessworkflow/impl/HTTPWorkflowDefinitionTest.java similarity index 72% rename from impl/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java rename to impl/http/src/test/java/io/serverlessworkflow/impl/HTTPWorkflowDefinitionTest.java index 187c0215..dacdfe2e 100644 --- a/impl/src/test/java/io/serverlessworkflow/impl/WorkflowDefinitionTest.java +++ b/impl/http/src/test/java/io/serverlessworkflow/impl/HTTPWorkflowDefinitionTest.java @@ -1,5 +1,3 @@ -package io.serverlessworkflow.impl; - /* * Copyright 2020-Present The Serverless Workflow Specification Authors * @@ -15,6 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package io.serverlessworkflow.impl; + import static io.serverlessworkflow.api.WorkflowReader.readWorkflowFromClasspath; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowableOfType; @@ -29,7 +29,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; -public class WorkflowDefinitionTest { +public class HTTPWorkflowDefinitionTest { private static WorkflowApplication appl; @@ -83,39 +83,6 @@ private static Stream provideParameters() { Arguments.of( "callPostHttp.yaml", Map.of("name", "Javierito", "status", "available"), - new Condition<>(o -> o.equals("Javierito"), "CallHttpPostCondition")), - Arguments.of( - "switch-then-string.yaml", - Map.of("orderType", "electronic"), - new Condition( - o -> - o.equals( - Map.of("orderType", "electronic", "validate", true, "status", "fulfilled")), - "switch-electronic")), - Arguments.of( - "switch-then-string.yaml", - Map.of("orderType", "physical"), - new Condition( - o -> - o.equals( - Map.of( - "orderType", - "physical", - "inventory", - "clear", - "items", - 1, - "address", - "Elmer St")), - "switch-physical")), - Arguments.of( - "switch-then-string.yaml", - Map.of("orderType", "unknown"), - new Condition( - o -> - o.equals( - Map.of( - "orderType", "unknown", "log", "warn", "message", "something's wrong")), - "switch-unknown"))); + new Condition<>(o -> o.equals("Javierito"), "CallHttpPostCondition"))); } } diff --git a/impl/src/test/resources/call-http-endpoint-interpolation.yaml b/impl/http/src/test/resources/call-http-endpoint-interpolation.yaml similarity index 100% rename from impl/src/test/resources/call-http-endpoint-interpolation.yaml rename to impl/http/src/test/resources/call-http-endpoint-interpolation.yaml diff --git a/impl/src/test/resources/call-http-query-parameters-external-schema.yaml b/impl/http/src/test/resources/call-http-query-parameters-external-schema.yaml similarity index 100% rename from impl/src/test/resources/call-http-query-parameters-external-schema.yaml rename to impl/http/src/test/resources/call-http-query-parameters-external-schema.yaml diff --git a/impl/src/test/resources/call-http-query-parameters.yaml b/impl/http/src/test/resources/call-http-query-parameters.yaml similarity index 100% rename from impl/src/test/resources/call-http-query-parameters.yaml rename to impl/http/src/test/resources/call-http-query-parameters.yaml diff --git a/impl/src/test/resources/callGetHttp.yaml b/impl/http/src/test/resources/callGetHttp.yaml similarity index 100% rename from impl/src/test/resources/callGetHttp.yaml rename to impl/http/src/test/resources/callGetHttp.yaml diff --git a/impl/src/test/resources/callPostHttp.yaml b/impl/http/src/test/resources/callPostHttp.yaml similarity index 100% rename from impl/src/test/resources/callPostHttp.yaml rename to impl/http/src/test/resources/callPostHttp.yaml diff --git a/impl/src/test/resources/schema/searchquery.yaml b/impl/http/src/test/resources/schema/searchquery.yaml similarity index 100% rename from impl/src/test/resources/schema/searchquery.yaml rename to impl/http/src/test/resources/schema/searchquery.yaml diff --git a/impl/pom.xml b/impl/pom.xml index 770f8090..191dc39d 100644 --- a/impl/pom.xml +++ b/impl/pom.xml @@ -6,78 +6,37 @@ 7.0.0-SNAPSHOT serverlessworkflow-impl + pom - 3.1.9 - 1.1.0 + 3.1.9 - - - io.serverlessworkflow - serverlessworkflow-api - 7.0.0-SNAPSHOT - - - org.glassfish.jersey.core - jersey-client - ${version.org.glassfish.jersey} - - - org.glassfish.jersey.media - jersey-media-json-jackson - ${version.org.glassfish.jersey} - - - com.networknt - json-schema-validator - - - net.thisptr - jackson-jq - ${version.net.thisptr} - - - org.junit.jupiter - junit-jupiter-api - test - - - org.junit.jupiter - junit-jupiter-engine - test - - - org.junit.jupiter - junit-jupiter-params - test - - - org.assertj - assertj-core - test - - - - - - com.spotify.fmt - fmt-maven-plugin - - src/main/java - src/test/java - false - .*\.java - false - false - - - - - - format - - - - - - + + + + io.serverlessworkflow + serverlessworkflow-impl-core + ${project.version} + + + io.serverlessworkflow + serverlessworkflow-impl-http + ${project.version} + + + org.glassfish.jersey.core + jersey-client + ${version.org.glassfish.jersey} + + + org.glassfish.jersey.media + jersey-media-json-jackson + ${version.org.glassfish.jersey} + + + + + http + core + bom + \ No newline at end of file diff --git a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowState.java b/impl/src/main/java/io/serverlessworkflow/impl/WorkflowState.java deleted file mode 100644 index 939fd1e8..00000000 --- a/impl/src/main/java/io/serverlessworkflow/impl/WorkflowState.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.serverlessworkflow.impl; - -public enum WorkflowState { - STARTED, - WAITING, - COMPLETED -} diff --git a/impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java b/impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java deleted file mode 100644 index 16fe144f..00000000 --- a/impl/src/main/java/io/serverlessworkflow/impl/expressions/ExpressionValidationException.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.serverlessworkflow.impl.expressions; - -public class ExpressionValidationException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public ExpressionValidationException(String message) { - super(message); - } - - public ExpressionValidationException(String message, Throwable ex) { - super(message, ex); - } -} diff --git a/impl/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java b/impl/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java deleted file mode 100644 index 5a33601b..00000000 --- a/impl/src/main/java/io/serverlessworkflow/resources/DefaultResourceLoaderFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.serverlessworkflow.resources; - -import java.nio.file.Path; - -public class DefaultResourceLoaderFactory implements ResourceLoaderFactory { - - public static final ResourceLoaderFactory get() { - return factory; - } - - private static final ResourceLoaderFactory factory = new DefaultResourceLoaderFactory(); - - private DefaultResourceLoaderFactory() {} - - @Override - public ResourceLoader getResourceLoader(Path path) { - return new DefaultResourceLoader(path); - } -} diff --git a/pom.xml b/pom.xml index 36fc113b..da0a7678 100644 --- a/pom.xml +++ b/pom.xml @@ -232,6 +232,67 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + + + + + + + + + + + + + + + + ${project.build.directory}/checkstyle.log + true + true + true + false + false + ${checkstyle.logViolationsToConsole} + ${checkstyle.failOnViolation} + + ${project.build.sourceDirectory} + ${project.build.testSourceDirectory} + + + + + compile + + check + + + + + + com.spotify.fmt + fmt-maven-plugin + + src/main/java + src/test/java + false + .*\.java + false + false + + + + + + format + + + + +