From c44a742286026f9a117fb27d4d383d2e3eb515ed Mon Sep 17 00:00:00 2001 From: nipunayf Date: Sun, 26 Oct 2025 12:34:21 +0530 Subject: [PATCH 1/3] Add the project in the call builder --- .../flowmodelgenerator/core/model/node/CallBuilder.java | 1 + 1 file changed, 1 insertion(+) diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java index 44cbbf5996..dfb3dd243c 100644 --- a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java +++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java @@ -67,6 +67,7 @@ public void setConcreteTemplateData(TemplateContext context) { codedata.version())) .lsClientLogger(context.lsClientLogger()) .functionResultKind(getFunctionResultKind()) + .project(PackageUtil.loadProject(context.workspaceManager(), context.filePath())) .userModuleInfo(moduleInfo); NodeKind functionNodeKind = getFunctionNodeKind(); From 59e3483ddf285274ec8be81fc7e395990a55461a Mon Sep 17 00:00:00 2001 From: nipunayf Date: Sun, 26 Oct 2025 13:13:35 +0530 Subject: [PATCH 2/3] Add test cases for submodule connectors --- ...mote_action_call-customclient-getData.json | 116 +++++++++++++++++ ...resource_action_call-customclient-get.json | 123 ++++++++++++++++++ .../source/sub_module/Ballerina.toml | 5 + .../source/sub_module/connections.bal | 3 + .../node_template/source/sub_module/main.bal | 5 + .../modules/client_module/client.bal | 18 +++ 6 files changed, 270 insertions(+) create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/remote_action_call-customclient-getData.json create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-customclient-get.json create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/Ballerina.toml create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/connections.bal create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/main.bal create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/modules/client_module/client.bal diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/remote_action_call-customclient-getData.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/remote_action_call-customclient-getData.json new file mode 100644 index 0000000000..dc1d3a2ba8 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/remote_action_call-customclient-getData.json @@ -0,0 +1,116 @@ +{ + "source": "sub_module/main.bal", + "position": { + "line": 3, + "offset": 0 + }, + "description": "Sample diagram node", + "codedata": { + "node": "REMOTE_ACTION_CALL", + "org": "wso2", + "module": "sub_module.client_module", + "packageName": "sub_module", + "object": "CustomClient", + "symbol": "getData", + "version": "0.1.0", + "parentSymbol": "customClient" + }, + "output": { + "id": "31", + "metadata": { + "label": "getData", + "description": "", + "icon": "https://bcentral-packageicons.azureedge.net/images/wso2_sub_module_0.1.0.png" + }, + "codedata": { + "node": "REMOTE_ACTION_CALL", + "org": "wso2", + "module": "sub_module.client_module", + "packageName": "sub_module", + "object": "CustomClient", + "symbol": "getData", + "version": "0.1.0", + "isNew": true + }, + "returning": false, + "properties": { + "connection": { + "metadata": { + "label": "Connection", + "description": "Connection to use" + }, + "valueType": "EXPRESSION", + "valueTypeConstraint": "client_module:CustomClient", + "value": "customClient", + "optional": false, + "editable": false, + "advanced": false, + "hidden": true + }, + "path": { + "metadata": { + "label": "Path" + }, + "valueType": "EXPRESSION", + "valueTypeConstraint": "string", + "placeholder": "\"\"", + "optional": false, + "editable": true, + "advanced": false, + "hidden": false, + "codedata": { + "kind": "REQUIRED", + "originalName": "path" + }, + "typeMembers": [ + { + "type": "string", + "packageInfo": "", + "packageName": "", + "kind": "BASIC_TYPE", + "selected": false + } + ] + }, + "type": { + "metadata": { + "label": "Result Type", + "description": "Type of the variable" + }, + "valueType": "TYPE", + "value": "string", + "placeholder": "var", + "optional": false, + "editable": false, + "advanced": false, + "hidden": false, + "codedata": {} + }, + "variable": { + "metadata": { + "label": "Result", + "description": "Name of the result variable" + }, + "valueType": "IDENTIFIER", + "value": "stringResult", + "optional": false, + "editable": true, + "advanced": false, + "hidden": false + }, + "checkError": { + "metadata": { + "label": "Check Error", + "description": "Trigger error flow" + }, + "valueType": "FLAG", + "value": true, + "optional": false, + "editable": true, + "advanced": true, + "hidden": true + } + }, + "flags": 0 + } +} diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-customclient-get.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-customclient-get.json new file mode 100644 index 0000000000..1052c3789d --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-customclient-get.json @@ -0,0 +1,123 @@ +{ + "source": "sub_module/main.bal", + "position": { + "line": 3, + "offset": 0 + }, + "description": "Sample diagram node", + "codedata": { + "node": "RESOURCE_ACTION_CALL", + "org": "wso2", + "module": "sub_module.client_module", + "packageName": "sub_module", + "object": "CustomClient", + "symbol": "get", + "version": "0.1.0", + "parentSymbol": "customClient", + "resourcePath": "/users/[userId]" + }, + "output": { + "id": "31", + "metadata": { + "label": "get", + "description": "", + "icon": "https://bcentral-packageicons.azureedge.net/images/wso2_sub_module_0.1.0.png" + }, + "codedata": { + "node": "RESOURCE_ACTION_CALL", + "org": "wso2", + "module": "sub_module.client_module", + "packageName": "sub_module", + "object": "CustomClient", + "symbol": "get", + "isNew": true + }, + "returning": false, + "properties": { + "connection": { + "metadata": { + "label": "Connection", + "description": "Connection to use" + }, + "valueType": "EXPRESSION", + "valueTypeConstraint": "client_module:CustomClient", + "value": "customClient", + "optional": false, + "editable": false, + "advanced": false, + "hidden": true + }, + "resourcePath": { + "metadata": { + "label": "Resource Path", + "description": "Resource Path" + }, + "valueType": "ACTION_PATH", + "value": "/users/[userId]", + "optional": false, + "editable": false, + "advanced": false, + "hidden": true, + "codedata": { + "originalName": "/users/[userId]" + } + }, + "userId": { + "metadata": { + "label": "userId" + }, + "valueType": "EXPRESSION", + "valueTypeConstraint": "string", + "placeholder": "\"\"", + "optional": false, + "editable": true, + "advanced": false, + "hidden": false, + "codedata": { + "kind": "PATH_PARAM", + "originalName": "userId" + }, + "typeMembers": [] + }, + "type": { + "metadata": { + "label": "Result Type", + "description": "Type of the variable" + }, + "valueType": "TYPE", + "value": "json", + "placeholder": "var", + "optional": false, + "editable": false, + "advanced": false, + "hidden": true, + "codedata": {} + }, + "variable": { + "metadata": { + "label": "Result", + "description": "Name of the result variable" + }, + "valueType": "IDENTIFIER", + "value": "jsonResult", + "optional": false, + "editable": true, + "advanced": false, + "hidden": false + }, + "checkError": { + "metadata": { + "label": "Check Error", + "description": "Trigger error flow" + }, + "valueType": "FLAG", + "value": true, + "optional": false, + "editable": true, + "advanced": true, + "hidden": true + } + }, + "flags": 0 + } +} diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/Ballerina.toml b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/Ballerina.toml new file mode 100644 index 0000000000..3d8923d5d4 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/Ballerina.toml @@ -0,0 +1,5 @@ +[package] +org = "wso2" +name = "sub_module" +version = "0.1.0" +distribution = "2201.12.9" diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/connections.bal b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/connections.bal new file mode 100644 index 0000000000..e2e1be967b --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/connections.bal @@ -0,0 +1,3 @@ +import sub_module.client_module; + +client_module:CustomClient customClient = check new ("http://localhost:8080"); diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/main.bal b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/main.bal new file mode 100644 index 0000000000..e3db697bb3 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/main.bal @@ -0,0 +1,5 @@ +import ballerina/http; + +public function main() { + +} diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/modules/client_module/client.bal b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/modules/client_module/client.bal new file mode 100644 index 0000000000..505a619536 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/source/sub_module/modules/client_module/client.bal @@ -0,0 +1,18 @@ +import ballerina/http; + +public isolated client class CustomClient { + private final http:Client httpClient; + + public isolated function init(string url) returns error? { + self.httpClient = check new (url); + } + + remote function getData(string path) returns string|error { + json response = check self.httpClient->get(path); + return response.toString(); + } + + resource function get users/[string userId]() returns json|error { + return self.httpClient->/users/[userId].get(); + } +} From 5cfdb2fff8f127f563bb74f70c093c82020c8bb4 Mon Sep 17 00:00:00 2001 From: nipunayf Date: Sun, 26 Oct 2025 14:00:28 +0530 Subject: [PATCH 3/3] Update the failing test case --- .../test/resources/node_template/config/method_call_user.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/method_call_user.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/method_call_user.json index 2c5c004ffa..1a9bb7fc89 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/method_call_user.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/method_call_user.json @@ -11,6 +11,7 @@ "symbol": "addItem", "parentSymbol": "cart", "org": "nipunaf", + "packageName": "new_connection1", "module": "new_connection1" }, "output": { @@ -18,12 +19,13 @@ "metadata": { "label": "addItem", "description": "", - "icon": "https://bcentral-packageicons.azureedge.net/images/nipunaf_null_null.png" + "icon": "https://bcentral-packageicons.azureedge.net/images/nipunaf_new_connection1_null.png" }, "codedata": { "node": "METHOD_CALL", "org": "nipunaf", "module": "new_connection1", + "packageName": "new_connection1", "object": "Cart", "symbol": "addItem", "isNew": true