diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cb1d0f12aa7..40530369fb7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,7 +60,7 @@ This section explains how you can setup a development environment for ByteChef c ### Prerequisites -- Node v16+ +- [Node v16+](https://nodejs.org/en/download/) - [Docker](https://docs.docker.com/get-docker/) ### Steps for setup @@ -185,8 +185,8 @@ This section doesn't provide instructions to install Java and Gradle because the ### Prerequisites - [Docker](https://docs.docker.com/get-docker/) -- Java - OpenJDK 17. -- Gradle - V7.6+. +- [Java - GraalVM V22.3+](https://www.graalvm.org/downloads/) +- Gradle - V7.6+. - Comes as part of the project as [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) - A PostgreSQL database - Refer to the [Setting up local development infrastructure](#setting-up-local-development-infrastructure-using-docker). - A Redis instance - Refer to the [Setting up local development infrastructure](#setting-up-local-development-infrastructure-using-docker). diff --git a/client/src/data-access/integration/.openapi-generator/FILES b/client/src/data-access/integration/.openapi-generator/FILES index d7d782ff274..cc4f7c37075 100644 --- a/client/src/data-access/integration/.openapi-generator/FILES +++ b/client/src/data-access/integration/.openapi-generator/FILES @@ -4,6 +4,7 @@ index.ts models/CategoryModel.ts models/IntegrationModel.ts models/PostIntegrationWorkflowRequestModel.ts +models/PutIntegrationTagsRequestModel.ts models/TagModel.ts models/WorkflowFormatModel.ts models/WorkflowModel.ts diff --git a/client/src/data-access/integration/apis/IntegrationsApi.ts b/client/src/data-access/integration/apis/IntegrationsApi.ts index bd5855458ce..b69b61d317d 100644 --- a/client/src/data-access/integration/apis/IntegrationsApi.ts +++ b/client/src/data-access/integration/apis/IntegrationsApi.ts @@ -18,6 +18,7 @@ import type { CategoryModel, IntegrationModel, PostIntegrationWorkflowRequestModel, + PutIntegrationTagsRequestModel, TagModel, WorkflowModel, } from '../models'; @@ -28,6 +29,8 @@ import { IntegrationModelToJSON, PostIntegrationWorkflowRequestModelFromJSON, PostIntegrationWorkflowRequestModelToJSON, + PutIntegrationTagsRequestModelFromJSON, + PutIntegrationTagsRequestModelToJSON, TagModelFromJSON, TagModelToJSON, WorkflowModelFromJSON, @@ -67,7 +70,7 @@ export interface PutIntegrationRequest { export interface PutIntegrationTagsRequest { id: number; - tagModel: Array; + putIntegrationTagsRequestModel: PutIntegrationTagsRequestModel; } /** @@ -298,8 +301,8 @@ export class IntegrationsApi extends runtime.BaseAPI { } /** - * Creates new workflow and adds it to an existing integration. - * Creates new workflow and adds it to an existing integration. + * Create new workflow and adds it to an existing integration. + * Create new workflow and adds it to an existing integration. */ async postIntegrationWorkflowRaw(requestParameters: PostIntegrationWorkflowRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters.id === null || requestParameters.id === undefined) { @@ -328,8 +331,8 @@ export class IntegrationsApi extends runtime.BaseAPI { } /** - * Creates new workflow and adds it to an existing integration. - * Creates new workflow and adds it to an existing integration. + * Create new workflow and adds it to an existing integration. + * Create new workflow and adds it to an existing integration. */ async postIntegrationWorkflow(requestParameters: PostIntegrationWorkflowRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.postIntegrationWorkflowRaw(requestParameters, initOverrides); @@ -384,8 +387,8 @@ export class IntegrationsApi extends runtime.BaseAPI { throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling putIntegrationTags.'); } - if (requestParameters.tagModel === null || requestParameters.tagModel === undefined) { - throw new runtime.RequiredError('tagModel','Required parameter requestParameters.tagModel was null or undefined when calling putIntegrationTags.'); + if (requestParameters.putIntegrationTagsRequestModel === null || requestParameters.putIntegrationTagsRequestModel === undefined) { + throw new runtime.RequiredError('putIntegrationTagsRequestModel','Required parameter requestParameters.putIntegrationTagsRequestModel was null or undefined when calling putIntegrationTags.'); } const queryParameters: any = {}; @@ -399,7 +402,7 @@ export class IntegrationsApi extends runtime.BaseAPI { method: 'PUT', headers: headerParameters, query: queryParameters, - body: requestParameters.tagModel.map(TagModelToJSON), + body: PutIntegrationTagsRequestModelToJSON(requestParameters.putIntegrationTagsRequestModel), }, initOverrides); return new runtime.VoidApiResponse(response); diff --git a/client/src/data-access/integration/models/PutIntegrationTagsRequestModel.ts b/client/src/data-access/integration/models/PutIntegrationTagsRequestModel.ts new file mode 100644 index 00000000000..80d0d66b12e --- /dev/null +++ b/client/src/data-access/integration/models/PutIntegrationTagsRequestModel.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * OpenAPI definition + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { TagModel } from './TagModel'; +import { + TagModelFromJSON, + TagModelFromJSONTyped, + TagModelToJSON, +} from './TagModel'; + +/** + * The request object that contains the array of tags. + * @export + * @interface PutIntegrationTagsRequestModel + */ +export interface PutIntegrationTagsRequestModel { + /** + * + * @type {Array} + * @memberof PutIntegrationTagsRequestModel + */ + tags?: Array; +} + +/** + * Check if a given object implements the PutIntegrationTagsRequestModel interface. + */ +export function instanceOfPutIntegrationTagsRequestModel(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function PutIntegrationTagsRequestModelFromJSON(json: any): PutIntegrationTagsRequestModel { + return PutIntegrationTagsRequestModelFromJSONTyped(json, false); +} + +export function PutIntegrationTagsRequestModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): PutIntegrationTagsRequestModel { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'tags': !exists(json, 'tags') ? undefined : ((json['tags'] as Array).map(TagModelFromJSON)), + }; +} + +export function PutIntegrationTagsRequestModelToJSON(value?: PutIntegrationTagsRequestModel | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'tags': value.tags === undefined ? undefined : ((value.tags as Array).map(TagModelToJSON)), + }; +} + diff --git a/client/src/data-access/integration/models/index.ts b/client/src/data-access/integration/models/index.ts index 8281aaf6b15..8dc548675e6 100644 --- a/client/src/data-access/integration/models/index.ts +++ b/client/src/data-access/integration/models/index.ts @@ -3,6 +3,7 @@ export * from './CategoryModel'; export * from './IntegrationModel'; export * from './PostIntegrationWorkflowRequestModel'; +export * from './PutIntegrationTagsRequestModel'; export * from './TagModel'; export * from './WorkflowFormatModel'; export * from './WorkflowModel'; diff --git a/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/domain/Workflow.java b/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/domain/Workflow.java index ac1ea2275bb..1a9164714a6 100644 --- a/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/domain/Workflow.java +++ b/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/domain/Workflow.java @@ -23,7 +23,7 @@ import com.bytechef.atlas.error.Errorable; import com.bytechef.atlas.error.ExecutionError; import com.bytechef.atlas.task.WorkflowTask; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Collections; @@ -141,14 +141,14 @@ public Workflow(String id, String definition, Format format, Map this.id = id; this.format = format; this.definition = definition; - this.description = MapUtils.getString(source, WorkflowConstants.DESCRIPTION); - this.inputs = MapUtils.getList( + this.description = MapValueUtils.getString(source, WorkflowConstants.DESCRIPTION); + this.inputs = MapValueUtils.getList( source, WorkflowConstants.INPUTS, new ParameterizedTypeReference<>() {}, Collections.emptyList()); - this.label = MapUtils.getString(source, WorkflowConstants.LABEL); - this.outputs = MapUtils.getList( + this.label = MapValueUtils.getString(source, WorkflowConstants.LABEL); + this.outputs = MapValueUtils.getList( source, WorkflowConstants.OUTPUTS, new ParameterizedTypeReference<>() {}, Collections.emptyList()); - this.retry = MapUtils.getInteger(source, WorkflowConstants.RETRY, 0); - this.tasks = MapUtils + this.retry = MapValueUtils.getInteger(source, WorkflowConstants.RETRY, 0); + this.tasks = MapValueUtils .getList(source, WorkflowConstants.TASKS, new ParameterizedTypeReference>() {}) .stream() .map(WorkflowTask::new) diff --git a/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/task/WorkflowTask.java b/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/task/WorkflowTask.java index 5794cef75a8..dc3361567b4 100644 --- a/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/task/WorkflowTask.java +++ b/server/libs/atlas/atlas-api/src/main/java/com/bytechef/atlas/task/WorkflowTask.java @@ -21,7 +21,7 @@ import com.bytechef.atlas.constants.WorkflowConstants; import com.bytechef.commons.utils.CollectionUtils; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.io.Serializable; import java.util.Collections; import java.util.HashMap; @@ -41,7 +41,7 @@ public class WorkflowTask implements Serializable { static { - MapUtils.addConverter(new Converter() { + MapValueUtils.addConverter(new Converter() { @Override @SuppressWarnings("unchecked") @@ -83,34 +83,34 @@ public void putAll(Map source) { this.finalize = CollectionUtils.concat( finalize, CollectionUtils.map( - MapUtils.getList( + MapValueUtils.getList( source, WorkflowConstants.FINALIZE, Map.class, Collections.emptyList()), WorkflowTask::new)); } if (source.containsKey(WorkflowConstants.LABEL)) { - this.label = MapUtils.getString(source, WorkflowConstants.LABEL); + this.label = MapValueUtils.getString(source, WorkflowConstants.LABEL); } if (source.containsKey(WorkflowConstants.NAME)) { - this.name = MapUtils.getString(source, WorkflowConstants.NAME); + this.name = MapValueUtils.getString(source, WorkflowConstants.NAME); } if (source.containsKey(WorkflowConstants.NODE)) { - this.node = MapUtils.getString(source, WorkflowConstants.NODE); + this.node = MapValueUtils.getString(source, WorkflowConstants.NODE); } if (source.containsKey(WorkflowConstants.PARAMETERS)) { this.parameters = CollectionUtils.concat( parameters, - MapUtils.getMap(source, WorkflowConstants.PARAMETERS, Collections.emptyMap())); + MapValueUtils.getMap(source, WorkflowConstants.PARAMETERS, Collections.emptyMap())); } if (source.containsKey(WorkflowConstants.POST)) { this.post = CollectionUtils.concat( post, CollectionUtils.map( - MapUtils.getList( + MapValueUtils.getList( source, WorkflowConstants.POST, Map.class, Collections.emptyList()), WorkflowTask::new)); } @@ -119,17 +119,17 @@ public void putAll(Map source) { this.pre = CollectionUtils.concat( pre, CollectionUtils.map( - MapUtils.getList( + MapValueUtils.getList( source, WorkflowConstants.PRE, Map.class, Collections.emptyList()), WorkflowTask::new)); } if (source.containsKey(WorkflowConstants.TIMEOUT)) { - this.timeout = MapUtils.getString(source, WorkflowConstants.TIMEOUT); + this.timeout = MapValueUtils.getString(source, WorkflowConstants.TIMEOUT); } if (source.containsKey(WorkflowConstants.TYPE)) { - this.type = MapUtils.getString(source, WorkflowConstants.TYPE); + this.type = MapValueUtils.getString(source, WorkflowConstants.TYPE); } } diff --git a/server/libs/atlas/atlas-api/src/test/java/com/bytechef/atlas/task/evaluator/TaskEvaluatorTest.java b/server/libs/atlas/atlas-api/src/test/java/com/bytechef/atlas/task/evaluator/TaskEvaluatorTest.java index 81ffdb39051..c7d4b3bff9e 100644 --- a/server/libs/atlas/atlas-api/src/test/java/com/bytechef/atlas/task/evaluator/TaskEvaluatorTest.java +++ b/server/libs/atlas/atlas-api/src/test/java/com/bytechef/atlas/task/evaluator/TaskEvaluatorTest.java @@ -24,7 +24,7 @@ import com.bytechef.atlas.domain.TaskExecution; import com.bytechef.atlas.task.WorkflowTask; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.io.File; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -68,7 +68,7 @@ public void test3() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.singletonMap("name", "arik")); - Assertions.assertEquals("arik", MapUtils.getString(taskExecution.getParameters(), "hello")); + Assertions.assertEquals("arik", MapValueUtils.getString(taskExecution.getParameters(), "hello")); } @Test @@ -83,7 +83,7 @@ public void test4() { taskExecution = taskEvaluator.evaluate(taskExecution, context); - Assertions.assertEquals("Arik Cohen", MapUtils.getString(taskExecution.getParameters(), "hello")); + Assertions.assertEquals("Arik Cohen", MapValueUtils.getString(taskExecution.getParameters(), "hello")); } @Test @@ -98,7 +98,7 @@ public void test5() { taskExecution = taskEvaluator.evaluate(taskExecution, context); Assertions.assertEquals( - Integer.valueOf(5), (Integer) MapUtils.get(taskExecution.getParameters(), "hello")); + Integer.valueOf(5), (Integer) MapValueUtils.get(taskExecution.getParameters(), "hello")); } @Test @@ -115,7 +115,7 @@ public void test6() { Assertions.assertEquals( Arrays.asList("Arik", "Cohen"), - MapUtils.getList(taskExecution.getParameters(), "list", String.class)); + MapValueUtils.getList(taskExecution.getParameters(), "list", String.class)); } @Test @@ -130,7 +130,7 @@ public void test7() { Assertions.assertEquals( Collections.singletonMap("hello", "Arik"), - MapUtils.getMap(taskExecution.getParameters(), "map")); + MapValueUtils.getMap(taskExecution.getParameters(), "map")); } @Test @@ -145,7 +145,7 @@ public void test8() { taskExecution = taskEvaluator.evaluate(taskExecution, context); Assertions.assertEquals( - Integer.valueOf(15), MapUtils.getInteger(taskExecution.getParameters(), "mult")); + Integer.valueOf(15), MapValueUtils.getInteger(taskExecution.getParameters(), "mult")); } @Test @@ -155,7 +155,7 @@ public void test9() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("${name}", MapUtils.getString(taskExecution.getParameters(), "message")); + Assertions.assertEquals("${name}", MapValueUtils.getString(taskExecution.getParameters(), "message")); } @Test @@ -165,7 +165,7 @@ public void test10() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("yo ${name}", MapUtils.getString(taskExecution.getParameters(), "message")); + Assertions.assertEquals("yo ${name}", MapValueUtils.getString(taskExecution.getParameters(), "message")); } @Test @@ -175,7 +175,7 @@ public void test11() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.singletonMap("number", 1)); - Assertions.assertEquals(1, MapUtils.get(taskExecution.getParameters(), "thing")); + Assertions.assertEquals(1, MapValueUtils.get(taskExecution.getParameters(), "thing")); } @Test @@ -185,7 +185,7 @@ public void test12() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.singletonMap("number", 1)); - Assertions.assertEquals(3, MapUtils.get(taskExecution.getParameters(), "thing")); + Assertions.assertEquals(3, MapValueUtils.get(taskExecution.getParameters(), "thing")); } @Test @@ -195,7 +195,7 @@ public void test13() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("${number*3}", MapUtils.get(taskExecution.getParameters(), "thing")); + Assertions.assertEquals("${number*3}", MapValueUtils.get(taskExecution.getParameters(), "thing")); } @Test @@ -205,7 +205,7 @@ public void test14() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals(Arrays.asList(1, 2, 3), MapUtils.get(taskExecution.getParameters(), "list")); + Assertions.assertEquals(Arrays.asList(1, 2, 3), MapValueUtils.get(taskExecution.getParameters(), "list")); } @Test @@ -218,7 +218,7 @@ public void test15() { Assertions.assertEquals( Arrays.asList(1, 2, 3), - MapUtils.getMap(taskExecution.getParameters(), "sub") + MapValueUtils.getMap(taskExecution.getParameters(), "sub") .get("list")); } @@ -229,7 +229,7 @@ public void test16() { taskExecution = taskEvaluator.evaluate(taskExecution, Map.of("item1", "hello", "item2", "world")); - Assertions.assertEquals("hello-world", MapUtils.get(taskExecution.getParameters(), "message")); + Assertions.assertEquals("hello-world", MapValueUtils.get(taskExecution.getParameters(), "message")); } @Test @@ -239,7 +239,7 @@ public void test17() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals(Boolean.TRUE, MapUtils.get(taskExecution.getParameters(), "someBoolean")); + Assertions.assertEquals(Boolean.TRUE, MapValueUtils.get(taskExecution.getParameters(), "someBoolean")); } @Test @@ -250,7 +250,7 @@ public void test18() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); Assertions.assertEquals( - Byte.MAX_VALUE, MapUtils.get(taskExecution.getParameters(), "someByte")); + Byte.MAX_VALUE, MapValueUtils.get(taskExecution.getParameters(), "someByte")); } @Test @@ -261,7 +261,7 @@ public void test19() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); Assertions.assertEquals( - 'c', MapUtils.get(taskExecution.getParameters(), "someChar")); + 'c', MapValueUtils.get(taskExecution.getParameters(), "someChar")); } @Test @@ -272,7 +272,7 @@ public void test20() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); Assertions.assertEquals( - Short.MAX_VALUE, MapUtils.get(taskExecution.getParameters(), "someShort")); + Short.MAX_VALUE, MapValueUtils.get(taskExecution.getParameters(), "someShort")); } @Test @@ -282,7 +282,7 @@ public void test21() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals(1, MapUtils.get(taskExecution.getParameters(), "someInt")); + Assertions.assertEquals(1, MapValueUtils.get(taskExecution.getParameters(), "someInt")); } @Test @@ -292,7 +292,7 @@ public void test22() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals(1L, MapUtils.get(taskExecution.getParameters(), "someLong")); + Assertions.assertEquals(1L, MapValueUtils.get(taskExecution.getParameters(), "someLong")); } @Test @@ -303,7 +303,7 @@ public void test23() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); Assertions.assertEquals( - 1.337f, MapUtils.get(taskExecution.getParameters(), "someFloat")); + 1.337f, MapValueUtils.get(taskExecution.getParameters(), "someFloat")); } @Test @@ -314,7 +314,7 @@ public void test24() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); Assertions.assertEquals( - 1.337d, MapUtils.get(taskExecution.getParameters(), "someDouble")); + 1.337d, MapValueUtils.get(taskExecution.getParameters(), "someDouble")); } @Test @@ -324,7 +324,7 @@ public void test25() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("1,2,3", MapUtils.get(taskExecution.getParameters(), "joined")); + Assertions.assertEquals("1,2,3", MapValueUtils.get(taskExecution.getParameters(), "joined")); } @Test @@ -334,7 +334,7 @@ public void test26() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("1", MapUtils.get(taskExecution.getParameters(), "joined")); + Assertions.assertEquals("1", MapValueUtils.get(taskExecution.getParameters(), "joined")); } @Test @@ -344,7 +344,7 @@ public void test27() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("a and b and c", MapUtils.get(taskExecution.getParameters(), "joined")); + Assertions.assertEquals("a and b and c", MapValueUtils.get(taskExecution.getParameters(), "joined")); } @Test @@ -357,7 +357,7 @@ public void test28() { Assertions.assertEquals( Arrays.asList("a", "b", "c", "d", "e", "f"), - MapUtils.get(taskExecution.getParameters(), "concatenated")); + MapValueUtils.get(taskExecution.getParameters(), "concatenated")); } @Test @@ -370,7 +370,7 @@ public void test29() { Assertions.assertEquals( Arrays.asList("a", "b", "c", 1, 2, 3), - MapUtils.get(taskExecution.getParameters(), "concatenated")); + MapValueUtils.get(taskExecution.getParameters(), "concatenated")); } @Test @@ -383,7 +383,7 @@ public void test30() { Assertions.assertEquals( Arrays.asList("a", "b", "c", "d", "e", "f"), - MapUtils.get(taskExecution.getParameters(), "flattened")); + MapValueUtils.get(taskExecution.getParameters(), "flattened")); } @Test @@ -396,7 +396,7 @@ public void test31() { Assertions.assertEquals( Arrays.asList("a", "b", "c", 1, 2, 3), - MapUtils.get(taskExecution.getParameters(), "flattened")); + MapValueUtils.get(taskExecution.getParameters(), "flattened")); } @Test @@ -414,7 +414,7 @@ public void test32() { tmpDir = tmpDir.substring(0, tmpDir.lastIndexOf(File.separator)); } - Assertions.assertEquals(tmpDir, MapUtils.get(taskExecution.getParameters(), "tempDir")); + Assertions.assertEquals(tmpDir, MapValueUtils.get(taskExecution.getParameters(), "tempDir")); } @Test @@ -424,7 +424,7 @@ public void test33() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertNotNull(MapUtils.get(taskExecution.getParameters(), "uuid")); + Assertions.assertNotNull(MapValueUtils.get(taskExecution.getParameters(), "uuid")); } @Test @@ -438,7 +438,7 @@ public void test34() { taskExecution = taskEvaluator.evaluate(taskExecution, context); Assertions.assertEquals( - "Arik ${lastName}", MapUtils.getString(taskExecution.getParameters(), "fullName")); + "Arik ${lastName}", MapValueUtils.getString(taskExecution.getParameters(), "fullName")); } @Test @@ -452,7 +452,7 @@ public void test35() { taskExecution = taskEvaluator.evaluate(taskExecution, context); - Assertions.assertEquals(0.5d, MapUtils.getDouble(taskExecution.getParameters(), "result")); + Assertions.assertEquals(0.5d, MapValueUtils.getDouble(taskExecution.getParameters(), "result")); } @Test @@ -463,7 +463,7 @@ public void test36() { taskExecution = taskEvaluator.evaluate(taskExecution, context); - Assertions.assertEquals("005", MapUtils.getString(taskExecution.getParameters(), "number")); + Assertions.assertEquals("005", MapValueUtils.getString(taskExecution.getParameters(), "number")); } @Test @@ -475,7 +475,7 @@ public void test37() { taskExecution = taskEvaluator.evaluate(taskExecution, context); - Assertions.assertEquals("hello world", MapUtils.getString(taskExecution.getParameters(), "number")); + Assertions.assertEquals("hello world", MapValueUtils.getString(taskExecution.getParameters(), "number")); } @Test @@ -488,7 +488,7 @@ public void test38() { Assertions.assertEquals( Arrays.asList(1, 2, 3), - MapUtils.getList(taskExecution.getParameters(), "sorted", Integer.class)); + MapValueUtils.getList(taskExecution.getParameters(), "sorted", Integer.class)); } @Test @@ -500,7 +500,7 @@ public void test39() { Assertions.assertEquals( Arrays.asList("A", "B", "C"), - MapUtils.getList(taskExecution.getParameters(), "sorted", String.class)); + MapValueUtils.getList(taskExecution.getParameters(), "sorted", String.class)); } @Test @@ -513,7 +513,7 @@ public void test40() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Assertions.assertEquals( - sdf.format(new Date()), MapUtils.getString(taskExecution.getParameters(), "date")); + sdf.format(new Date()), MapValueUtils.getString(taskExecution.getParameters(), "date")); } @Test @@ -527,7 +527,7 @@ public void test41() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); - Assertions.assertEquals("something", MapUtils.getString(taskExecution.getParameters(), "myValue")); + Assertions.assertEquals("something", MapValueUtils.getString(taskExecution.getParameters(), "myValue")); } @Test @@ -541,6 +541,6 @@ public void test42() { taskExecution = taskEvaluator.evaluate(taskExecution, Collections.emptyMap()); Assertions.assertEquals( - "${config('no.such.property')}", MapUtils.getString(taskExecution.getParameters(), "myValue")); + "${config('no.such.property')}", MapValueUtils.getString(taskExecution.getParameters(), "myValue")); } } diff --git a/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/JobStatusWebhookEventListener.java b/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/JobStatusWebhookEventListener.java index 395cbdb1d54..9228bada996 100644 --- a/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/JobStatusWebhookEventListener.java +++ b/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/JobStatusWebhookEventListener.java @@ -24,7 +24,7 @@ import com.bytechef.atlas.event.JobStatusWorkflowEvent; import com.bytechef.atlas.event.WorkflowEvent; import com.bytechef.atlas.service.JobService; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.time.Duration; import java.time.temporal.ChronoUnit; @@ -77,7 +77,8 @@ private void handleEvent(JobStatusWorkflowEvent workflowEvent) { } for (Map webhook : job.getWebhooks()) { - if (JobStatusWorkflowEvent.JOB_STATUS.equals(MapUtils.getRequiredString(webhook, WorkflowConstants.TYPE))) { + if (JobStatusWorkflowEvent.JOB_STATUS + .equals(MapValueUtils.getRequiredString(webhook, WorkflowConstants.TYPE))) { Map webhookEvent = new HashMap<>(webhook); webhookEvent.put(WorkflowConstants.EVENT, workflowEvent); @@ -88,25 +89,25 @@ private void handleEvent(JobStatusWorkflowEvent workflowEvent) { if (context.getRetryCount() == 0) { logger.debug( "Calling webhook {} -> {}", - MapUtils.getRequiredString(webhook, WorkflowConstants.URL), + MapValueUtils.getRequiredString(webhook, WorkflowConstants.URL), webhookEvent); } else { logger.debug( "[Retry: {}] Calling webhook {} -> {}", context.getRetryCount(), - MapUtils.getRequiredString(webhook, WorkflowConstants.URL), + MapValueUtils.getRequiredString(webhook, WorkflowConstants.URL), webhookEvent); } return restTemplate.postForObject( - MapUtils.getRequiredString(webhook, WorkflowConstants.URL), webhookEvent, String.class); + MapValueUtils.getRequiredString(webhook, WorkflowConstants.URL), webhookEvent, String.class); }); } } } private RetryTemplate createRetryTemplate(Map webhook) { - Map retryParams = MapUtils.get(webhook, "retry", new ParameterizedTypeReference<>() {}, + Map retryParams = MapValueUtils.get(webhook, "retry", new ParameterizedTypeReference<>() {}, Collections.emptyMap()); RetryTemplate retryTemplate = new RetryTemplate(); @@ -114,15 +115,15 @@ private RetryTemplate createRetryTemplate(Map webhook) { ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy(); backOffPolicy.setInitialInterval( - MapUtils.getDuration(retryParams, "initialInterval", Duration.of(2, ChronoUnit.SECONDS)) + MapValueUtils.getDuration(retryParams, "initialInterval", Duration.of(2, ChronoUnit.SECONDS)) .toMillis()); backOffPolicy.setMaxInterval( - MapUtils.getDuration(retryParams, "maxInterval", Duration.of(30, ChronoUnit.SECONDS)) + MapValueUtils.getDuration(retryParams, "maxInterval", Duration.of(30, ChronoUnit.SECONDS)) .toMillis()); - backOffPolicy.setMultiplier(MapUtils.getDouble(retryParams, "multiplier", 2.0)); + backOffPolicy.setMultiplier(MapValueUtils.getDouble(retryParams, "multiplier", 2.0)); retryTemplate.setBackOffPolicy(backOffPolicy); SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy(); - retryPolicy.setMaxAttempts(MapUtils.getInteger(retryParams, "maxAttempts", 5)); + retryPolicy.setMaxAttempts(MapValueUtils.getInteger(retryParams, "maxAttempts", 5)); retryTemplate.setRetryPolicy(retryPolicy); return retryTemplate; diff --git a/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/TaskStartedWebhookEventListener.java b/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/TaskStartedWebhookEventListener.java index 3094037361e..a27238843c8 100644 --- a/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/TaskStartedWebhookEventListener.java +++ b/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/event/TaskStartedWebhookEventListener.java @@ -24,7 +24,7 @@ import com.bytechef.atlas.event.TaskStartedWorkflowEvent; import com.bytechef.atlas.event.WorkflowEvent; import com.bytechef.atlas.service.JobService; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.HashMap; import java.util.Map; @@ -72,13 +72,13 @@ private void handleEvent(TaskStartedWorkflowEvent workflowEvent) { for (Map webhook : job.getWebhooks()) { if (TaskStartedWorkflowEvent.TASK_STARTED.equals( - MapUtils.getRequiredString(webhook, WorkflowConstants.TYPE))) { + MapValueUtils.getRequiredString(webhook, WorkflowConstants.TYPE))) { Map webhookEvent = new HashMap<>(webhook); webhookEvent.put(WorkflowConstants.EVENT, workflowEvent); rest.postForObject( - MapUtils.getRequiredString(webhook, WorkflowConstants.URL), webhookEvent, String.class); + MapValueUtils.getRequiredString(webhook, WorkflowConstants.URL), webhookEvent, String.class); } } } diff --git a/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/task/completion/DefaultTaskCompletionHandler.java b/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/task/completion/DefaultTaskCompletionHandler.java index dba19321159..020f8df804f 100644 --- a/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/task/completion/DefaultTaskCompletionHandler.java +++ b/server/libs/atlas/atlas-coordinator/atlas-coordinator-impl/src/main/java/com/bytechef/atlas/coordinator/task/completion/DefaultTaskCompletionHandler.java @@ -34,7 +34,7 @@ import com.bytechef.atlas.task.WorkflowTask; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -136,8 +136,8 @@ private void complete(Job job) { for (Map output : workflow.getOutputs()) { source.put( - MapUtils.getRequiredString(output, WorkflowConstants.NAME), - MapUtils.getRequiredString(output, WorkflowConstants.VALUE)); + MapValueUtils.getRequiredString(output, WorkflowConstants.NAME), + MapValueUtils.getRequiredString(output, WorkflowConstants.VALUE)); } job.setStatus(Job.Status.COMPLETED); diff --git a/server/libs/atlas/atlas-service/src/main/java/com/bytechef/atlas/service/impl/JobServiceImpl.java b/server/libs/atlas/atlas-service/src/main/java/com/bytechef/atlas/service/impl/JobServiceImpl.java index 52a96d39177..a1aa827279b 100644 --- a/server/libs/atlas/atlas-service/src/main/java/com/bytechef/atlas/service/impl/JobServiceImpl.java +++ b/server/libs/atlas/atlas-service/src/main/java/com/bytechef/atlas/service/impl/JobServiceImpl.java @@ -25,7 +25,7 @@ import com.bytechef.atlas.repository.JobRepository; import com.bytechef.atlas.repository.WorkflowRepository; import com.bytechef.atlas.service.JobService; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Date; import java.util.List; @@ -195,7 +195,7 @@ private void validate(JobParameters workflowParameters, Workflow workflow) { Map inputs = workflowParameters.getInputs(); for (Map input : workflow.getInputs()) { - if (MapUtils.getBoolean(input, WorkflowConstants.REQUIRED, false)) { + if (MapValueUtils.getBoolean(input, WorkflowConstants.REQUIRED, false)) { Assert.isTrue( inputs.containsKey(input.get(WorkflowConstants.NAME)), "Missing required param: " + input.get("name")); diff --git a/server/libs/atlas/atlas-worker/atlas-worker-impl/src/test/java/com/bytechef/atlas/worker/WorkerTest.java b/server/libs/atlas/atlas-worker/atlas-worker-impl/src/test/java/com/bytechef/atlas/worker/WorkerTest.java index 0075fda0929..43ca96dd82f 100644 --- a/server/libs/atlas/atlas-worker/atlas-worker-impl/src/test/java/com/bytechef/atlas/worker/WorkerTest.java +++ b/server/libs/atlas/atlas-worker/atlas-worker-impl/src/test/java/com/bytechef/atlas/worker/WorkerTest.java @@ -25,7 +25,7 @@ import com.bytechef.atlas.task.WorkflowTask; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.worker.task.exception.TaskExecutionException; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.io.File; import java.util.List; import java.util.Map; @@ -99,7 +99,7 @@ public void test3() { .withTaskHandlerResolver(t1 -> { String type = t1.getType(); if ("var".equals(type)) { - return t2 -> MapUtils.getRequired(t2.getParameters(), "value"); + return t2 -> MapValueUtils.getRequired(t2.getParameters(), "value"); } else { throw new IllegalArgumentException("unknown type: " + type); } @@ -138,12 +138,12 @@ public void test4() { .withTaskHandlerResolver(t1 -> { String type = t1.getType(); if ("var".equals(type)) { - return t2 -> MapUtils.getRequired(t2.getParameters(), "value"); + return t2 -> MapValueUtils.getRequired(t2.getParameters(), "value"); } else if ("mkdir".equals(type)) { - return t2 -> (new File(MapUtils.getString(t2.getParameters(), "path")).mkdirs()); + return t2 -> (new File(MapValueUtils.getString(t2.getParameters(), "path")).mkdirs()); } else if ("rm".equals(type)) { return t2 -> FileSystemUtils - .deleteRecursively((new File(MapUtils.getString(t2.getParameters(), "path")))); + .deleteRecursively((new File(MapValueUtils.getString(t2.getParameters(), "path")))); } else if ("pass".equals(type)) { Assertions.assertTrue(new File(tempDir).exists()); return t2 -> null; @@ -184,12 +184,12 @@ public void test5() { .withTaskHandlerResolver(t1 -> { String type = t1.getType(); if ("var".equals(type)) { - return t2 -> MapUtils.getRequired(t2.getParameters(), "value"); + return t2 -> MapValueUtils.getRequired(t2.getParameters(), "value"); } else if ("mkdir".equals(type)) { - return t2 -> (new File(MapUtils.getString(t2.getParameters(), "path")).mkdirs()); + return t2 -> (new File(MapValueUtils.getString(t2.getParameters(), "path")).mkdirs()); } else if ("rm".equals(type)) { return t2 -> FileSystemUtils - .deleteRecursively((new File(MapUtils.getString(t2.getParameters(), "path")))); + .deleteRecursively((new File(MapValueUtils.getString(t2.getParameters(), "path")))); } else if ("rogue".equals(type)) { Assertions.assertTrue(new File(tempDir).exists()); return t2 -> { diff --git a/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/CollectionUtils.java b/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/CollectionUtils.java index f971f77fae7..f7c17a913e1 100644 --- a/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/CollectionUtils.java +++ b/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/CollectionUtils.java @@ -59,6 +59,12 @@ public static Map concat(Map map1, Map map2) { .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v2)); } + public static boolean containsKey(Map map, String key) { + Assert.notNull(map, "'map' must not be null"); + + return map.containsKey(key); + } + public static List map(List list, Function mapper) { Assert.notNull(list, "'list' must not be null"); diff --git a/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/MapUtils.java b/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/MapValueUtils.java similarity index 98% rename from server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/MapUtils.java rename to server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/MapValueUtils.java index 8d627147a4c..a329966eea0 100644 --- a/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/MapUtils.java +++ b/server/libs/core/commons/commons-utils/src/main/java/com/bytechef/commons/utils/MapValueUtils.java @@ -40,19 +40,13 @@ /** * @author Ivica Cardic */ -public final class MapUtils { +public final class MapValueUtils { private static final String TIMESTAMP_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; private static final DefaultConversionService conversionService = new DefaultConversionService(); - private MapUtils() { - } - - public static boolean containsKey(Map map, String key) { - Assert.notNull(map, "'map' must not be null"); - - return map.containsKey(key); + private MapValueUtils() { } public static Object get(Map map, String key) { diff --git a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ConnectionImpl.java b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ConnectionImpl.java index c424b696b34..2d845718490 100644 --- a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ConnectionImpl.java +++ b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ConnectionImpl.java @@ -17,7 +17,7 @@ package com.bytechef.hermes.component.impl; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.hermes.component.Connection; import java.util.Map; import org.springframework.core.ParameterizedTypeReference; @@ -59,7 +59,7 @@ public T getParameter(String name) { @Override public T getParameter(String name, T defaultValue) { - return MapUtils.get(parameters, name, new ParameterizedTypeReference<>() {}, defaultValue); + return MapValueUtils.get(parameters, name, new ParameterizedTypeReference<>() {}, defaultValue); } @Override diff --git a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ContextImpl.java b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ContextImpl.java index 79fd26a9fff..0fb7de1959a 100644 --- a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ContextImpl.java +++ b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ContextImpl.java @@ -22,7 +22,8 @@ import com.bytechef.atlas.domain.TaskExecution; import com.bytechef.atlas.event.EventPublisher; import com.bytechef.atlas.event.TaskProgressedWorkflowEvent; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.CollectionUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.hermes.component.Connection; import com.bytechef.hermes.component.Context; import com.bytechef.hermes.component.FileEntry; @@ -41,7 +42,7 @@ public class ContextImpl implements Context { static { - MapUtils.addConverter(new Converter, FileEntry>() { + MapValueUtils.addConverter(new Converter, FileEntry>() { @Override public FileEntry convert(Map source) { @@ -78,7 +79,7 @@ public ContextImpl( public Optional fetchConnectionParameters() { Optional connectionParametersOptional = Optional.empty(); - if (MapUtils.containsKey(taskExecution.getParameters(), CONNECTION_ID)) { + if (CollectionUtils.containsKey(taskExecution.getParameters(), CONNECTION_ID)) { connectionParametersOptional = Optional.of(getConnectionParameters()); } @@ -93,7 +94,7 @@ public ConnectionDefinition getConnectionDefinition() { @Override public Connection getConnectionParameters() { return new ConnectionImpl(connectionService.getConnection( - MapUtils.getRequired(taskExecution.getParameters(), CONNECTION_ID))); + MapValueUtils.getRequired(taskExecution.getParameters(), CONNECTION_ID))); } @Override diff --git a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ExecutionParametersImpl.java b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ExecutionParametersImpl.java index 942e3385beb..73289388153 100644 --- a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ExecutionParametersImpl.java +++ b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/impl/ExecutionParametersImpl.java @@ -17,7 +17,7 @@ package com.bytechef.hermes.component.impl; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.hermes.component.ExecutionParameters; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.time.Duration; @@ -46,97 +46,97 @@ public boolean containsKey(String key) { @Override public Object get(String key) { - return MapUtils.get(parameters, key); + return MapValueUtils.get(parameters, key); } @Override public T get(String key, Class returnType) { - return MapUtils.get(parameters, key, returnType); + return MapValueUtils.get(parameters, key, returnType); } @Override public T get(String key, Class returnType, T defaultValue) { - return MapUtils.get(parameters, key, returnType, defaultValue); + return MapValueUtils.get(parameters, key, returnType, defaultValue); } @Override public T[] getArray(String key, Class elementType) { - return MapUtils.getArray(parameters, key, elementType); + return MapValueUtils.getArray(parameters, key, elementType); } @Override public Boolean getBoolean(String key) { - return MapUtils.getBoolean(parameters, key); + return MapValueUtils.getBoolean(parameters, key); } @Override public boolean getBoolean(String key, boolean defaultValue) { - return MapUtils.getBoolean(parameters, key, defaultValue); + return MapValueUtils.getBoolean(parameters, key, defaultValue); } @Override public Date getDate(String key) { - return MapUtils.getDate(parameters, key); + return MapValueUtils.getDate(parameters, key); } @Override public Date getDate(String key, Date defaultValue) { - return MapUtils.getDate(parameters, key, defaultValue); + return MapValueUtils.getDate(parameters, key, defaultValue); } @Override public Double getDouble(String key) { - return MapUtils.getDouble(parameters, key); + return MapValueUtils.getDouble(parameters, key); } @Override public double getDouble(String key, double defaultValue) { - return MapUtils.getDouble(parameters, key, defaultValue); + return MapValueUtils.getDouble(parameters, key, defaultValue); } @Override public Float getFloat(String key) { - return MapUtils.getFloat(parameters, key); + return MapValueUtils.getFloat(parameters, key); } @Override public float getFloat(String key, float defaultValue) { - return MapUtils.getFloat(parameters, key, defaultValue); + return MapValueUtils.getFloat(parameters, key, defaultValue); } @Override public Integer getInteger(String key) { - return MapUtils.getInteger(parameters, key); + return MapValueUtils.getInteger(parameters, key); } @Override public int getInteger(String key, int defaultValue) { - return MapUtils.getInteger(parameters, key, defaultValue); + return MapValueUtils.getInteger(parameters, key, defaultValue); } @Override public List getList(String key, Class elementType) { - return MapUtils.getList(parameters, key, elementType); + return MapValueUtils.getList(parameters, key, elementType); } @Override public List getList(String key, Class elementType, List defaultValue) { - return MapUtils.getList(parameters, key, elementType, defaultValue); + return MapValueUtils.getList(parameters, key, elementType, defaultValue); } @Override public List getList(String key, List> elementTypes, List defaultValue) { - return MapUtils.getList(parameters, key, elementTypes, defaultValue); + return MapValueUtils.getList(parameters, key, elementTypes, defaultValue); } @Override public Long getLong(String key) { - return MapUtils.getLong(parameters, key); + return MapValueUtils.getLong(parameters, key); } @Override public Duration getDuration(String key) { - return MapUtils.getDuration(parameters, key); + return MapValueUtils.getDuration(parameters, key); } @Override @@ -146,102 +146,102 @@ public Duration getDuration(String key, Duration defaultValue) { @Override public LocalDate getLocalDate(String key) { - return MapUtils.getLocalDate(parameters, key); + return MapValueUtils.getLocalDate(parameters, key); } @Override public LocalDate getLocalDate(String key, LocalDate defaultValue) { - return MapUtils.getLocalDate(parameters, key, defaultValue); + return MapValueUtils.getLocalDate(parameters, key, defaultValue); } @Override public LocalDateTime getLocalDateTime(String key) { - return MapUtils.getLocalDateTime(parameters, key); + return MapValueUtils.getLocalDateTime(parameters, key); } @Override public LocalDateTime getLocalDateTime(String key, LocalDateTime defaultValue) { - return MapUtils.getLocalDateTime(parameters, key, defaultValue); + return MapValueUtils.getLocalDateTime(parameters, key, defaultValue); } @Override public long getLong(String key, long defaultValue) { - return MapUtils.getLong(parameters, key, defaultValue); + return MapValueUtils.getLong(parameters, key, defaultValue); } @Override public Map getMap(String key) { - return MapUtils.getMap(parameters, key); + return MapValueUtils.getMap(parameters, key); } @Override public Map getMap(String key, Map defaultValue) { - return MapUtils.getMap(parameters, key, defaultValue); + return MapValueUtils.getMap(parameters, key, defaultValue); } @Override public Map getMap(String key, List> valueTypes, Map defaultValue) { - return MapUtils.getMap(parameters, key, valueTypes, defaultValue); + return MapValueUtils.getMap(parameters, key, valueTypes, defaultValue); } @Override public Object getRequired(String key) { - return MapUtils.getRequired(parameters, key); + return MapValueUtils.getRequired(parameters, key); } @Override public T getRequired(String key, Class returnType) { - return MapUtils.getRequired(parameters, key, returnType); + return MapValueUtils.getRequired(parameters, key, returnType); } @Override public Boolean getRequiredBoolean(String key) { - return MapUtils.getRequiredBoolean(parameters, key); + return MapValueUtils.getRequiredBoolean(parameters, key); } @Override public Date getRequiredDate(String key) { - return MapUtils.getRequiredDate(parameters, key); + return MapValueUtils.getRequiredDate(parameters, key); } @Override public Double getRequiredDouble(String key) { - return MapUtils.getRequiredDouble(parameters, key); + return MapValueUtils.getRequiredDouble(parameters, key); } @Override public Float getRequiredFloat(String key) { - return MapUtils.getRequiredFloat(parameters, key); + return MapValueUtils.getRequiredFloat(parameters, key); } @Override public Integer getRequiredInteger(String key) { - return MapUtils.getRequiredInteger(parameters, key); + return MapValueUtils.getRequiredInteger(parameters, key); } @Override public LocalDate getRequiredLocalDate(String key) { - return MapUtils.getRequiredLocalDate(parameters, key); + return MapValueUtils.getRequiredLocalDate(parameters, key); } @Override public LocalDateTime getRequiredLocalDateTime(String key) { - return MapUtils.getRequiredLocalDateTime(parameters, key); + return MapValueUtils.getRequiredLocalDateTime(parameters, key); } @Override public String getRequiredString(String key) { - return MapUtils.getRequiredString(parameters, key); + return MapValueUtils.getRequiredString(parameters, key); } @Override public String getString(String key) { - return MapUtils.getString(parameters, key); + return MapValueUtils.getString(parameters, key); } @Override public String getString(String key, String defaultValue) { - return MapUtils.getString(parameters, key, defaultValue); + return MapValueUtils.getString(parameters, key, defaultValue); } @Override diff --git a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/rest/RestClient.java b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/rest/RestClient.java index 2ebcefb236f..1608915de6a 100644 --- a/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/rest/RestClient.java +++ b/server/libs/hermes/hermes-component/hermes-component-registrar/src/main/java/com/bytechef/hermes/component/rest/RestClient.java @@ -18,7 +18,7 @@ package com.bytechef.hermes.component.rest; import com.bytechef.atlas.domain.TaskExecution; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.hermes.component.Context; import com.bytechef.hermes.component.FileEntry; import com.bytechef.hermes.component.RestComponentHandler.PropertyType; @@ -54,12 +54,12 @@ public Object execute(ActionDefinition actionDefinition, Context context, TaskEx .build()) .exchange( createUri(metadata, taskExecution.getParameters(), actionDefinition.getProperties()), - MapUtils.get(metadata, "requestMethod", HttpClientUtils.RequestMethod.class)) + MapValueUtils.get(metadata, "requestMethod", HttpClientUtils.RequestMethod.class)) .headers(getValuesMap(taskExecution.getParameters(), actionDefinition.getProperties(), PropertyType.HEADER)) .payload( getPayload( - MapUtils.get(metadata, "bodyContentType", BodyContentType.class), - MapUtils.getString(metadata, "mimeType"), + MapValueUtils.get(metadata, "bodyContentType", BodyContentType.class), + MapValueUtils.getString(metadata, "mimeType"), taskExecution.getParameters(), actionDefinition.getProperties())) .queryParameters( getValuesMap(taskExecution.getParameters(), actionDefinition.getProperties(), PropertyType.QUERY)) @@ -72,9 +72,9 @@ private String createUri( String path = (String) metadata.get("path"); for (Property property : properties) { - if (MapUtils.get(property.getMetadata(), TYPE, PropertyType.class) == PropertyType.PATH) { + if (MapValueUtils.get(property.getMetadata(), TYPE, PropertyType.class) == PropertyType.PATH) { path = path.replace( - "{" + property.getName() + "}", MapUtils.getRequiredString(parameters, property.getName())); + "{" + property.getName() + "}", MapValueUtils.getRequiredString(parameters, property.getName())); } } @@ -88,25 +88,27 @@ private Payload getPayload( if (bodyContentType != null) { for (Property property : properties) { - if (Objects.equals(MapUtils.get(property.getMetadata(), TYPE, PropertyType.class), PropertyType.BODY)) { + if (Objects.equals(MapValueUtils.get(property.getMetadata(), TYPE, PropertyType.class), + PropertyType.BODY)) { payload = switch (bodyContentType) { case BINARY -> Payload.of( - MapUtils.getRequired(parameters, property.getName(), FileEntry.class), mimeType); + MapValueUtils.getRequired(parameters, property.getName(), FileEntry.class), mimeType); case FORM_DATA, FORM_URL_ENCODED -> Payload.of( - MapUtils.getRequiredMap(parameters, property.getName())); + MapValueUtils.getRequiredMap(parameters, property.getName())); case JSON, XML -> { if (property.getType() == Property.Type.ARRAY) { yield Payload.of( - MapUtils.getRequiredList(parameters, property.getName(), Object.class)); + MapValueUtils.getRequiredList(parameters, property.getName(), Object.class)); } else if (property.getType() == Property.Type.OBJECT) { yield Payload.of( - MapUtils.getRequiredMap(parameters, property.getName())); + MapValueUtils.getRequiredMap(parameters, property.getName())); } else { yield Payload.of( - MapUtils.getRequiredString(parameters, property.getName())); + MapValueUtils.getRequiredString(parameters, property.getName())); } } - case RAW -> Payload.of(MapUtils.getRequiredString(parameters, property.getName()), mimeType); + case RAW -> Payload.of(MapValueUtils.getRequiredString(parameters, property.getName()), + mimeType); }; break; @@ -124,7 +126,7 @@ private ResponseFormat getResponseFormat(ActionDefinition actionDefinition) { if (outputProperties != null && !outputProperties.isEmpty()) { Property property = outputProperties.get(0); - responseFormat = MapUtils.get(property.getMetadata(), "responseFormat", ResponseFormat.class); + responseFormat = MapValueUtils.get(property.getMetadata(), "responseFormat", ResponseFormat.class); } return responseFormat; @@ -136,8 +138,8 @@ private Map> getValuesMap( Map> valuesMap = new HashMap<>(); for (Property property : properties) { - if (Objects.equals(MapUtils.get(property.getMetadata(), TYPE, PropertyType.class), propertyType)) { - String value = MapUtils.getString(parameters, property.getName()); + if (Objects.equals(MapValueUtils.get(property.getMetadata(), TYPE, PropertyType.class), propertyType)) { + String value = MapValueUtils.getString(parameters, property.getName()); valuesMap.compute(property.getName(), (key, values) -> { if (StringUtils.hasText(value)) { diff --git a/server/libs/hermes/hermes-file-storage/hermes-file-storage-api/src/test/java/com/bytechef/hermes/file/storage/FileEntryTest.java b/server/libs/hermes/hermes-file-storage/hermes-file-storage-api/src/test/java/com/bytechef/hermes/file/storage/FileEntryTest.java index 692b5d11731..7f20b5ddca7 100644 --- a/server/libs/hermes/hermes-file-storage/hermes-file-storage-api/src/test/java/com/bytechef/hermes/file/storage/FileEntryTest.java +++ b/server/libs/hermes/hermes-file-storage/hermes-file-storage-api/src/test/java/com/bytechef/hermes/file/storage/FileEntryTest.java @@ -22,7 +22,7 @@ import com.bytechef.atlas.domain.TaskExecution; import com.bytechef.atlas.task.WorkflowTask; import com.bytechef.atlas.task.evaluator.TaskEvaluator; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.hermes.file.storage.domain.FileEntry; import java.util.Collections; import org.assertj.core.api.Assertions; @@ -62,6 +62,6 @@ public void testSpelEvaluation() { Collections.singletonMap("fileEntry", new FileEntry("sample.txt", "/tmp/fileName.txt"))); assertEquals( - "sample.txt /tmp/fileName.txt", MapUtils.getString(taskExecution.getParameters(), "result")); + "sample.txt /tmp/fileName.txt", MapValueUtils.getString(taskExecution.getParameters(), "result")); } } diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/.openapi-generator/FILES b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/.openapi-generator/FILES index 80d0781398a..e764c44b853 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/.openapi-generator/FILES +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/.openapi-generator/FILES @@ -3,4 +3,5 @@ src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationsApi.java src/main/java/com/bytechef/hermes/integration/web/rest/model/CategoryModel.java src/main/java/com/bytechef/hermes/integration/web/rest/model/IntegrationModel.java src/main/java/com/bytechef/hermes/integration/web/rest/model/PostIntegrationWorkflowRequestModel.java +src/main/java/com/bytechef/hermes/integration/web/rest/model/PutIntegrationTagsRequestModel.java src/main/java/com/bytechef/hermes/integration/web/rest/model/TagModel.java diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationsApi.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationsApi.java index b875206bc63..147faf3b492 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationsApi.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationsApi.java @@ -7,8 +7,8 @@ import com.bytechef.hermes.integration.web.rest.model.CategoryModel; import com.bytechef.hermes.integration.web.rest.model.IntegrationModel; -import java.util.List; import com.bytechef.hermes.integration.web.rest.model.PostIntegrationWorkflowRequestModel; +import com.bytechef.hermes.integration.web.rest.model.PutIntegrationTagsRequestModel; import com.bytechef.hermes.integration.web.rest.model.TagModel; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -36,7 +36,7 @@ import java.util.Optional; import jakarta.annotation.Generated; -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-01-20T23:05:10.694831+01:00[Europe/Zagreb]") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-02-08T13:23:46.808411+01:00[Europe/Zagreb]") @Validated @Tag(name = "integrations", description = "the integrations API") public interface IntegrationsApi { @@ -401,7 +401,7 @@ default Mono> putIntegration( * Updates tags of an existing integration. * * @param id The id of the integration. (required) - * @param tagModel (required) + * @param putIntegrationTagsRequestModel (required) * @return Successful operation. (status code 200) */ @Operation( @@ -419,12 +419,12 @@ default Mono> putIntegration( ) default Mono> putIntegrationTags( @Parameter(name = "id", description = "The id of the integration.", required = true) @PathVariable("id") Long id, - @Parameter(name = "TagModel", description = "", required = true) @Valid @RequestBody Flux tagModel, + @Parameter(name = "PutIntegrationTagsRequestModel", description = "", required = true) @Valid @RequestBody Mono putIntegrationTagsRequestModel, @Parameter(hidden = true) final ServerWebExchange exchange ) { Mono result = Mono.empty(); exchange.getResponse().setStatusCode(HttpStatus.NOT_IMPLEMENTED); - return result.thenMany(tagModel).then(Mono.empty()); + return result.then(putIntegrationTagsRequestModel).then(Mono.empty()); } diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/CategoryModel.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/CategoryModel.java index 85d47140e6e..4260b126200 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/CategoryModel.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/CategoryModel.java @@ -23,7 +23,7 @@ @Schema(name = "Category", description = "An integration category.") @JsonTypeName("Category") -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-01-20T23:05:10.694831+01:00[Europe/Zagreb]") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-02-08T13:23:46.808411+01:00[Europe/Zagreb]") public class CategoryModel { @JsonProperty("createdBy") diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/IntegrationModel.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/IntegrationModel.java index a2ee5b91ceb..444e97544c7 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/IntegrationModel.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/IntegrationModel.java @@ -27,7 +27,7 @@ @Schema(name = "Integration", description = "A group of workflows that make one logical integration.") @JsonTypeName("Integration") -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-01-20T23:05:10.694831+01:00[Europe/Zagreb]") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-02-08T13:23:46.808411+01:00[Europe/Zagreb]") public class IntegrationModel { @JsonProperty("category") diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PostIntegrationWorkflowRequestModel.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PostIntegrationWorkflowRequestModel.java index 4696200d5c6..45a096f8cf3 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PostIntegrationWorkflowRequestModel.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PostIntegrationWorkflowRequestModel.java @@ -20,7 +20,7 @@ */ @JsonTypeName("postIntegrationWorkflow_request") -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-01-20T23:05:10.694831+01:00[Europe/Zagreb]") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-02-08T13:23:46.808411+01:00[Europe/Zagreb]") public class PostIntegrationWorkflowRequestModel { @JsonProperty("name") diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PutIntegrationTagsRequestModel.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PutIntegrationTagsRequestModel.java new file mode 100644 index 00000000000..d7d07d76440 --- /dev/null +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/PutIntegrationTagsRequestModel.java @@ -0,0 +1,98 @@ +package com.bytechef.hermes.integration.web.rest.model; + +import java.net.URI; +import java.util.Objects; +import com.bytechef.hermes.integration.web.rest.model.TagModel; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import java.util.ArrayList; +import java.util.List; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * The request object that contains the array of tags. + */ + +@Schema(name = "putIntegrationTags_request", description = "The request object that contains the array of tags.") +@JsonTypeName("putIntegrationTags_request") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-02-08T13:23:46.808411+01:00[Europe/Zagreb]") +public class PutIntegrationTagsRequestModel { + + @JsonProperty("tags") + @Valid + private List tags = null; + + public PutIntegrationTagsRequestModel tags(List tags) { + this.tags = tags; + return this; + } + + public PutIntegrationTagsRequestModel addTagsItem(TagModel tagsItem) { + if (this.tags == null) { + this.tags = new ArrayList<>(); + } + this.tags.add(tagsItem); + return this; + } + + /** + * Get tags + * @return tags + */ + @Valid + @Schema(name = "tags", required = false) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PutIntegrationTagsRequestModel putIntegrationTagsRequest = (PutIntegrationTagsRequestModel) o; + return Objects.equals(this.tags, putIntegrationTagsRequest.tags); + } + + @Override + public int hashCode() { + return Objects.hash(tags); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PutIntegrationTagsRequestModel {\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} + diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/TagModel.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/TagModel.java index 7e565634339..aa5ab11f4c2 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/TagModel.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/generated/src/main/java/com/bytechef/hermes/integration/web/rest/model/TagModel.java @@ -23,7 +23,7 @@ @Schema(name = "Tag", description = "An integration tag.") @JsonTypeName("Tag") -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-01-20T23:05:10.694831+01:00[Europe/Zagreb]") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2023-02-08T13:23:46.808411+01:00[Europe/Zagreb]") public class TagModel { @JsonProperty("id") diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/openapi.yaml b/server/libs/hermes/hermes-integration/hermes-integration-rest/openapi.yaml index 2a5787093a3..a2abb07a58b 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/openapi.yaml +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/openapi.yaml @@ -238,9 +238,12 @@ paths: application/json: schema: description: The request object that contains the array of tags. - type: array - items: - $ref: '#/components/schemas/Tag' + type: object + properties: + tags: + type: array + items: + $ref: '#/components/schemas/Tag' required: true responses: "200": diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationController.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationController.java index 37f889db3fb..61d6545713f 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationController.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/src/main/java/com/bytechef/hermes/integration/web/rest/IntegrationController.java @@ -25,6 +25,7 @@ import com.bytechef.hermes.integration.web.rest.model.CategoryModel; import com.bytechef.hermes.integration.web.rest.model.IntegrationModel; import com.bytechef.hermes.integration.web.rest.model.PostIntegrationWorkflowRequestModel; +import com.bytechef.hermes.integration.web.rest.model.PutIntegrationTagsRequestModel; import com.bytechef.hermes.integration.web.rest.model.TagModel; import com.bytechef.tag.domain.Tag; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -37,6 +38,8 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import java.util.List; + /** * @author Ivica Cardic */ @@ -155,18 +158,19 @@ public Mono> putIntegration( @Override public Mono> putIntegrationTags( - Long id, Flux tagModelFlux, ServerWebExchange exchange) { - - return tagModelFlux.collectList() - .map(tagModels -> { - integrationFacade.update( - id, - tagModels.stream() - .map(tagModel -> conversionService.convert(tagModel, Tag.class)) - .toList()); - - return ResponseEntity.noContent() - .build(); - }); + Long id, Mono tagsRequestModelMono, ServerWebExchange exchange) { + + return tagsRequestModelMono.map(tagsRequestModel -> { + List tagModels = tagsRequestModel.getTags(); + + integrationFacade.update( + id, + tagModels.stream() + .map(tagModel -> conversionService.convert(tagModel, Tag.class)) + .toList()); + + return ResponseEntity.noContent() + .build(); + }); } } diff --git a/server/libs/hermes/hermes-integration/hermes-integration-rest/src/test/java/com/bytechef/hermes/integration/web/rest/IntegrationControllerIntTest.java b/server/libs/hermes/hermes-integration/hermes-integration-rest/src/test/java/com/bytechef/hermes/integration/web/rest/IntegrationControllerIntTest.java index 14d9ff99144..54998d1ca97 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-rest/src/test/java/com/bytechef/hermes/integration/web/rest/IntegrationControllerIntTest.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-rest/src/test/java/com/bytechef/hermes/integration/web/rest/IntegrationControllerIntTest.java @@ -33,6 +33,7 @@ import com.bytechef.hermes.integration.web.rest.model.CategoryModel; import com.bytechef.hermes.integration.web.rest.model.IntegrationModel; import com.bytechef.hermes.integration.web.rest.model.PostIntegrationWorkflowRequestModel; +import com.bytechef.hermes.integration.web.rest.model.PutIntegrationTagsRequestModel; import com.bytechef.hermes.integration.web.rest.model.TagModel; import com.bytechef.tag.domain.Tag; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -370,7 +371,7 @@ public void testPutIntegrationTags() { .uri("/integrations/1/tags") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON) - .bodyValue(List.of(new TagModel().name("tag1"))) + .bodyValue(new PutIntegrationTagsRequestModel().tags(List.of(new TagModel().name("tag1")))) .exchange() .expectStatus() .is2xxSuccessful(); diff --git a/server/libs/hermes/hermes-integration/hermes-integration-service/src/main/java/com/bytechef/hermes/integration/facade/impl/IntegrationFacadeImpl.java b/server/libs/hermes/hermes-integration/hermes-integration-service/src/main/java/com/bytechef/hermes/integration/facade/impl/IntegrationFacadeImpl.java index e9573b585ec..5d26a7d9764 100644 --- a/server/libs/hermes/hermes-integration/hermes-integration-service/src/main/java/com/bytechef/hermes/integration/facade/impl/IntegrationFacadeImpl.java +++ b/server/libs/hermes/hermes-integration/hermes-integration-service/src/main/java/com/bytechef/hermes/integration/facade/impl/IntegrationFacadeImpl.java @@ -32,6 +32,7 @@ import org.springframework.util.CollectionUtils; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -180,7 +181,7 @@ public List getIntegrationWorkflows(Long id) { @Override public Integration update(Long id, List tags) { - tags = CollectionUtils.isEmpty(tags) ? null : tagService.save(tags); + tags = CollectionUtils.isEmpty(tags) ? Collections.emptyList() : tagService.save(tags); return integrationService.update(id, tags); } @@ -190,7 +191,10 @@ public Integration update(Integration integration) { integration .setCategory(integration.getCategory() == null ? null : categoryService.save(integration.getCategory())); integration - .setTags(CollectionUtils.isEmpty(integration.getTags()) ? null : tagService.save(integration.getTags())); + .setTags( + CollectionUtils.isEmpty(integration.getTags()) + ? Collections.emptyList() + : tagService.save(integration.getTags())); return integrationService.update(integration); } diff --git a/server/libs/modules/components/map/src/test/java/com/bytechef/component/map/MapTaskDispatcherAdapterTaskHandlerTest.java b/server/libs/modules/components/map/src/test/java/com/bytechef/component/map/MapTaskDispatcherAdapterTaskHandlerTest.java index 318ad6d1b50..cbd42062568 100644 --- a/server/libs/modules/components/map/src/test/java/com/bytechef/component/map/MapTaskDispatcherAdapterTaskHandlerTest.java +++ b/server/libs/modules/components/map/src/test/java/com/bytechef/component/map/MapTaskDispatcherAdapterTaskHandlerTest.java @@ -27,7 +27,7 @@ import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.worker.Worker; import com.bytechef.atlas.worker.task.handler.TaskHandlerResolver; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -41,7 +41,7 @@ public class MapTaskDispatcherAdapterTaskHandlerTest { @Test public void test1() { - TaskHandlerResolver resolver = task -> t -> MapUtils.get(t.getParameters(), "value"); + TaskHandlerResolver resolver = task -> t -> MapValueUtils.get(t.getParameters(), "value"); MapTaskDispatcherAdapterTaskHandler taskHandler = new MapTaskDispatcherAdapterTaskHandler(resolver, TaskEvaluator.create()); @@ -101,7 +101,7 @@ public void test3() { String type = t1.getType(); if ("var".equals(type)) { - return t2 -> MapUtils.getRequired(t2.getParameters(), "value"); + return t2 -> MapValueUtils.getRequired(t2.getParameters(), "value"); } if ("pass".equals(type)) { return t2 -> null; diff --git a/server/libs/modules/task-dispatchers/each/src/main/java/com/bytechef/task/dispatcher/each/EachTaskDispatcher.java b/server/libs/modules/task-dispatchers/each/src/main/java/com/bytechef/task/dispatcher/each/EachTaskDispatcher.java index 6bb7819e735..5ade4fbba6d 100644 --- a/server/libs/modules/task-dispatchers/each/src/main/java/com/bytechef/task/dispatcher/each/EachTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/each/src/main/java/com/bytechef/task/dispatcher/each/EachTaskDispatcher.java @@ -39,7 +39,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.task.dispatcher.each.constants.EachTaskDispatcherConstants; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -83,8 +83,8 @@ public EachTaskDispatcher( @Override @SuppressFBWarnings("NP") public void dispatch(TaskExecution taskExecution) { - Map iteratee = MapUtils.getRequiredMap(taskExecution.getParameters(), ITERATEE); - List list = MapUtils.getRequiredList(taskExecution.getParameters(), LIST, Object.class); + Map iteratee = MapValueUtils.getRequiredMap(taskExecution.getParameters(), ITERATEE); + List list = MapValueUtils.getRequiredList(taskExecution.getParameters(), LIST, Object.class); taskExecution.setStartTime(LocalDateTime.now()); taskExecution.setStatus(TaskStatus.STARTED); @@ -109,8 +109,8 @@ public void dispatch(TaskExecution taskExecution) { Map newContext = new HashMap<>( contextService.peek(taskExecution.getId(), Context.Classname.TASK_EXECUTION)); - newContext.put(MapUtils.getString(taskExecution.getParameters(), ITEM_VAR, ITEM), item); - newContext.put(MapUtils.getString(taskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), i); + newContext.put(MapValueUtils.getString(taskExecution.getParameters(), ITEM_VAR, ITEM), item); + newContext.put(MapValueUtils.getString(taskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), i); iterateeTaskExecution = taskEvaluator.evaluate(iterateeTaskExecution, newContext); diff --git a/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/ForkJoinTaskDispatcher.java b/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/ForkJoinTaskDispatcher.java index 2976307aea1..e5642389907 100644 --- a/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/ForkJoinTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/ForkJoinTaskDispatcher.java @@ -38,7 +38,7 @@ import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; import com.bytechef.commons.utils.CollectionUtils; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -111,7 +111,7 @@ public ForkJoinTaskDispatcher( @Override @SuppressFBWarnings("NP") public void dispatch(TaskExecution taskExecution) { - List>> branches = MapUtils.getRequiredList( + List>> branches = MapValueUtils.getRequiredList( taskExecution.getParameters(), BRANCHES, new ParameterizedTypeReference<>() {}); List> branchesWorkflowTasks = branches.stream() diff --git a/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/completion/ForkJoinTaskCompletionHandler.java b/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/completion/ForkJoinTaskCompletionHandler.java index 0e046479da8..a7d7ff56b20 100644 --- a/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/completion/ForkJoinTaskCompletionHandler.java +++ b/server/libs/modules/task-dispatchers/forkjoin/src/main/java/com/bytechef/task/dispatcher/forkjoin/completion/ForkJoinTaskCompletionHandler.java @@ -31,7 +31,7 @@ import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; import com.bytechef.commons.utils.CollectionUtils; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.springframework.core.ParameterizedTypeReference; import org.springframework.util.Assert; @@ -79,7 +79,7 @@ public ForkJoinTaskCompletionHandler( @Override public boolean canHandle(TaskExecution taskExecution) { - return taskExecution.getParentId() != null && MapUtils.get(taskExecution.getParameters(), BRANCH) != null; + return taskExecution.getParentId() != null && MapValueUtils.get(taskExecution.getParameters(), BRANCH) != null; } @Override @@ -92,7 +92,7 @@ public void handle(TaskExecution taskExecution) { Assert.notNull(taskExecution.getParentId(), "'taskExecution.parentId' must not be null"); if (taskExecution.getOutput() != null && taskExecution.getName() != null) { - int branch = MapUtils.getInteger(taskExecution.getParameters(), BRANCH); + int branch = MapValueUtils.getInteger(taskExecution.getParameters(), BRANCH); Map newContext = new HashMap<>( contextService.peek(taskExecution.getParentId(), branch, Context.Classname.TASK_EXECUTION)); @@ -104,7 +104,7 @@ public void handle(TaskExecution taskExecution) { TaskExecution forkJoinTaskExecution = taskExecutionService.getTaskExecution(taskExecution.getParentId()); - List>> branches = MapUtils.getRequiredList( + List>> branches = MapValueUtils.getRequiredList( forkJoinTaskExecution.getParameters(), BRANCHES, new ParameterizedTypeReference<>() {}); List> branchesWorkflowTasks = branches.stream() @@ -112,10 +112,10 @@ public void handle(TaskExecution taskExecution) { .toList(); List branchWorkflowTasks = branchesWorkflowTasks.get( - MapUtils.getInteger(taskExecution.getParameters(), BRANCH)); + MapValueUtils.getInteger(taskExecution.getParameters(), BRANCH)); if (taskExecution.getTaskNumber() < branchWorkflowTasks.size()) { - int branch = MapUtils.getInteger(taskExecution.getParameters(), BRANCH); + int branch = MapValueUtils.getInteger(taskExecution.getParameters(), BRANCH); WorkflowTask branchWorkflowTask = branchWorkflowTasks.get(taskExecution.getTaskNumber()); diff --git a/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/IfTaskDispatcher.java b/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/IfTaskDispatcher.java index a986b768bd6..b1883f9a232 100644 --- a/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/IfTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/IfTaskDispatcher.java @@ -34,7 +34,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.task.dispatcher.if_.util.IfTaskUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -80,13 +80,13 @@ public void dispatch(TaskExecution taskExecution) { List subWorkflowTasks; if (IfTaskUtils.resolveCase(taskExecution)) { - subWorkflowTasks = MapUtils + subWorkflowTasks = MapValueUtils .getList(taskExecution.getParameters(), CASE_TRUE, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) .toList(); } else { - subWorkflowTasks = MapUtils + subWorkflowTasks = MapValueUtils .getList(taskExecution.getParameters(), CASE_FALSE, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) diff --git a/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/completion/IfTaskCompletionHandler.java b/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/completion/IfTaskCompletionHandler.java index dbb8a7df778..6c443a299f5 100644 --- a/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/completion/IfTaskCompletionHandler.java +++ b/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/completion/IfTaskCompletionHandler.java @@ -32,7 +32,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcher; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.task.dispatcher.if_.util.IfTaskUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -134,7 +134,7 @@ public void handle(TaskExecution taskExecution) { } private static List getSubWorkflowTasks(TaskExecution ifTaskExecution, String caseTrue) { - return MapUtils.getList(ifTaskExecution.getParameters(), caseTrue, Map.class, Collections.emptyList()) + return MapValueUtils.getList(ifTaskExecution.getParameters(), caseTrue, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) .toList(); diff --git a/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/util/IfTaskUtils.java b/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/util/IfTaskUtils.java index 33e621f09d2..4620248ff2e 100644 --- a/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/util/IfTaskUtils.java +++ b/server/libs/modules/task-dispatchers/if/src/main/java/com/bytechef/task/dispatcher/if_/util/IfTaskUtils.java @@ -22,7 +22,7 @@ import static com.bytechef.task.dispatcher.if_.constants.IfTaskDispatcherConstants.RAW_EXPRESSION; import com.bytechef.atlas.domain.TaskExecution; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import com.bytechef.task.dispatcher.if_.constants.IfTaskDispatcherConstants; import java.util.ArrayList; import java.util.Collections; @@ -42,18 +42,19 @@ public class IfTaskUtils { public static boolean resolveCase(TaskExecution ifTaskExecution) { Boolean result; - if (MapUtils.getBoolean(ifTaskExecution.getParameters(), RAW_EXPRESSION, false)) { + if (MapValueUtils.getBoolean(ifTaskExecution.getParameters(), RAW_EXPRESSION, false)) { result = expressionParser - .parseExpression(MapUtils.getString(ifTaskExecution.getParameters(), EXPRESSION)) + .parseExpression(MapValueUtils.getString(ifTaskExecution.getParameters(), EXPRESSION)) .getValue(Boolean.class); } else { @SuppressWarnings("unchecked") - List> conditions = (List) MapUtils.getList( + List> conditions = (List) MapValueUtils.getList( ifTaskExecution.getParameters(), IfTaskDispatcherConstants.CONDITIONS, Map.class, Collections.emptyList()); - String combineOperation = MapUtils.getRequiredString(ifTaskExecution.getParameters(), COMBINE_OPERATION); + String combineOperation = MapValueUtils.getRequiredString(ifTaskExecution.getParameters(), + COMBINE_OPERATION); result = expressionParser .parseExpression( @@ -69,19 +70,19 @@ private static List getConditionExpressions(List> co for (Map condition : conditions) { for (String operandType : condition.keySet()) { - Map conditionParts = MapUtils.getMap(condition, operandType); + Map conditionParts = MapValueUtils.getMap(condition, operandType); String conditionTemplate = conditionTemplates .get(operandType) - .get(MapUtils.getRequiredString(conditionParts, IfTaskDispatcherConstants.OPERATION)); + .get(MapValueUtils.getRequiredString(conditionParts, IfTaskDispatcherConstants.OPERATION)); conditionExpressions.add(conditionTemplate .replace( "${value1}", - MapUtils.getRequiredString(conditionParts, IfTaskDispatcherConstants.VALUE_1)) + MapValueUtils.getRequiredString(conditionParts, IfTaskDispatcherConstants.VALUE_1)) .replace( "${value2}", - MapUtils.getRequiredString(conditionParts, IfTaskDispatcherConstants.VALUE_2))); + MapValueUtils.getRequiredString(conditionParts, IfTaskDispatcherConstants.VALUE_2))); } } diff --git a/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/LoopTaskDispatcher.java b/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/LoopTaskDispatcher.java index a86240c77b9..45ab53e0fad 100644 --- a/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/LoopTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/LoopTaskDispatcher.java @@ -38,7 +38,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.time.LocalDateTime; @@ -78,9 +78,9 @@ public LoopTaskDispatcher( @Override @SuppressFBWarnings("NP") public void dispatch(TaskExecution taskExecution) { - boolean loopForever = MapUtils.getBoolean(taskExecution.getParameters(), LOOP_FOREVER, false); - Map iteratee = MapUtils.getRequiredMap(taskExecution.getParameters(), ITERATEE); - List list = MapUtils.getList( + boolean loopForever = MapValueUtils.getBoolean(taskExecution.getParameters(), LOOP_FOREVER, false); + Map iteratee = MapValueUtils.getRequiredMap(taskExecution.getParameters(), ITERATEE); + List list = MapValueUtils.getList( taskExecution.getParameters(), LIST, Object.class, Collections.emptyList()); taskExecution.setStartTime(LocalDateTime.now()); @@ -97,10 +97,10 @@ public void dispatch(TaskExecution taskExecution) { contextService.peek(taskExecution.getId(), Context.Classname.TASK_EXECUTION)); if (!list.isEmpty()) { - newContext.put(MapUtils.getString(taskExecution.getParameters(), ITEM_VAR, ITEM), list.get(0)); + newContext.put(MapValueUtils.getString(taskExecution.getParameters(), ITEM_VAR, ITEM), list.get(0)); } - newContext.put(MapUtils.getString(taskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), 0); + newContext.put(MapValueUtils.getString(taskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), 0); subTaskExecution = taskEvaluator.evaluate(subTaskExecution, newContext); diff --git a/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/completion/LoopTaskCompletionHandler.java b/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/completion/LoopTaskCompletionHandler.java index 00ac19fb3d7..b1f6d055236 100644 --- a/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/completion/LoopTaskCompletionHandler.java +++ b/server/libs/modules/task-dispatchers/loop/src/main/java/com/bytechef/task/dispatcher/loop/completion/LoopTaskCompletionHandler.java @@ -36,7 +36,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcher; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.time.LocalDateTime; @@ -93,9 +93,9 @@ public void handle(TaskExecution taskExecution) { TaskExecution loopTaskExecution = taskExecutionService.getTaskExecution(taskExecution.getParentId()); - boolean loopForever = MapUtils.getBoolean(loopTaskExecution.getParameters(), LOOP_FOREVER, false); - Map iteratee = MapUtils.getRequiredMap(loopTaskExecution.getParameters(), ITERATEE); - List list = MapUtils.getList( + boolean loopForever = MapValueUtils.getBoolean(loopTaskExecution.getParameters(), LOOP_FOREVER, false); + Map iteratee = MapValueUtils.getRequiredMap(loopTaskExecution.getParameters(), ITERATEE); + List list = MapValueUtils.getList( loopTaskExecution.getParameters(), LIST, Object.class, Collections.emptyList()); if (loopForever || taskExecution.getTaskNumber() < list.size()) { @@ -108,12 +108,12 @@ public void handle(TaskExecution taskExecution) { if (!list.isEmpty()) { newContext.put( - MapUtils.getString(loopTaskExecution.getParameters(), ITEM_VAR, ITEM), + MapValueUtils.getString(loopTaskExecution.getParameters(), ITEM_VAR, ITEM), list.get(taskExecution.getTaskNumber())); } newContext.put( - MapUtils.getString(loopTaskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), + MapValueUtils.getString(loopTaskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), taskExecution.getTaskNumber()); subTaskExecution = taskEvaluator.evaluate(subTaskExecution, newContext); diff --git a/server/libs/modules/task-dispatchers/map/src/main/java/com/bytechef/task/dispatcher/map/MapTaskDispatcher.java b/server/libs/modules/task-dispatchers/map/src/main/java/com/bytechef/task/dispatcher/map/MapTaskDispatcher.java index 5005ad40927..0fe6d225348 100644 --- a/server/libs/modules/task-dispatchers/map/src/main/java/com/bytechef/task/dispatcher/map/MapTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/map/src/main/java/com/bytechef/task/dispatcher/map/MapTaskDispatcher.java @@ -40,7 +40,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.time.LocalDateTime; @@ -74,8 +74,8 @@ private MapTaskDispatcher(Builder builder) { @Override @SuppressFBWarnings("NP") public void dispatch(TaskExecution taskExecution) { - List list = MapUtils.getRequiredList(taskExecution.getParameters(), LIST, Object.class); - Map iteratee = MapUtils.getRequiredMap(taskExecution.getParameters(), ITERATEE); + List list = MapValueUtils.getRequiredList(taskExecution.getParameters(), LIST, Object.class); + Map iteratee = MapValueUtils.getRequiredMap(taskExecution.getParameters(), ITERATEE); taskExecution.setStartTime(LocalDateTime.now()); taskExecution.setStatus(TaskStatus.STARTED); @@ -100,8 +100,8 @@ public void dispatch(TaskExecution taskExecution) { Map newContext = new HashMap<>( contextService.peek(taskExecution.getId(), Context.Classname.TASK_EXECUTION)); - newContext.put(MapUtils.getString(taskExecution.getParameters(), ITEM_VAR, ITEM), item); - newContext.put(MapUtils.getString(taskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), i); + newContext.put(MapValueUtils.getString(taskExecution.getParameters(), ITEM_VAR, ITEM), item); + newContext.put(MapValueUtils.getString(taskExecution.getParameters(), ITEM_INDEX, ITEM_INDEX), i); iterateeTaskExecution = taskEvaluator.evaluate(iterateeTaskExecution, newContext); diff --git a/server/libs/modules/task-dispatchers/parallel/src/main/java/com/bytechef/task/dispatcher/parallel/ParallelTaskDispatcher.java b/server/libs/modules/task-dispatchers/parallel/src/main/java/com/bytechef/task/dispatcher/parallel/ParallelTaskDispatcher.java index db2643d6be3..3e3938b0b05 100644 --- a/server/libs/modules/task-dispatchers/parallel/src/main/java/com/bytechef/task/dispatcher/parallel/ParallelTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/parallel/src/main/java/com/bytechef/task/dispatcher/parallel/ParallelTaskDispatcher.java @@ -34,7 +34,7 @@ import com.bytechef.atlas.task.WorkflowTask; import com.bytechef.atlas.task.dispatcher.TaskDispatcher; import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.time.LocalDateTime; import java.util.Collections; import java.util.List; @@ -76,7 +76,7 @@ public ParallelTaskDispatcher( @Override @SuppressFBWarnings("NP") public void dispatch(TaskExecution taskExecution) { - List workflowTasks = MapUtils + List workflowTasks = MapValueUtils .getList(taskExecution.getParameters(), TASKS, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) diff --git a/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/SequenceTaskDispatcher.java b/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/SequenceTaskDispatcher.java index 5eb499469e0..117c6a4c4ae 100644 --- a/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/SequenceTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/SequenceTaskDispatcher.java @@ -32,7 +32,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.time.LocalDateTime; @@ -75,7 +75,7 @@ public void dispatch(TaskExecution taskExecution) { taskExecution = taskExecutionService.update(taskExecution); - List subWorkflowTasks = MapUtils.getList( + List subWorkflowTasks = MapValueUtils.getList( taskExecution.getParameters(), TASKS, WorkflowTask.class, Collections.emptyList()); if (subWorkflowTasks.isEmpty()) { diff --git a/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/completion/SequenceTaskCompletionHandler.java b/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/completion/SequenceTaskCompletionHandler.java index fc430a99ec2..10379ac3154 100644 --- a/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/completion/SequenceTaskCompletionHandler.java +++ b/server/libs/modules/task-dispatchers/sequence/src/main/java/com/bytechef/task/dispatcher/sequence/completion/SequenceTaskCompletionHandler.java @@ -31,7 +31,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcher; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.springframework.context.annotation.Configuration; @@ -99,7 +99,7 @@ public void handle(TaskExecution taskExecution) { contextService.push(sequenceTaskExecution.getId(), Context.Classname.TASK_EXECUTION, newContext); } - List subWorkflowTasks = MapUtils + List subWorkflowTasks = MapValueUtils .getList(sequenceTaskExecution.getParameters(), TASKS, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) diff --git a/server/libs/modules/task-dispatchers/subflow/src/main/java/com/bytechef/task/dispatcher/subflow/SubflowTaskDispatcher.java b/server/libs/modules/task-dispatchers/subflow/src/main/java/com/bytechef/task/dispatcher/subflow/SubflowTaskDispatcher.java index a330c819f6e..595997bb0e1 100644 --- a/server/libs/modules/task-dispatchers/subflow/src/main/java/com/bytechef/task/dispatcher/subflow/SubflowTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/subflow/src/main/java/com/bytechef/task/dispatcher/subflow/SubflowTaskDispatcher.java @@ -29,7 +29,7 @@ import com.bytechef.atlas.task.Task; import com.bytechef.atlas.task.dispatcher.TaskDispatcher; import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.util.Collections; import java.util.Objects; @@ -51,9 +51,9 @@ public SubflowTaskDispatcher(JobFacade jobFacade) { @Override public void dispatch(TaskExecution taskExecution) { JobParameters jobParameters = new JobParameters( - MapUtils.getMap(taskExecution.getParameters(), WorkflowConstants.INPUTS, Collections.emptyMap()), + MapValueUtils.getMap(taskExecution.getParameters(), WorkflowConstants.INPUTS, Collections.emptyMap()), taskExecution.getId(), - MapUtils.getRequiredString(taskExecution.getParameters(), WorkflowConstants.WORKFLOW_ID)); + MapValueUtils.getRequiredString(taskExecution.getParameters(), WorkflowConstants.WORKFLOW_ID)); jobFacade.create(jobParameters); } diff --git a/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/SwitchTaskDispatcher.java b/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/SwitchTaskDispatcher.java index ba3fc54bf48..39ca6c87a3b 100644 --- a/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/SwitchTaskDispatcher.java +++ b/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/SwitchTaskDispatcher.java @@ -39,7 +39,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcherResolver; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.time.LocalDateTime; import java.util.Collections; import java.util.List; @@ -88,7 +88,7 @@ public void dispatch(TaskExecution taskExecution) { Map selectedCase = resolveCase(taskExecution); if (selectedCase.containsKey(TASKS)) { - List subWorkflowTasks = MapUtils.getList(selectedCase, TASKS, WorkflowTask.class, + List subWorkflowTasks = MapValueUtils.getList(selectedCase, TASKS, WorkflowTask.class, Collections.emptyList()); if (subWorkflowTasks.isEmpty()) { @@ -135,20 +135,20 @@ public TaskDispatcher resolve(Task task) { } private Map resolveCase(TaskExecution taskExecution) { - Object expression = MapUtils.getRequired(taskExecution.getParameters(), EXPRESSION); - List> cases = MapUtils.getList( + Object expression = MapValueUtils.getRequired(taskExecution.getParameters(), EXPRESSION); + List> cases = MapValueUtils.getList( taskExecution.getParameters(), CASES, new ParameterizedTypeReference<>() {}); Assert.notNull(cases, "you must specify 'cases' in a switch statement"); for (Map oneCase : cases) { - Object key = MapUtils.getRequired(oneCase, KEY); + Object key = MapValueUtils.getRequired(oneCase, KEY); if (key.equals(expression)) { return oneCase; } } - return MapUtils.getMap(taskExecution.getParameters(), DEFAULT, Collections.emptyMap()); + return MapValueUtils.getMap(taskExecution.getParameters(), DEFAULT, Collections.emptyMap()); } } diff --git a/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/completion/SwitchTaskCompletionHandler.java b/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/completion/SwitchTaskCompletionHandler.java index 35e31ddb6cb..67186780a16 100644 --- a/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/completion/SwitchTaskCompletionHandler.java +++ b/server/libs/modules/task-dispatchers/switch/src/main/java/com/bytechef/task/dispatcher/switch_/completion/SwitchTaskCompletionHandler.java @@ -37,7 +37,7 @@ import com.bytechef.atlas.task.dispatcher.TaskDispatcher; import com.bytechef.atlas.task.evaluator.TaskEvaluator; import com.bytechef.atlas.task.execution.TaskStatus; -import com.bytechef.commons.utils.MapUtils; +import com.bytechef.commons.utils.MapValueUtils; import java.time.LocalDateTime; import java.util.Collections; import java.util.HashMap; @@ -135,8 +135,8 @@ public void handle(TaskExecution taskExecution) { } private List resolveCase(TaskExecution taskExecution) { - Object expression = MapUtils.getRequired(taskExecution.getParameters(), EXPRESSION); - List caseWorkflowTasks = MapUtils + Object expression = MapValueUtils.getRequired(taskExecution.getParameters(), EXPRESSION); + List caseWorkflowTasks = MapValueUtils .getList(taskExecution.getParameters(), CASES, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) @@ -145,8 +145,8 @@ private List resolveCase(TaskExecution taskExecution) { Assert.notNull(caseWorkflowTasks, "you must specify 'cases' in a switch statement"); for (WorkflowTask caseWorkflowTask : caseWorkflowTasks) { - Object key = MapUtils.getRequired(caseWorkflowTask.getParameters(), KEY); - List subWorkflowTasks = MapUtils + Object key = MapValueUtils.getRequired(caseWorkflowTask.getParameters(), KEY); + List subWorkflowTasks = MapValueUtils .getList(caseWorkflowTask.getParameters(), TASKS, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) @@ -157,7 +157,7 @@ private List resolveCase(TaskExecution taskExecution) { } } - return MapUtils.getList(taskExecution.getParameters(), DEFAULT, Map.class, Collections.emptyList()) + return MapValueUtils.getList(taskExecution.getParameters(), DEFAULT, Map.class, Collections.emptyList()) .stream() .map(WorkflowTask::new) .toList();