diff --git a/misc/docerina/src/main/java/org/ballerinalang/docgen/Generator.java b/misc/docerina/src/main/java/org/ballerinalang/docgen/Generator.java index 6ebaa7c740fb..f8fcb42e3b07 100644 --- a/misc/docerina/src/main/java/org/ballerinalang/docgen/Generator.java +++ b/misc/docerina/src/main/java/org/ballerinalang/docgen/Generator.java @@ -164,16 +164,16 @@ public static boolean setModuleFromSyntaxTree(Module module, SyntaxTree syntaxTr ((EnumDeclarationNode) node).qualifier().isPresent() && ((EnumDeclarationNode) node).qualifier().get().kind().equals(SyntaxKind.PUBLIC_KEYWORD)) { module.enums.add(getEnumModel((EnumDeclarationNode) node)); - } else if (node.kind() == SyntaxKind.MODULE_VAR_DECL && - ((ModuleVariableDeclarationNode) node).visibilityQualifier().isPresent() && - ((ModuleVariableDeclarationNode) node).visibilityQualifier().get().kind() - .equals(SyntaxKind.PUBLIC_KEYWORD)) { - DefaultableVariable defaultableVariable = getModuleVariable((ModuleVariableDeclarationNode) node, + } else if (node.kind() == SyntaxKind.MODULE_VAR_DECL) { + ModuleVariableDeclarationNode variableDeclarationNode = (ModuleVariableDeclarationNode) node; + DefaultableVariable defaultableVariable = getModuleVariable(variableDeclarationNode, semanticModel, module); - if (containsToken(((ModuleVariableDeclarationNode) node).qualifiers(), + if (containsToken(variableDeclarationNode.qualifiers(), SyntaxKind.CONFIGURABLE_KEYWORD)) { module.configurables.add(defaultableVariable); - } else { + } else if (variableDeclarationNode.visibilityQualifier().isPresent() && + variableDeclarationNode.visibilityQualifier().get().kind() + .equals(SyntaxKind.PUBLIC_KEYWORD)) { module.variables.add(defaultableVariable); } } diff --git a/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/documentation/DocModelTest.java b/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/documentation/DocModelTest.java index 0cc80329947b..e45625443d04 100644 --- a/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/documentation/DocModelTest.java +++ b/tests/jballerina-unit-test/src/test/java/org/ballerinalang/test/documentation/DocModelTest.java @@ -634,6 +634,29 @@ public void testModuleVariables() { Assert.assertEquals(tuple.get().type.memberTypes.get(1).category, "builtin"); } + @Test(description = "Test module configurable variables") + public void testModuleConfigurableVariables() { + Optional confString = testModule.configurables.stream() + .filter(client -> client.name.equals("confString")).findAny(); + Assert.assertTrue(confString.isPresent()); + + Assert.assertEquals(confString.get().description, "A configurable variable of string type without " + + "default value" + System.lineSeparator()); + Assert.assertEquals(confString.get().defaultValue, "?"); + Assert.assertEquals(confString.get().type.category, "builtin"); + Assert.assertEquals(confString.get().type.name, "string"); + + Optional defaultConfString = testModule.configurables.stream() + .filter(client -> client.name.equals("defaultConfString")).findAny(); + Assert.assertTrue(defaultConfString.isPresent()); + + Assert.assertEquals(defaultConfString.get().description, "A configurable variable of string type with " + + "default value" + System.lineSeparator()); + Assert.assertEquals(defaultConfString.get().defaultValue, "\"confidential\""); + Assert.assertEquals(defaultConfString.get().type.category, "builtin"); + Assert.assertEquals(defaultConfString.get().type.name, "string"); + } + @Test(description = "Test record rest field") public void testRecordRestField() { Optional keyValRec = testModule.records.stream() diff --git a/tests/jballerina-unit-test/src/test/resources/test-src/documentation/docerina_project/main.bal b/tests/jballerina-unit-test/src/test/resources/test-src/documentation/docerina_project/main.bal index b86a3836dfd2..761e292029e9 100644 --- a/tests/jballerina-unit-test/src/test/resources/test-src/documentation/docerina_project/main.bal +++ b/tests/jballerina-unit-test/src/test/resources/test-src/documentation/docerina_project/main.bal @@ -47,6 +47,12 @@ public [int, float] [a, b] = [1, 1.5]; # A public variable of string type public string pubString = "123"; +# A configurable variable of string type without default value +configurable string confString = ?; + +# A configurable variable of string type with default value +configurable string defaultConfString = "confidential"; + public type Coordinates record {| decimal latitude; decimal longitude;