From cd428feaf426c11f55ef660e8cc0d9f1ed5c5615 Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Sun, 7 Apr 2024 20:34:00 +0530 Subject: [PATCH 01/10] Update APIs with remote methods --- ballerina/Dependencies.toml | 2 +- ballerina/client.bal | 8 +++--- ballerina/tests/test.bal | 41 ++++++++++++++++------------- examples/user-registration/main.bal | 22 +++++++++++++--- 4 files changed, 46 insertions(+), 27 deletions(-) diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index 2ba61da..68fc194 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -5,7 +5,7 @@ [ballerina] dependencies-toml-version = "2" -distribution-version = "2201.8.2" +distribution-version = "2201.8.6" [[package]] org = "ballerina" diff --git a/ballerina/client.bal b/ballerina/client.bal index df6aca4..384c37e 100644 --- a/ballerina/client.bal +++ b/ballerina/client.bal @@ -17,7 +17,7 @@ import ballerina/jballerina.java; # Consists of APIs to integrate with Avro Schema Registry. -public isolated class Client { +public isolated client class Client { # Gets invoked to initialize the `connector`. # @@ -36,7 +36,7 @@ public isolated class Client { # + subject - The subject under which the schema should be registered # + schema - The Avro schema to be registered # + return - The ID of the registered schema, or an `cregistry:Error` if registration fails - public isolated function register(string subject, string schema) returns int|Error = @java:Method { + remote isolated function register(string subject, string schema) returns int|Error = @java:Method { 'class: "io.ballerina.lib.confluent.registry.CustomSchemaRegistryClient" } external; @@ -44,7 +44,7 @@ public isolated class Client { # # + id - The ID of the schema to retrieve # + return - The retrieved schema or an `cregistry:Error` if the schema does not exist - public isolated function getSchemaById(int id) returns string|Error = @java:Method { + remote isolated function getSchemaById(int id) returns string|Error = @java:Method { 'class: "io.ballerina.lib.confluent.registry.CustomSchemaRegistryClient" } external; @@ -53,7 +53,7 @@ public isolated class Client { # + subject - The subject of the schema # + schema - The Avro schema # + return - Returns the ID of the schema if found, or an `cregistry:Error` if an error occurs - public isolated function getId(string subject, string schema) returns int|Error = @java:Method { + remote isolated function getId(string subject, string schema) returns int|Error = @java:Method { 'class: "io.ballerina.lib.confluent.registry.CustomSchemaRegistryClient" } external; } diff --git a/ballerina/tests/test.bal b/ballerina/tests/test.bal index e9c9372..985a013 100644 --- a/ballerina/tests/test.bal +++ b/ballerina/tests/test.bal @@ -22,16 +22,15 @@ configurable int identityMapCapacity = ?; configurable map originals = ?; configurable map headers = ?; -@test:Config {} -public isolated function testRegister() returns error? { - ConnectionConfig ConnectionConfig = { - baseUrl, - identityMapCapacity, - originals, - headers - }; - Client schemaRegistryClient = check new (ConnectionConfig); +Client schemaRegistryClient = check new ({ + baseUrl, + identityMapCapacity, + originals, + headers +}); +@test:Config {} +public function testRegister() returns error? { string schema = string ` { "namespace": "example.avro", @@ -43,7 +42,7 @@ public isolated function testRegister() returns error? { ] }`; - _ = check schemaRegistryClient.register(subject, schema); + _ = check schemaRegistryClient->register(subject, schema); } @test:Config {} @@ -62,7 +61,7 @@ public isolated function testInvalidSchemaRegister() returns error? { "namespace": "data" }`; - int|Error register = schemaRegistryClient.register(subject, schema); + int|Error register = schemaRegistryClient->register(subject, schema); test:assertTrue(register is error); if register !is int { test:assertEquals(register.detail().status, ()); @@ -82,12 +81,14 @@ public isolated function testGetSchemaById() returns error? { string schema = string `{"type":"record","name":"Student","namespace":"example.avro","fields":[{"name":"name","type":"string"},{"name":"favorite_color","type":["string","null"]}]}`; - int registerResult = check schemaRegistryClient.register(subject, schema); - string getSchema = check schemaRegistryClient.getSchemaById(registerResult); + int registerResult = check schemaRegistryClient->register(subject, schema); + string getSchema = check schemaRegistryClient->getSchemaById(registerResult); test:assertEquals(getSchema.toJson(), schema.toJson()); } -@test:Config {} +@test:Config { + enable: false +} public isolated function testGetInvalidSchemaById() returns error? { ConnectionConfig ConnectionConfig = { baseUrl, @@ -99,8 +100,8 @@ public isolated function testGetInvalidSchemaById() returns error? { string schema = string `{"type":"record","name":"Student","namespace":"example.avro","fields":[{"name":"name","type":"string"},{"name":"favorite_color","type":["string","null"]}]}`; - int registerResult = check schemaRegistryClient.register(subject, schema); - string|error getSchema = schemaRegistryClient.getSchemaById(registerResult * registerResult); + int registerResult = check schemaRegistryClient->register(subject, schema); + string|error getSchema = schemaRegistryClient->getSchemaById(registerResult * registerResult); test:assertTrue(getSchema is error); if getSchema !is string { test:assertEquals(getSchema.detail().status, 404); @@ -129,19 +130,21 @@ public isolated function testGetId() returns error? { ] }`; - int registerId = check schemaRegistryClient.register(subject, schema); - int schemaId = check schemaRegistryClient.getId(subject, schema); + int registerId = check schemaRegistryClient->register(subject, schema); + int schemaId = check schemaRegistryClient->getId(subject, schema); test:assertEquals(registerId, schemaId); } @test:Config {} public isolated function testInvalidClientInitiation() returns error? { + map originals = {}; ConnectionConfig ConnectionConfig = { baseUrl: "", identityMapCapacity, originals, headers }; + Client schemaRegistryClient = check new (ConnectionConfig); string schema = string ` @@ -155,6 +158,6 @@ public isolated function testInvalidClientInitiation() returns error? { ] }`; - int|Error registerResult = schemaRegistryClient.register(subject, schema); + int|Error registerResult = schemaRegistryClient->register(subject, schema); test:assertTrue(registerResult is Error); } diff --git a/examples/user-registration/main.bal b/examples/user-registration/main.bal index 944d3d8..4d851d7 100644 --- a/examples/user-registration/main.bal +++ b/examples/user-registration/main.bal @@ -1,3 +1,19 @@ +// Copyright (c) 2024 WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + import ballerina/io; import ballerinax/confluent.cregistry; @@ -26,10 +42,10 @@ public function main() returns error? { {"name": "favorite_color", "type": ["string", "null"]} ] }`; - - int registerId = check schemaRegistryClient.register(subject, schema); + + int registerId = check schemaRegistryClient->register(subject, schema); io:println("Registered Id for the schema: ", registerId); - int schemaId = check schemaRegistryClient.getId(subject, schema); + int schemaId = check schemaRegistryClient->getId(subject, schema); io:println("Id for the given schema: ", schemaId); } From 3b2fc8895ae1d9cd348283bacb43aff12bd5452f Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Sun, 7 Apr 2024 20:34:10 +0530 Subject: [PATCH 02/10] Add support for mock schema registry --- .../registry/CustomSchemaRegistryClient.java | 13 +++++++++++-- .../io/ballerina/lib/confluent/registry/Utils.java | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java b/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java index 4bec99a..1d7cbe5 100644 --- a/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java +++ b/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java @@ -23,6 +23,7 @@ import io.ballerina.runtime.api.values.BObject; import io.ballerina.runtime.api.values.BString; import io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient; +import io.confluent.kafka.schemaregistry.client.MockSchemaRegistryClient; import io.confluent.kafka.schemaregistry.client.SchemaRegistryClient; import io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException; import org.apache.avro.Schema; @@ -33,6 +34,8 @@ import static io.ballerina.lib.confluent.registry.ModuleUtils.NATIVE_CLIENT; import static io.ballerina.lib.confluent.registry.Utils.CLIENT_INVOCATION_ERROR; +import static io.ballerina.lib.confluent.registry.Utils.MOCK_CLIENT; +import static io.confluent.kafka.serializers.AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG; public final class CustomSchemaRegistryClient { @@ -52,8 +55,14 @@ public static void generateSchemaRegistryClient(BObject registryClient, BMap Date: Sun, 7 Apr 2024 20:42:43 +0530 Subject: [PATCH 03/10] Add Config.toml files with mock values --- ballerina/tests/Config.toml | 8 ++++++++ examples/user-registration/Config.toml | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 ballerina/tests/Config.toml create mode 100644 examples/user-registration/Config.toml diff --git a/ballerina/tests/Config.toml b/ballerina/tests/Config.toml new file mode 100644 index 0000000..e7783be --- /dev/null +++ b/ballerina/tests/Config.toml @@ -0,0 +1,8 @@ +baseUrl = "http://localhost:9090/schema_registry" +identityMapCapacity = 1000 +subject = "avro_topic" + +[originals] +"schema.registry.url" = "mock://mock-client.confluent.cloud" + +[headers] diff --git a/examples/user-registration/Config.toml b/examples/user-registration/Config.toml new file mode 100644 index 0000000..e7783be --- /dev/null +++ b/examples/user-registration/Config.toml @@ -0,0 +1,8 @@ +baseUrl = "http://localhost:9090/schema_registry" +identityMapCapacity = 1000 +subject = "avro_topic" + +[originals] +"schema.registry.url" = "mock://mock-client.confluent.cloud" + +[headers] From 9f8121623996be6fa109afd9b692ad7751c1c20f Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Sun, 7 Apr 2024 20:55:53 +0530 Subject: [PATCH 04/10] Remove unnecessary whitespace --- .../lib/confluent/registry/CustomSchemaRegistryClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java b/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java index 1d7cbe5..ebcceba 100644 --- a/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java +++ b/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java @@ -56,7 +56,7 @@ public static void generateSchemaRegistryClient(BObject registryClient, BMap Date: Tue, 9 Apr 2024 13:11:55 +0530 Subject: [PATCH 05/10] Remove instantiating mock schema regsitry from native APIs --- .../registry/CustomSchemaRegistryClient.java | 27 ++++++++----------- .../lib/confluent/registry/Utils.java | 1 - 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java b/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java index ebcceba..d917981 100644 --- a/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java +++ b/native/src/main/java/io/ballerina/lib/confluent/registry/CustomSchemaRegistryClient.java @@ -23,7 +23,6 @@ import io.ballerina.runtime.api.values.BObject; import io.ballerina.runtime.api.values.BString; import io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient; -import io.confluent.kafka.schemaregistry.client.MockSchemaRegistryClient; import io.confluent.kafka.schemaregistry.client.SchemaRegistryClient; import io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException; import org.apache.avro.Schema; @@ -34,8 +33,6 @@ import static io.ballerina.lib.confluent.registry.ModuleUtils.NATIVE_CLIENT; import static io.ballerina.lib.confluent.registry.Utils.CLIENT_INVOCATION_ERROR; -import static io.ballerina.lib.confluent.registry.Utils.MOCK_CLIENT; -import static io.confluent.kafka.serializers.AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG; public final class CustomSchemaRegistryClient { @@ -47,22 +44,20 @@ public static void generateSchemaRegistryClient(BObject registryClient, BMap originals = (BMap) config.getMapValue(ModuleUtils.ORIGINALS); BMap httpHeaders = (BMap) config.getMapValue(ModuleUtils.HEADERS); Map configurations = new HashMap<>(); - for (BString key: originals.getKeys()) { - configurations.put(key.getValue().replaceAll("^\"|\"$", ""), - originals.get(key).toString()); + if (originals != null) { + for (BString key: originals.getKeys()) { + configurations.put(key.getValue().replaceAll("^\"|\"$", ""), + originals.get(key).toString()); + } } Map headers = new HashMap<>(); - for (BString header: httpHeaders.getKeys()) { - headers.put(header.getValue(), httpHeaders.get(header).toString()); - } - SchemaRegistryClient registry; - if (configurations.containsKey(SCHEMA_REGISTRY_URL_CONFIG) && - configurations.get(SCHEMA_REGISTRY_URL_CONFIG).startsWith(MOCK_CLIENT)) { - registry = new MockSchemaRegistryClient(); - } else { - registry = new CachedSchemaRegistryClient(baseUrl.getValue(), (int) identityMapCapacity, - configurations, headers); + if (httpHeaders != null) { + for (BString header : httpHeaders.getKeys()) { + headers.put(header.getValue(), httpHeaders.get(header).toString()); + } } + SchemaRegistryClient registry = new CachedSchemaRegistryClient(baseUrl.getValue(), (int) identityMapCapacity, + configurations, headers); registryClient.addNativeData(NATIVE_CLIENT, registry); } diff --git a/native/src/main/java/io/ballerina/lib/confluent/registry/Utils.java b/native/src/main/java/io/ballerina/lib/confluent/registry/Utils.java index 60ea0d7..ce431e6 100644 --- a/native/src/main/java/io/ballerina/lib/confluent/registry/Utils.java +++ b/native/src/main/java/io/ballerina/lib/confluent/registry/Utils.java @@ -35,7 +35,6 @@ public final class Utils { private Utils() { } - public static final String MOCK_CLIENT = "mock://"; public static final String ERROR_TYPE = "Error"; public static final String ERROR_DETAILS = "ErrorDetails"; public static final String STATUS = "status"; From 3bb17f0c0a4285a694a83d445f8a8c22ca33854b Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Tue, 9 Apr 2024 13:12:12 +0530 Subject: [PATCH 06/10] Add optional fields for `ConnectionConfig` record --- ballerina/types.bal | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ballerina/types.bal b/ballerina/types.bal index 149e5f3..dc827db 100644 --- a/ballerina/types.bal +++ b/ballerina/types.bal @@ -22,7 +22,7 @@ # + headers - Custom headers to be included in the requests public type ConnectionConfig record {| string baseUrl; - int identityMapCapacity; - map originals; - map headers; + int identityMapCapacity = 1000; + map originals?; + map headers?; |}; From cf3c307572034e79195644c0a78b3d98222c4a04 Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Tue, 9 Apr 2024 13:12:22 +0530 Subject: [PATCH 07/10] Add mock server for test cases --- ballerina/tests/mock_service.bal | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 ballerina/tests/mock_service.bal diff --git a/ballerina/tests/mock_service.bal b/ballerina/tests/mock_service.bal new file mode 100644 index 0000000..f5f07a2 --- /dev/null +++ b/ballerina/tests/mock_service.bal @@ -0,0 +1,40 @@ +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import ballerina/http; + +type Schema readonly & record {| + int id; + string schema; +|}; + +service /registry on new http:Listener(9090) { + resource function post subjects/[string subject]/versions() returns http:Response|error { + http:Response res = new; + _ = check res.setContentType("application/vnd.schemaregistry.v1+json"); + res.setPayload({"id": 1002}); + return res; + } + + resource function get schemas/ids/[int id]() returns http:Response|error { + http:Response res = new; + res.statusCode = 404; + _ = check res.setContentType("application/vnd.schemaregistry.v1+json"); + string message = string `Schema ${id} not found`; + res.setPayload({"error_code":40403,"message": message}); + return res; + } +} From 2b46999a0682fa18c278cf659dfacf8a5a922e06 Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Tue, 9 Apr 2024 13:12:49 +0530 Subject: [PATCH 08/10] Remove Config.toml from examples --- examples/user-registration/Config.toml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 examples/user-registration/Config.toml diff --git a/examples/user-registration/Config.toml b/examples/user-registration/Config.toml deleted file mode 100644 index e7783be..0000000 --- a/examples/user-registration/Config.toml +++ /dev/null @@ -1,8 +0,0 @@ -baseUrl = "http://localhost:9090/schema_registry" -identityMapCapacity = 1000 -subject = "avro_topic" - -[originals] -"schema.registry.url" = "mock://mock-client.confluent.cloud" - -[headers] From abc5b81e7d265352c47ce1bc653374c539348ea8 Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Tue, 9 Apr 2024 13:13:16 +0530 Subject: [PATCH 09/10] Add support for mock test cases --- ballerina/tests/Config.toml | 5 ++-- ballerina/tests/test.bal | 52 +++++++------------------------------ 2 files changed, 11 insertions(+), 46 deletions(-) diff --git a/ballerina/tests/Config.toml b/ballerina/tests/Config.toml index e7783be..21937e1 100644 --- a/ballerina/tests/Config.toml +++ b/ballerina/tests/Config.toml @@ -1,8 +1,7 @@ -baseUrl = "http://localhost:9090/schema_registry" +baseUrl = "http://localhost:9090/registry" identityMapCapacity = 1000 -subject = "avro_topic" +subject = "new-subject" [originals] -"schema.registry.url" = "mock://mock-client.confluent.cloud" [headers] diff --git a/ballerina/tests/test.bal b/ballerina/tests/test.bal index 985a013..db8bc53 100644 --- a/ballerina/tests/test.bal +++ b/ballerina/tests/test.bal @@ -31,6 +31,7 @@ Client schemaRegistryClient = check new ({ @test:Config {} public function testRegister() returns error? { + string subject = "test-topic"; string schema = string ` { "namespace": "example.avro", @@ -46,15 +47,7 @@ public function testRegister() returns error? { } @test:Config {} -public isolated function testInvalidSchemaRegister() returns error? { - ConnectionConfig ConnectionConfig = { - baseUrl, - identityMapCapacity, - originals, - headers - }; - Client schemaRegistryClient = check new (ConnectionConfig); - +public function testInvalidSchemaRegister() returns error? { string schema = string ` { "type": "record", @@ -66,19 +59,11 @@ public isolated function testInvalidSchemaRegister() returns error? { if register !is int { test:assertEquals(register.detail().status, ()); test:assertEquals(register.detail().errorCode, ()); - } + } } @test:Config {} -public isolated function testGetSchemaById() returns error? { - ConnectionConfig ConnectionConfig = { - baseUrl, - identityMapCapacity, - originals, - headers - }; - Client schemaRegistryClient = check new (ConnectionConfig); - +public function testGetSchemaById() returns error? { string schema = string `{"type":"record","name":"Student","namespace":"example.avro","fields":[{"name":"name","type":"string"},{"name":"favorite_color","type":["string","null"]}]}`; int registerResult = check schemaRegistryClient->register(subject, schema); @@ -86,20 +71,11 @@ public isolated function testGetSchemaById() returns error? { test:assertEquals(getSchema.toJson(), schema.toJson()); } -@test:Config { - enable: false -} -public isolated function testGetInvalidSchemaById() returns error? { - ConnectionConfig ConnectionConfig = { - baseUrl, - identityMapCapacity, - originals, - headers - }; - Client schemaRegistryClient = check new (ConnectionConfig); +@test:Config {} +public function testGetInvalidSchemaById() returns error? { string schema = string `{"type":"record","name":"Student","namespace":"example.avro","fields":[{"name":"name","type":"string"},{"name":"favorite_color","type":["string","null"]}]}`; - + int registerResult = check schemaRegistryClient->register(subject, schema); string|error getSchema = schemaRegistryClient->getSchemaById(registerResult * registerResult); test:assertTrue(getSchema is error); @@ -110,15 +86,7 @@ public isolated function testGetInvalidSchemaById() returns error? { } @test:Config {} -public isolated function testGetId() returns error? { - ConnectionConfig ConnectionConfig = { - baseUrl, - identityMapCapacity, - originals, - headers - }; - Client schemaRegistryClient = check new (ConnectionConfig); - +public function testGetId() returns error? { string schema = string ` { "namespace": "example.avro", @@ -136,7 +104,7 @@ public isolated function testGetId() returns error? { } @test:Config {} -public isolated function testInvalidClientInitiation() returns error? { +public function testInvalidClientInitiation() returns error? { map originals = {}; ConnectionConfig ConnectionConfig = { baseUrl: "", @@ -144,9 +112,7 @@ public isolated function testInvalidClientInitiation() returns error? { originals, headers }; - Client schemaRegistryClient = check new (ConnectionConfig); - string schema = string ` { "namespace": "example.avro", From abfdd6b973c61ca2ac0ec27e3a761ce8e89bc58e Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Tue, 9 Apr 2024 13:45:19 +0530 Subject: [PATCH 10/10] [Automated] Update the toml files --- ballerina/Dependencies.toml | 282 ++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index 68fc194..51a46ce 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -7,6 +7,105 @@ dependencies-toml-version = "2" distribution-version = "2201.8.6" +[[package]] +org = "ballerina" +name = "auth" +version = "2.10.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.7.1" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.4.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.5.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.9.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.10.12" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.regexp"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"}, + {org = "ballerina", packageName = "http", moduleName = "http.httpscerr"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.6.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] + [[package]] org = "ballerina" name = "jballerina.java" @@ -15,6 +114,50 @@ modules = [ {org = "ballerina", packageName = "jballerina.java", moduleName = "jballerina.java"} ] +[[package]] +org = "ballerina" +name = "jwt" +version = "2.10.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + [[package]] org = "ballerina" name = "lang.error" @@ -24,6 +167,126 @@ dependencies = [ {org = "ballerina", name = "jballerina.java"} ] +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" +scope = "testOnly" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.9.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.9.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.10.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.2.2" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.8.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.5.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + [[package]] org = "ballerina" name = "test" @@ -37,11 +300,30 @@ modules = [ {org = "ballerina", packageName = "test", moduleName = "test"} ] +[[package]] +org = "ballerina" +name = "time" +version = "2.4.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.4.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + [[package]] org = "ballerinax" name = "confluent.cregistry" version = "0.1.0" dependencies = [ + {org = "ballerina", name = "http"}, {org = "ballerina", name = "jballerina.java"}, {org = "ballerina", name = "test"} ]