From 1228a60085c7a4d8c841b7599a239f0251c5d5ed Mon Sep 17 00:00:00 2001 From: Nipuna Fernando Date: Mon, 11 Dec 2023 14:28:06 +0530 Subject: [PATCH] Capture the variable name of an output port --- .../NodeBuilder.java | 11 ++++++++--- .../model/InputPort.java | 2 +- .../model/OutputPort.java | 3 ++- .../model/WorkerNodeJsonBuilder.java | 5 +++-- .../extension/ModelGeneratorTest.java | 10 +++++++--- .../src/test/resources/config/code_block.json | 1 + .../src/test/resources/config/simple_flow.json | 2 ++ 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/NodeBuilder.java b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/NodeBuilder.java index 1c4691801..6cfbee2dd 100644 --- a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/NodeBuilder.java +++ b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/NodeBuilder.java @@ -97,7 +97,12 @@ private void analyzeSendAction(SimpleNameReferenceNode receiverNode, ExpressionN this.toWorker = receiverNode.name().text(); Optional typeSymbol = this.semanticModel.typeOf(expressionNode); this.type = typeSymbol.isPresent() ? typeSymbol.get().typeKind() : TypeDescKind.NONE; - this.addOutputPort(String.valueOf(++this.portId), this.type, this.toWorker); + + // Capture the name if the expression is a variable + String name = expressionNode.kind() == SyntaxKind.SIMPLE_NAME_REFERENCE ? + ((SimpleNameReferenceNode) expressionNode).name().text() : null; + + this.addOutputPort(String.valueOf(++this.portId), this.type, name, this.toWorker); this.hasProcessed = true; } @@ -157,8 +162,8 @@ public void addInputPort(String id, TypeDescKind type, String name, String sende } @Override - public void addOutputPort(String id, TypeDescKind type, String receiver) { - this.outputPorts.add(new OutputPort(id, type, receiver)); + public void addOutputPort(String id, TypeDescKind type, String name, String receiver) { + this.outputPorts.add(new OutputPort(id, type, name, receiver)); } @Override diff --git a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/InputPort.java b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/InputPort.java index 2957dda88..917a0f76a 100644 --- a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/InputPort.java +++ b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/InputPort.java @@ -25,7 +25,7 @@ * * @param id id of the port * @param type type of the port - * @param name name of the port + * @param name variable assigned to the port * @param sender id of the sender node * @since 2201.9.0 */ diff --git a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/OutputPort.java b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/OutputPort.java index 7945a67a5..c7a6509db 100644 --- a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/OutputPort.java +++ b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/OutputPort.java @@ -25,9 +25,10 @@ * * @param id id of the port * @param type type of the port + * @param name variable assigned to the port * @param receiver id of the receiver node * @since 2201.9.0 */ -public record OutputPort(String id, TypeDescKind type, String receiver) { +public record OutputPort(String id, TypeDescKind type, String name, String receiver) { } diff --git a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/WorkerNodeJsonBuilder.java b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/WorkerNodeJsonBuilder.java index f1b2b5ef1..f8b0831d8 100644 --- a/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/WorkerNodeJsonBuilder.java +++ b/worker-model-generator/modules/model-generator-core/src/main/java/io.ballerina.workermodelgenerator.core/model/WorkerNodeJsonBuilder.java @@ -63,7 +63,7 @@ public interface WorkerNodeJsonBuilder { * * @param id id of the port * @param type type of the port - * @param name name of the port + * @param name variable assigned to the port * @param sender id of the sender node */ void addInputPort(String id, TypeDescKind type, String name, String sender); @@ -73,9 +73,10 @@ public interface WorkerNodeJsonBuilder { * * @param id id of the port * @param type type of the port + * @param name variable assigned to the port * @param receiver id of the receiver node */ - void addOutputPort(String id, TypeDescKind type, String receiver); + void addOutputPort(String id, TypeDescKind type, String name, String receiver); /** * Sets the code block of the node. diff --git a/worker-model-generator/modules/model-generator-ls-extension/src/test/java/io/ballerina/workermodelgenerator/extension/ModelGeneratorTest.java b/worker-model-generator/modules/model-generator-ls-extension/src/test/java/io/ballerina/workermodelgenerator/extension/ModelGeneratorTest.java index 3888f4686..6d8b576e4 100644 --- a/worker-model-generator/modules/model-generator-ls-extension/src/test/java/io/ballerina/workermodelgenerator/extension/ModelGeneratorTest.java +++ b/worker-model-generator/modules/model-generator-ls-extension/src/test/java/io/ballerina/workermodelgenerator/extension/ModelGeneratorTest.java @@ -86,7 +86,7 @@ public void testGeneratedModel(Path config) throws IOException { boolean flowEquality = modifiedFlow.equals(testConfig.getFlow()); if (!fileNameEquality || !flowEquality) { - updateConfig(configJsonPath, testConfig, modifiedFlow); +// updateConfig(configJsonPath, testConfig, modifiedFlow); logModelDifference(testConfig.getFlow(), modifiedFlow); Assert.fail(String.format("Failed test: '%s' (%s)", testConfig.getDescription(), configJsonPath)); } @@ -140,6 +140,10 @@ private void logModelDifference(Flow expectedFlow, Flow actualFlow) { List missingNodes = new ArrayList<>(); List irrelevantNodes = new ArrayList<>(actualFlow.nodes()); + if (expectedFlow.nodes() == null) { + LOG.info("No worker nodes found in the response"); + return; + } for (WorkerNode expectedNode : expectedFlow.nodes()) { boolean removed = irrelevantNodes.remove(expectedNode); if (!removed) { @@ -147,8 +151,8 @@ private void logModelDifference(Flow expectedFlow, Flow actualFlow) { } } if (!missingNodes.isEmpty() || !irrelevantNodes.isEmpty()) { - LOG.info("Completion items which are in response but not in test config : " + irrelevantNodes); - LOG.info("Completion items which are in test config but not in response : " + missingNodes); + LOG.info("Worker nodes which are in response but not in test config : " + irrelevantNodes); + LOG.info("Worker nodes which are in test config but not in response : " + missingNodes); } } diff --git a/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/code_block.json b/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/code_block.json index 0f8e9977a..845717042 100644 --- a/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/code_block.json +++ b/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/code_block.json @@ -70,6 +70,7 @@ { "id": "2", "type": "INT", + "name": "b", "receiver": "function" } ], diff --git a/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/simple_flow.json b/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/simple_flow.json index 3f1eaf34f..34694972a 100644 --- a/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/simple_flow.json +++ b/worker-model-generator/modules/model-generator-ls-extension/src/test/resources/config/simple_flow.json @@ -75,6 +75,7 @@ { "id": "2", "type": "INT", + "name": "x1", "receiver": "function" } ], @@ -109,6 +110,7 @@ { "id": "2", "type": "INT", + "name": "x2", "receiver": "function" } ],