diff --git a/cloud/docker-image/pom.xml b/cloud/docker-image/pom.xml index 47e0d218d3..c8d692ae85 100644 --- a/cloud/docker-image/pom.xml +++ b/cloud/docker-image/pom.xml @@ -344,25 +344,25 @@ ${project.groupId} - validator-avro + types-avro ${project.version} runtime ${project.groupId} - validator-core + types-core ${project.version} runtime ${project.groupId} - validator-json + types-json ${project.version} runtime ${project.groupId} - validator-protobuf + types-protobuf ${project.version} runtime diff --git a/cloud/docker-image/src/main/docker/assembly.xml b/cloud/docker-image/src/main/docker/assembly.xml index 793a868b4e..f27e5855c0 100644 --- a/cloud/docker-image/src/main/docker/assembly.xml +++ b/cloud/docker-image/src/main/docker/assembly.xml @@ -31,7 +31,7 @@ io/aklivity/zilla/exporter-*/** io/aklivity/zilla/guard-*/** io/aklivity/zilla/metrics-*/** - io/aklivity/zilla/validator-*/** + io/aklivity/zilla/types-*/** io/aklivity/zilla/vault-*/** io/aklivity/zilla/command/** io/aklivity/zilla/command-*/** diff --git a/cloud/docker-image/src/main/docker/incubator/zpm.json.template b/cloud/docker-image/src/main/docker/incubator/zpm.json.template index 79c3395b3d..2b06b1dbdc 100644 --- a/cloud/docker-image/src/main/docker/incubator/zpm.json.template +++ b/cloud/docker-image/src/main/docker/incubator/zpm.json.template @@ -48,10 +48,10 @@ "io.aklivity.zilla:metrics-stream", "io.aklivity.zilla:metrics-http", "io.aklivity.zilla:metrics-grpc", - "io.aklivity.zilla:validator-avro", - "io.aklivity.zilla:validator-core", - "io.aklivity.zilla:validator-json", - "io.aklivity.zilla:validator-protobuf", + "io.aklivity.zilla:types-avro", + "io.aklivity.zilla:types-core", + "io.aklivity.zilla:types-json", + "io.aklivity.zilla:types-protobuf", "io.aklivity.zilla:vault-filesystem", "org.slf4j:slf4j-simple", "org.antlr:antlr4-runtime" diff --git a/incubator/catalog-inline/src/test/java/io/aklivity/zilla/runtime/catalog/inline/internal/InlineIT.java b/incubator/catalog-inline/src/test/java/io/aklivity/zilla/runtime/catalog/inline/internal/InlineIT.java index 9dd8030026..0a3e4f29a8 100644 --- a/incubator/catalog-inline/src/test/java/io/aklivity/zilla/runtime/catalog/inline/internal/InlineIT.java +++ b/incubator/catalog-inline/src/test/java/io/aklivity/zilla/runtime/catalog/inline/internal/InlineIT.java @@ -28,7 +28,7 @@ import io.aklivity.zilla.runtime.catalog.inline.config.InlineOptionsConfig; import io.aklivity.zilla.runtime.catalog.inline.config.InlineSchemaConfig; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public class InlineIT { diff --git a/incubator/catalog-schema-registry/src/main/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryCatalogHandler.java b/incubator/catalog-schema-registry/src/main/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryCatalogHandler.java index e7235a7d29..577fb1565e 100644 --- a/incubator/catalog-schema-registry/src/main/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryCatalogHandler.java +++ b/incubator/catalog-schema-registry/src/main/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryCatalogHandler.java @@ -31,7 +31,7 @@ import io.aklivity.zilla.runtime.catalog.schema.registry.internal.serializer.RegisterSchemaRequest; import io.aklivity.zilla.runtime.catalog.schema.registry.internal.types.SchemaRegistryPrefixFW; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public class SchemaRegistryCatalogHandler implements CatalogHandler { diff --git a/incubator/catalog-schema-registry/src/test/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryIT.java b/incubator/catalog-schema-registry/src/test/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryIT.java index 5f29430080..62d9390439 100644 --- a/incubator/catalog-schema-registry/src/test/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryIT.java +++ b/incubator/catalog-schema-registry/src/test/java/io/aklivity/zilla/runtime/catalog/schema/registry/internal/SchemaRegistryIT.java @@ -36,7 +36,7 @@ import io.aklivity.zilla.runtime.catalog.schema.registry.internal.config.SchemaRegistryOptionsConfig; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public class SchemaRegistryIT { diff --git a/incubator/command-generate/pom.xml b/incubator/command-generate/pom.xml index 24b216abdd..56eaf71660 100644 --- a/incubator/command-generate/pom.xml +++ b/incubator/command-generate/pom.xml @@ -87,25 +87,25 @@ io.aklivity.zilla - validator-avro + types-avro ${project.version} provided io.aklivity.zilla - validator-core + types-core ${project.version} provided io.aklivity.zilla - validator-json + types-json ${project.version} provided io.aklivity.zilla - validator-protobuf + types-protobuf ${project.version} provided diff --git a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/airline/ConfigGenerator.java b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/airline/ConfigGenerator.java index ea664debf1..71a3e19ca2 100644 --- a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/airline/ConfigGenerator.java +++ b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/airline/ConfigGenerator.java @@ -28,9 +28,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfig; -import io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfig; +import io.aklivity.zilla.runtime.types.core.config.StringConverterConfig; public abstract class ConfigGenerator { @@ -40,9 +40,9 @@ public abstract class ConfigGenerator protected static final String VERSION_LATEST = "latest"; protected static final Pattern JSON_CONTENT_TYPE = Pattern.compile("^application/(?:.+\\+)?json$"); - protected final Map validators = Map.of( - "string", StringValidatorConfig.builder().build(), - "integer", IntegerValidatorConfig.builder().build() + protected final Map converters = Map.of( + "string", StringConverterConfig.builder().build(), + "integer", IntegerConverterConfig.builder().build() ); protected final Matcher jsonContentType = JSON_CONTENT_TYPE.matcher(""); diff --git a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/http/proxy/AsyncApiHttpProxyConfigGenerator.java b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/http/proxy/AsyncApiHttpProxyConfigGenerator.java index b5056a0896..19052d75b0 100644 --- a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/http/proxy/AsyncApiHttpProxyConfigGenerator.java +++ b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/http/proxy/AsyncApiHttpProxyConfigGenerator.java @@ -53,13 +53,13 @@ import io.aklivity.zilla.runtime.engine.config.BindingConfigBuilder; import io.aklivity.zilla.runtime.engine.config.CatalogedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.ConfigWriter; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; import io.aklivity.zilla.runtime.engine.config.GuardedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfigBuilder; import io.aklivity.zilla.runtime.engine.config.RouteConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; import io.aklivity.zilla.runtime.guard.jwt.config.JwtOptionsConfig; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; import io.aklivity.zilla.runtime.vault.filesystem.config.FileSystemOptionsConfig; public class AsyncApiHttpProxyConfigGenerator extends AsyncApiConfigGenerator @@ -355,7 +355,7 @@ private HttpRequestConfigBuilder injectContent( if (hasJsonContentType()) { request. - content(JsonValidatorConfig::builder) + content(JsonConverterConfig::builder) .catalog() .name(INLINE_CATALOG_NAME) .inject(catalog -> injectSchemas(catalog, messages)) @@ -394,13 +394,13 @@ private HttpRequestConfigBuilder injectPathParams( Parameter parameter = parameters.get(name); if (parameter.schema != null && parameter.schema.type != null) { - ValidatorConfig validator = validators.get(parameter.schema.type); - if (validator != null) + ConverterConfig converter = converters.get(parameter.schema.type); + if (converter != null) { request .pathParam() .name(name) - .validator(validator) + .converter(converter) .build(); } } diff --git a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/mqtt/proxy/AsyncApiMqttProxyConfigGenerator.java b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/mqtt/proxy/AsyncApiMqttProxyConfigGenerator.java index 9ae966d666..d058ddf3a7 100644 --- a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/mqtt/proxy/AsyncApiMqttProxyConfigGenerator.java +++ b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/asyncapi/mqtt/proxy/AsyncApiMqttProxyConfigGenerator.java @@ -46,7 +46,7 @@ import io.aklivity.zilla.runtime.engine.config.ConfigWriter; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfigBuilder; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; import io.aklivity.zilla.runtime.vault.filesystem.config.FileSystemOptionsConfig; public class AsyncApiMqttProxyConfigGenerator extends AsyncApiConfigGenerator @@ -248,7 +248,7 @@ private BindingConfigBuilder> injectMqtt .options(MqttOptionsConfig::builder) .topic() .name(topic) - .content(JsonValidatorConfig::builder) + .content(JsonConverterConfig::builder) .catalog() .name(INLINE_CATALOG_NAME) .inject(cataloged -> injectJsonSchemas(cataloged, messages, APPLICATION_JSON)) diff --git a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/openapi/http/proxy/OpenApiHttpProxyConfigGenerator.java b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/openapi/http/proxy/OpenApiHttpProxyConfigGenerator.java index 37a988b29c..f49521d7cc 100644 --- a/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/openapi/http/proxy/OpenApiHttpProxyConfigGenerator.java +++ b/incubator/command-generate/src/main/java/io/aklivity/zilla/runtime/command/generate/internal/openapi/http/proxy/OpenApiHttpProxyConfigGenerator.java @@ -50,13 +50,13 @@ import io.aklivity.zilla.runtime.command.generate.internal.openapi.view.ServerView; import io.aklivity.zilla.runtime.engine.config.BindingConfigBuilder; import io.aklivity.zilla.runtime.engine.config.ConfigWriter; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; import io.aklivity.zilla.runtime.engine.config.GuardedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfigBuilder; import io.aklivity.zilla.runtime.engine.config.RouteConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; import io.aklivity.zilla.runtime.guard.jwt.config.JwtOptionsConfig; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; import io.aklivity.zilla.runtime.vault.filesystem.config.FileSystemOptionsConfig; public class OpenApiHttpProxyConfigGenerator extends OpenApiConfigGenerator @@ -326,7 +326,7 @@ private HttpRequestConfigBuilder injectContent( if (schema != null) { request. - content(JsonValidatorConfig::builder) + content(JsonConverterConfig::builder) .catalog() .name(INLINE_CATALOG_NAME) .schema() @@ -349,8 +349,8 @@ private HttpRequestConfigBuilder injectParams( { if (parameter.schema != null && parameter.schema.type != null) { - ValidatorConfig validator = validators.get(parameter.schema.type); - if (validator != null) + ConverterConfig converter = converters.get(parameter.schema.type); + if (converter != null) { switch (parameter.in) { @@ -358,21 +358,21 @@ private HttpRequestConfigBuilder injectParams( request. pathParam() .name(parameter.name) - .validator(validator) + .converter(converter) .build(); break; case "query": request. queryParam() .name(parameter.name) - .validator(validator) + .converter(converter) .build(); break; case "header": request. header() .name(parameter.name) - .validator(validator) + .converter(converter) .build(); break; } diff --git a/incubator/command-generate/src/main/moditect/module-info.java b/incubator/command-generate/src/main/moditect/module-info.java index 734ccaa7d5..b10ec9f543 100644 --- a/incubator/command-generate/src/main/moditect/module-info.java +++ b/incubator/command-generate/src/main/moditect/module-info.java @@ -23,10 +23,10 @@ requires io.aklivity.zilla.runtime.catalog.inline; requires io.aklivity.zilla.runtime.guard.jwt; requires io.aklivity.zilla.runtime.vault.filesystem; - requires io.aklivity.zilla.runtime.validator.avro; - requires io.aklivity.zilla.runtime.validator.core; - requires io.aklivity.zilla.runtime.validator.json; - requires io.aklivity.zilla.runtime.validator.protobuf; + requires io.aklivity.zilla.runtime.types.avro; + requires io.aklivity.zilla.runtime.types.core; + requires io.aklivity.zilla.runtime.types.json; + requires io.aklivity.zilla.runtime.types.protobuf; requires com.fasterxml.jackson.dataformat.yaml; requires com.fasterxml.jackson.databind; diff --git a/incubator/pom.xml b/incubator/pom.xml index 825da641f8..1e5132139b 100644 --- a/incubator/pom.xml +++ b/incubator/pom.xml @@ -21,10 +21,10 @@ catalog-inline.spec catalog-schema-registry.spec exporter-otlp.spec - validator-avro.spec - validator-core.spec - validator-json.spec - validator-protobuf.spec + types-avro.spec + types-core.spec + types-json.spec + types-protobuf.spec binding-amqp @@ -38,10 +38,10 @@ exporter-otlp - validator-avro - validator-core - validator-json - validator-protobuf + types-avro + types-core + types-json + types-protobuf @@ -88,22 +88,22 @@ ${project.groupId} - validator-avro + types-avro ${project.version} ${project.groupId} - validator-core + types-core ${project.version} ${project.groupId} - validator-json + types-json ${project.version} ${project.groupId} - validator-protobuf + types-protobuf ${project.version} diff --git a/incubator/validator-avro.spec/COPYRIGHT b/incubator/types-avro.spec/COPYRIGHT similarity index 100% rename from incubator/validator-avro.spec/COPYRIGHT rename to incubator/types-avro.spec/COPYRIGHT diff --git a/incubator/validator-avro.spec/LICENSE b/incubator/types-avro.spec/LICENSE similarity index 100% rename from incubator/validator-avro.spec/LICENSE rename to incubator/types-avro.spec/LICENSE diff --git a/incubator/validator-avro.spec/NOTICE b/incubator/types-avro.spec/NOTICE similarity index 100% rename from incubator/validator-avro.spec/NOTICE rename to incubator/types-avro.spec/NOTICE diff --git a/incubator/validator-avro.spec/NOTICE.template b/incubator/types-avro.spec/NOTICE.template similarity index 100% rename from incubator/validator-avro.spec/NOTICE.template rename to incubator/types-avro.spec/NOTICE.template diff --git a/incubator/validator-avro.spec/mvnw b/incubator/types-avro.spec/mvnw similarity index 100% rename from incubator/validator-avro.spec/mvnw rename to incubator/types-avro.spec/mvnw diff --git a/incubator/validator-avro.spec/mvnw.cmd b/incubator/types-avro.spec/mvnw.cmd similarity index 100% rename from incubator/validator-avro.spec/mvnw.cmd rename to incubator/types-avro.spec/mvnw.cmd diff --git a/incubator/validator-avro.spec/pom.xml b/incubator/types-avro.spec/pom.xml similarity index 94% rename from incubator/validator-avro.spec/pom.xml rename to incubator/types-avro.spec/pom.xml index 3511201d78..d0e2b068bb 100644 --- a/incubator/validator-avro.spec/pom.xml +++ b/incubator/types-avro.spec/pom.xml @@ -12,8 +12,8 @@ ../pom.xml - validator-avro.spec - zilla::incubator::validator-avro.spec + types-avro.spec + zilla::incubator::types-avro.spec @@ -79,7 +79,7 @@ ${project.version} core - io.aklivity.zilla.specs.validator.avro.internal.types + io.aklivity.zilla.specs.types.avro.internal.types @@ -135,7 +135,7 @@ jacoco-maven-plugin - io/aklivity/zilla/specs/validator/avro/internal/types/**/*.class + io/aklivity/zilla/specs/types/avro/internal/types/**/*.class diff --git a/incubator/validator-avro.spec/src/main/moditect/module-info.java b/incubator/types-avro.spec/src/main/moditect/module-info.java similarity index 92% rename from incubator/validator-avro.spec/src/main/moditect/module-info.java rename to incubator/types-avro.spec/src/main/moditect/module-info.java index b289801500..f5af323186 100644 --- a/incubator/validator-avro.spec/src/main/moditect/module-info.java +++ b/incubator/types-avro.spec/src/main/moditect/module-info.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -open module io.aklivity.zilla.specs.validator.avro +open module io.aklivity.zilla.specs.types.avro { requires transitive io.aklivity.zilla.specs.engine; } diff --git a/incubator/validator-avro.spec/src/main/scripts/io/aklivity/zilla/specs/validator/avro/config/validator.yaml b/incubator/types-avro.spec/src/main/scripts/io/aklivity/zilla/specs/types/avro/config/converter.yaml similarity index 100% rename from incubator/validator-avro.spec/src/main/scripts/io/aklivity/zilla/specs/validator/avro/config/validator.yaml rename to incubator/types-avro.spec/src/main/scripts/io/aklivity/zilla/specs/types/avro/config/converter.yaml diff --git a/incubator/validator-avro.spec/src/main/scripts/io/aklivity/zilla/specs/validator/avro/schema/avro.schema.patch.json b/incubator/types-avro.spec/src/main/scripts/io/aklivity/zilla/specs/types/avro/schema/avro.schema.patch.json similarity index 98% rename from incubator/validator-avro.spec/src/main/scripts/io/aklivity/zilla/specs/validator/avro/schema/avro.schema.patch.json rename to incubator/types-avro.spec/src/main/scripts/io/aklivity/zilla/specs/types/avro/schema/avro.schema.patch.json index ffa3ce0b28..e9a6c3be00 100644 --- a/incubator/validator-avro.spec/src/main/scripts/io/aklivity/zilla/specs/validator/avro/schema/avro.schema.patch.json +++ b/incubator/types-avro.spec/src/main/scripts/io/aklivity/zilla/specs/types/avro/schema/avro.schema.patch.json @@ -1,12 +1,12 @@ [ { "op": "add", - "path": "/$defs/validator/types/enum/-", + "path": "/$defs/converter/types/enum/-", "value": "avro" }, { "op": "add", - "path": "/$defs/validator/allOf/-", + "path": "/$defs/converter/allOf/-", "value": { "if": diff --git a/incubator/validator-json.spec/src/test/java/io/aklivity/zilla/specs/validator/json/config/SchemaTest.java b/incubator/types-avro.spec/src/test/java/io/aklivity/zilla/specs/types/avro/config/SchemaTest.java similarity index 81% rename from incubator/validator-json.spec/src/test/java/io/aklivity/zilla/specs/validator/json/config/SchemaTest.java rename to incubator/types-avro.spec/src/test/java/io/aklivity/zilla/specs/types/avro/config/SchemaTest.java index 34c0bcdfc4..f58f583cdd 100644 --- a/incubator/validator-json.spec/src/test/java/io/aklivity/zilla/specs/validator/json/config/SchemaTest.java +++ b/incubator/types-avro.spec/src/test/java/io/aklivity/zilla/specs/types/avro/config/SchemaTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.specs.validator.json.config; +package io.aklivity.zilla.specs.types.avro.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.not; @@ -31,13 +31,13 @@ public class SchemaTest public final ConfigSchemaRule schema = new ConfigSchemaRule() .schemaPatch("io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/validator/json/schema/json.schema.patch.json") - .configurationRoot("io/aklivity/zilla/specs/validator/json/config"); + .schemaPatch("io/aklivity/zilla/specs/types/avro/schema/avro.schema.patch.json") + .configurationRoot("io/aklivity/zilla/specs/types/avro/config"); @Test public void shouldValidateCatalog() { - JsonObject config = schema.validate("validator.yaml"); + JsonObject config = schema.validate("converter.yaml"); assertThat(config, not(nullValue())); } diff --git a/incubator/validator-avro/COPYRIGHT b/incubator/types-avro/COPYRIGHT similarity index 100% rename from incubator/validator-avro/COPYRIGHT rename to incubator/types-avro/COPYRIGHT diff --git a/incubator/validator-avro/LICENSE b/incubator/types-avro/LICENSE similarity index 100% rename from incubator/validator-avro/LICENSE rename to incubator/types-avro/LICENSE diff --git a/incubator/validator-avro/NOTICE b/incubator/types-avro/NOTICE similarity index 100% rename from incubator/validator-avro/NOTICE rename to incubator/types-avro/NOTICE diff --git a/incubator/validator-avro/NOTICE.template b/incubator/types-avro/NOTICE.template similarity index 100% rename from incubator/validator-avro/NOTICE.template rename to incubator/types-avro/NOTICE.template diff --git a/incubator/validator-avro/mvnw b/incubator/types-avro/mvnw similarity index 100% rename from incubator/validator-avro/mvnw rename to incubator/types-avro/mvnw diff --git a/incubator/validator-avro/mvnw.cmd b/incubator/types-avro/mvnw.cmd similarity index 100% rename from incubator/validator-avro/mvnw.cmd rename to incubator/types-avro/mvnw.cmd diff --git a/incubator/validator-avro/pom.xml b/incubator/types-avro/pom.xml similarity index 89% rename from incubator/validator-avro/pom.xml rename to incubator/types-avro/pom.xml index 171f5bdd8c..ec8ee387ef 100644 --- a/incubator/validator-avro/pom.xml +++ b/incubator/types-avro/pom.xml @@ -12,8 +12,8 @@ ../pom.xml - validator-avro - zilla::incubator::validator-avro + types-avro + zilla::incubator::types-avro @@ -33,7 +33,7 @@ ${project.groupId} - validator-avro.spec + types-avro.spec ${project.version} provided @@ -83,7 +83,7 @@ ${project.version} core - io.aklivity.zilla.runtime.validator.avro.internal.types + io.aklivity.zilla.runtime.types.avro.internal.types @@ -120,16 +120,16 @@ ${project.groupId} - validator-avro.spec + types-avro.spec - ^\Qio/aklivity/zilla/specs/validator/avro/\E - io/aklivity/zilla/runtime/validator/avro/ + ^\Qio/aklivity/zilla/specs/types/avro/\E + io/aklivity/zilla/runtime/types/avro/ - io/aklivity/zilla/specs/validator/avro/schema/avro.schema.patch.json + io/aklivity/zilla/specs/types/avro/schema/avro.schema.patch.json ${project.build.directory}/classes @@ -153,7 +153,7 @@ org.apache.avro - io.aklivity.zilla.runtime.validator.avro.internal.avro + io.aklivity.zilla.runtime.types.avro.internal.avro true @@ -187,7 +187,7 @@ jacoco-maven-plugin - io/aklivity/zilla/runtime/validator/avro/internal/types/**/*.class + io/aklivity/zilla/runtime/types/avro/internal/types/**/*.class diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroValidator.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroConverter.java similarity index 96% rename from incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroValidator.java rename to incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroConverter.java index 153ed8418b..9368ccb8e6 100644 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroValidator.java +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro; +package io.aklivity.zilla.runtime.types.avro; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -41,9 +41,9 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; -import io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfig; +import io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfig; -public abstract class AvroValidator +public abstract class AvroConverter { protected static final String FORMAT_JSON = "json"; @@ -68,8 +68,8 @@ public abstract class AvroValidator private final Int2ObjectCache records; private final Int2IntHashMap paddings; - protected AvroValidator( - AvroValidatorConfig config, + protected AvroConverter( + AvroConverterConfig config, LongFunction supplyCatalog) { this.decoderFactory = DecoderFactory.get(); diff --git a/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroConverterFactory.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroConverterFactory.java new file mode 100644 index 0000000000..f0fd78ecfb --- /dev/null +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroConverterFactory.java @@ -0,0 +1,54 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.avro; + +import java.net.URL; +import java.util.function.LongFunction; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; +import io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfig; + +public final class AvroConverterFactory implements ConverterFactorySpi +{ + @Override + public String type() + { + return "avro"; + } + + public URL schema() + { + return getClass().getResource("schema/avro.schema.patch.json"); + } + + @Override + public Converter createReader( + ConverterConfig config, + LongFunction supplyCatalog) + { + return new AvroReadConverter(AvroConverterConfig.class.cast(config), supplyCatalog); + } + + @Override + public Converter createWriter( + ConverterConfig config, + LongFunction supplyCatalog) + { + return new AvroWriteConverter(AvroConverterConfig.class.cast(config), supplyCatalog); + } +} diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroReadValidator.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroReadConverter.java similarity index 78% rename from incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroReadValidator.java rename to incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroReadConverter.java index 1b00ca9bb8..55a2eaa80c 100644 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroReadValidator.java +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroReadConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro; +package io.aklivity.zilla.runtime.types.avro; import static io.aklivity.zilla.runtime.engine.catalog.CatalogHandler.NO_SCHEMA_ID; @@ -28,16 +28,14 @@ import org.apache.avro.io.JsonEncoder; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfig; -public class AvroReadValidator extends AvroValidator implements ValueValidator, FragmentValidator +public class AvroReadConverter extends AvroConverter implements Converter { - public AvroReadValidator( - AvroValidatorConfig config, + public AvroReadConverter( + AvroConverterConfig config, LongFunction supplyCatalog) { super(config, supplyCatalog); @@ -71,29 +69,7 @@ public int padding( } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroWriteValidator.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroWriteConverter.java similarity index 72% rename from incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroWriteValidator.java rename to incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroWriteConverter.java index 810552942a..a2b72a94ce 100644 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroWriteValidator.java +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/AvroWriteConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro; +package io.aklivity.zilla.runtime.types.avro; import java.io.IOException; import java.util.function.LongFunction; @@ -25,16 +25,14 @@ import org.apache.avro.generic.GenericRecord; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfig; -public class AvroWriteValidator extends AvroValidator implements ValueValidator, FragmentValidator +public class AvroWriteConverter extends AvroConverter implements Converter { - public AvroWriteValidator( - AvroValidatorConfig config, + public AvroWriteConverter( + AvroConverterConfig config, LongFunction supplyCatalog) { super(config, supplyCatalog); @@ -50,29 +48,7 @@ public int padding( } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfig.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfig.java similarity index 66% rename from incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfig.java rename to incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfig.java index d90ae8969b..90987da1a1 100644 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfig.java +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfig.java @@ -12,20 +12,20 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro.config; +package io.aklivity.zilla.runtime.types.avro.config; import java.util.List; import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public final class AvroValidatorConfig extends ValidatorConfig +public final class AvroConverterConfig extends ConverterConfig { public final String subject; public final String format; - public AvroValidatorConfig( + public AvroConverterConfig( List cataloged, String subject, String format) @@ -35,14 +35,14 @@ public AvroValidatorConfig( this.format = format; } - public static AvroValidatorConfigBuilder builder( - Function mapper) + public static AvroConverterConfigBuilder builder( + Function mapper) { - return new AvroValidatorConfigBuilder<>(mapper::apply); + return new AvroConverterConfigBuilder<>(mapper::apply); } - public static AvroValidatorConfigBuilder builder() + public static AvroConverterConfigBuilder builder() { - return new AvroValidatorConfigBuilder<>(AvroValidatorConfig.class::cast); + return new AvroConverterConfigBuilder<>(AvroConverterConfig.class::cast); } } diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigAdapter.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigAdapter.java similarity index 76% rename from incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigAdapter.java rename to incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigAdapter.java index 465c45813a..7eadb807d8 100644 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigAdapter.java +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigAdapter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro.config; +package io.aklivity.zilla.runtime.types.avro.config; import java.util.LinkedList; import java.util.List; @@ -26,12 +26,12 @@ import jakarta.json.bind.adapter.JsonbAdapter; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfigAdapter; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; -public final class AvroValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter +public final class AvroConverterConfigAdapter implements ConverterConfigAdapterSpi, JsonbAdapter { private static final String AVRO = "avro"; private static final String TYPE_NAME = "type"; @@ -49,21 +49,21 @@ public String type() @Override public JsonValue adaptToJson( - ValidatorConfig config) + ConverterConfig config) { - AvroValidatorConfig validatorConfig = (AvroValidatorConfig) config; - JsonObjectBuilder validator = Json.createObjectBuilder(); + AvroConverterConfig converterConfig = (AvroConverterConfig) config; + JsonObjectBuilder converter = Json.createObjectBuilder(); - if (validatorConfig.format != null) + if (converterConfig.format != null) { - validator.add(FORMAT, validatorConfig.format); + converter.add(FORMAT, converterConfig.format); } - validator.add(TYPE_NAME, AVRO); - if (validatorConfig.cataloged != null && !validatorConfig.cataloged.isEmpty()) + converter.add(TYPE_NAME, AVRO); + if (converterConfig.cataloged != null && !converterConfig.cataloged.isEmpty()) { JsonObjectBuilder catalogs = Json.createObjectBuilder(); - for (CatalogedConfig catalog : validatorConfig.cataloged) + for (CatalogedConfig catalog : converterConfig.cataloged) { JsonArrayBuilder array = Json.createArrayBuilder(); for (SchemaConfig schemaItem: catalog.schemas) @@ -72,13 +72,13 @@ public JsonValue adaptToJson( } catalogs.add(catalog.name, array); } - validator.add(CATALOG_NAME, catalogs); + converter.add(CATALOG_NAME, catalogs); } - return validator.build(); + return converter.build(); } @Override - public ValidatorConfig adaptFromJson( + public ConverterConfig adaptFromJson( JsonValue value) { JsonObject object = (JsonObject) value; @@ -108,6 +108,6 @@ public ValidatorConfig adaptFromJson( ? object.getString(FORMAT) : null; - return new AvroValidatorConfig(catalogs, subject, expect); + return new AvroConverterConfig(catalogs, subject, expect); } } diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigBuilder.java b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigBuilder.java similarity index 69% rename from incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigBuilder.java rename to incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigBuilder.java index bae0762c4e..51a5ff92f0 100644 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigBuilder.java +++ b/incubator/types-avro/src/main/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigBuilder.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro.config; +package io.aklivity.zilla.runtime.types.avro.config; import java.util.LinkedList; import java.util.List; @@ -22,47 +22,47 @@ import io.aklivity.zilla.runtime.engine.config.CatalogedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -public class AvroValidatorConfigBuilder extends ConfigBuilder> +public class AvroConverterConfigBuilder extends ConfigBuilder> { - private final Function mapper; + private final Function mapper; private List catalogs; private String subject; private String format; - AvroValidatorConfigBuilder( - Function mapper) + AvroConverterConfigBuilder( + Function mapper) { this.mapper = mapper; } @Override @SuppressWarnings("unchecked") - protected Class> thisType() + protected Class> thisType() { - return (Class>) getClass(); + return (Class>) getClass(); } - public AvroValidatorConfigBuilder subject( + public AvroConverterConfigBuilder subject( String subject) { this.subject = subject; return this; } - public AvroValidatorConfigBuilder format( + public AvroConverterConfigBuilder format( String format) { this.format = format; return this; } - public CatalogedConfigBuilder> catalog() + public CatalogedConfigBuilder> catalog() { return CatalogedConfig.builder(this::catalog); } - public AvroValidatorConfigBuilder catalog( + public AvroConverterConfigBuilder catalog( CatalogedConfig catalog) { if (catalogs == null) @@ -76,6 +76,6 @@ public AvroValidatorConfigBuilder catalog( @Override public T build() { - return mapper.apply(new AvroValidatorConfig(catalogs, subject, format)); + return mapper.apply(new AvroConverterConfig(catalogs, subject, format)); } } diff --git a/incubator/validator-avro/src/main/moditect/module-info.java b/incubator/types-avro/src/main/moditect/module-info.java similarity index 57% rename from incubator/validator-avro/src/main/moditect/module-info.java rename to incubator/types-avro/src/main/moditect/module-info.java index 058ec63edf..8b5c2f61e7 100644 --- a/incubator/validator-avro/src/main/moditect/module-info.java +++ b/incubator/types-avro/src/main/moditect/module-info.java @@ -12,21 +12,21 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -module io.aklivity.zilla.runtime.validator.avro +module io.aklivity.zilla.runtime.types.avro { requires com.fasterxml.jackson.core; requires com.fasterxml.jackson.databind; requires org.slf4j; requires io.aklivity.zilla.runtime.engine; - exports io.aklivity.zilla.runtime.validator.avro.config; + exports io.aklivity.zilla.runtime.types.avro.config; - uses io.aklivity.zilla.runtime.validator.avro.internal.avro.Conversion; - uses io.aklivity.zilla.runtime.validator.avro.internal.avro.LogicalTypes$LogicalTypeFactory; + uses io.aklivity.zilla.runtime.types.avro.internal.avro.Conversion; + uses io.aklivity.zilla.runtime.types.avro.internal.avro.LogicalTypes$LogicalTypeFactory; - provides io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi - with io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfigAdapter; + provides io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi + with io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfigAdapter; - provides io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi - with io.aklivity.zilla.runtime.validator.avro.AvroValidatorFactory; + provides io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi + with io.aklivity.zilla.runtime.types.avro.AvroConverterFactory; } diff --git a/incubator/types-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi b/incubator/types-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi new file mode 100644 index 0000000000..8d64c14028 --- /dev/null +++ b/incubator/types-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfigAdapter diff --git a/incubator/types-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi b/incubator/types-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi new file mode 100644 index 0000000000..9e3f0db6b3 --- /dev/null +++ b/incubator/types-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.types.avro.AvroConverterFactory diff --git a/incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorFactoryTest.java b/incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/AvroConverterFactoryTest.java similarity index 70% rename from incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorFactoryTest.java rename to incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/AvroConverterFactoryTest.java index b4133028c2..f68435d75d 100644 --- a/incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorFactoryTest.java +++ b/incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/AvroConverterFactoryTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro; +package io.aklivity.zilla.runtime.types.avro; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; @@ -22,19 +22,19 @@ import org.junit.Test; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; import io.aklivity.zilla.runtime.engine.test.internal.catalog.TestCatalogHandler; import io.aklivity.zilla.runtime.engine.test.internal.catalog.config.TestCatalogOptionsConfig; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfig; +import io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfig; -public class AvroValidatorFactoryTest +public class AvroConverterFactoryTest { @Test - public void shouldCreateReadValidator() + public void shouldCreateReader() { // GIVEN - ValidatorConfig validator = AvroValidatorConfig.builder() + ConverterConfig converter = AvroConverterConfig.builder() .subject("test-value") .catalog() .name("test0") @@ -49,20 +49,20 @@ public void shouldCreateReadValidator() .id(1) .schema("schema0") .build()); - AvroValidatorFactory factory = new AvroValidatorFactory(); + AvroConverterFactory factory = new AvroConverterFactory(); // WHEN - ValueValidator reader = factory.createValueReader(validator, supplyCatalog); + Converter reader = factory.createReader(converter, supplyCatalog); // THEN - assertThat(reader, instanceOf(AvroReadValidator.class)); + assertThat(reader, instanceOf(AvroReadConverter.class)); } @Test - public void shouldCreateWriteValidator() + public void shouldCreateWriter() { // GIVEN - ValidatorConfig validator = AvroValidatorConfig.builder() + ConverterConfig converter = AvroConverterConfig.builder() .subject("test-value") .catalog() .name("test0") @@ -77,12 +77,12 @@ public void shouldCreateWriteValidator() .id(1) .schema("schema0") .build()); - AvroValidatorFactory factory = new AvroValidatorFactory(); + AvroConverterFactory factory = new AvroConverterFactory(); // WHEN - ValueValidator writer = factory.createValueWriter(validator, supplyCatalog); + Converter writer = factory.createWriter(converter, supplyCatalog); // THEN - assertThat(writer, instanceOf(AvroWriteValidator.class)); + assertThat(writer, instanceOf(AvroWriteConverter.class)); } } diff --git a/incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorTest.java b/incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/AvroConverterTest.java similarity index 68% rename from incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorTest.java rename to incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/AvroConverterTest.java index 211af63b3b..cd6359e440 100644 --- a/incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorTest.java +++ b/incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/AvroConverterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro; +package io.aklivity.zilla.runtime.types.avro; import static io.aklivity.zilla.runtime.engine.EngineConfiguration.ENGINE_DIRECTORY; import static org.junit.Assert.assertEquals; @@ -32,19 +32,18 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogContext; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogConfig; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; import io.aklivity.zilla.runtime.engine.test.internal.catalog.TestCatalog; import io.aklivity.zilla.runtime.engine.test.internal.catalog.config.TestCatalogOptionsConfig; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfig; +import io.aklivity.zilla.runtime.types.avro.config.AvroConverterConfig; -public class AvroValidatorTest +public class AvroConverterTest { private static final String SCHEMA = "{\"fields\":[{\"name\":\"id\",\"type\":\"string\"}," + "{\"name\":\"status\",\"type\":\"string\"}]," + "\"name\":\"Event\",\"namespace\":\"io.aklivity.example\",\"type\":\"record\"}"; - private final AvroValidatorConfig avroConfig = AvroValidatorConfig.builder() + private final AvroConverterConfig avroConfig = AvroConverterConfig.builder() .catalog() .name("test0") .schema() @@ -75,14 +74,14 @@ public void shouldVerifyValidAvroEvent() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - AvroReadValidator validator = new AvroReadValidator(avroConfig, handler); + AvroReadConverter converter = new AvroReadConverter(avroConfig, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x06, 0x69, 0x64, 0x30, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -94,14 +93,14 @@ public void shouldWriteValidAvroEvent() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - AvroWriteValidator validator = new AvroWriteValidator(avroConfig, handler); + AvroWriteConverter converter = new AvroWriteConverter(avroConfig, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x06, 0x69, 0x64, 0x30, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -113,13 +112,13 @@ public void shouldVerifyInvalidAvroEvent() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - AvroReadValidator validator = new AvroReadValidator(avroConfig, handler); + AvroReadConverter converter = new AvroReadConverter(avroConfig, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x06, 0x69, 0x64, 0x30, 0x10}; data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -131,7 +130,7 @@ public void shouldReadAvroEventExpectJson() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - AvroValidatorConfig config = AvroValidatorConfig.builder() + AvroConverterConfig config = AvroConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -142,7 +141,7 @@ public void shouldReadAvroEventExpectJson() .build() .build() .build(); - AvroReadValidator validator = new AvroReadValidator(config, handler); + AvroReadConverter converter = new AvroReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -159,10 +158,10 @@ public void shouldReadAvroEventExpectJson() DirectBuffer expected = new UnsafeBuffer(); expected.wrap(json.getBytes(), 0, json.getBytes().length); - int progress = validator.validate(data, 0, data.capacity(), ValueConsumer.NOP); + int progress = converter.convert(data, 0, data.capacity(), ValueConsumer.NOP); assertEquals(expected.capacity(), progress); - assertEquals(expected.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(expected.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -174,7 +173,7 @@ public void shouldWriteJsonEventExpectAvro() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - AvroValidatorConfig config = AvroValidatorConfig.builder() + AvroConverterConfig config = AvroConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -185,7 +184,7 @@ public void shouldWriteJsonEventExpectAvro() .build() .build() .build(); - AvroWriteValidator validator = new AvroWriteValidator(config, handler); + AvroWriteConverter converter = new AvroWriteConverter(config, handler); DirectBuffer expected = new UnsafeBuffer(); @@ -201,54 +200,10 @@ public void shouldWriteJsonEventExpectAvro() DirectBuffer data = new UnsafeBuffer(); data.wrap(payload.getBytes(), 0, payload.getBytes().length); - int progress = validator.validate(data, 0, data.capacity(), ValueConsumer.NOP); + int progress = converter.convert(data, 0, data.capacity(), ValueConsumer.NOP); assertEquals(expected.capacity(), progress); - assertEquals(expected.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldWriteValidFragmentAvroEvent() - { - CatalogConfig catalogConfig = new CatalogConfig("test0", "test", - TestCatalogOptionsConfig.builder() - .id(9) - .schema(SCHEMA) - .build()); - LongFunction handler = value -> context.attach(catalogConfig); - AvroWriteValidator validator = new AvroWriteValidator(avroConfig, handler); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {0x06, 0x69, 0x64, 0x30, 0x10, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65}; - data.wrap(bytes, 0, bytes.length); - - assertEquals(0, validator.validate(0x00, data, 0, data.capacity(), FragmentConsumer.NOP)); - - assertEquals(data.capacity(), validator.validate(0x01, data, 0, data.capacity(), FragmentConsumer.NOP)); - } - - @Test - public void shouldVerifyValidFragmentAvroEvent() - { - CatalogConfig catalogConfig = new CatalogConfig("test0", "test", - TestCatalogOptionsConfig.builder() - .id(9) - .schema(SCHEMA) - .build()); - LongFunction handler = value -> context.attach(catalogConfig); - AvroReadValidator validator = new AvroReadValidator(avroConfig, handler); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {0x06, 0x69, 0x64, - 0x30, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65}; - data.wrap(bytes, 0, bytes.length); - - assertEquals(0, validator.validate(0x00, data, 0, data.capacity(), FragmentConsumer.NOP)); - - assertEquals(data.capacity(), validator.validate(0x01, data, 0, data.capacity(), FragmentConsumer.NOP)); + assertEquals(expected.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -260,7 +215,7 @@ public void shouldVerifyPaddingLength() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - AvroValidatorConfig config = AvroValidatorConfig.builder() + AvroConverterConfig config = AvroConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -271,7 +226,7 @@ public void shouldVerifyPaddingLength() .build() .build() .build(); - AvroReadValidator validator = new AvroReadValidator(config, handler); + AvroReadConverter converter = new AvroReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -279,7 +234,7 @@ public void shouldVerifyPaddingLength() 0x30, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65}; data.wrap(bytes, 0, bytes.length); - assertEquals(22, validator.padding(data, 0, data.capacity())); + assertEquals(22, converter.padding(data, 0, data.capacity())); } } diff --git a/incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigAdapterTest.java b/incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigAdapterTest.java similarity index 72% rename from incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigAdapterTest.java rename to incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigAdapterTest.java index 0a063b7e17..fd91e8f400 100644 --- a/incubator/validator-avro/src/test/java/io/aklivity/zilla/runtime/validator/avro/config/AvroValidatorConfigAdapterTest.java +++ b/incubator/types-avro/src/test/java/io/aklivity/zilla/runtime/types/avro/config/AvroConverterConfigAdapterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.avro.config; +package io.aklivity.zilla.runtime.types.avro.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Test; -public class AvroValidatorConfigAdapterTest +public class AvroConverterConfigAdapterTest { private Jsonb jsonb; @@ -34,12 +34,12 @@ public class AvroValidatorConfigAdapterTest public void initJson() { JsonbConfig config = new JsonbConfig() - .withAdapters(new AvroValidatorConfigAdapter()); + .withAdapters(new AvroConverterConfigAdapter()); jsonb = JsonbBuilder.create(config); } @Test - public void shouldReadAvroValidator() + public void shouldReadAvroconverter() { // GIVEN String json = @@ -66,28 +66,28 @@ public void shouldReadAvroValidator() "}"; // WHEN - AvroValidatorConfig validator = jsonb.fromJson(json, AvroValidatorConfig.class); + AvroConverterConfig converter = jsonb.fromJson(json, AvroConverterConfig.class); // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.format, equalTo("json")); - assertThat(validator.type, equalTo("avro")); - assertThat(validator.cataloged.size(), equalTo(1)); - assertThat(validator.cataloged.get(0).name, equalTo("test0")); - assertThat(validator.cataloged.get(0).schemas.get(0).strategy, equalTo("topic")); - assertThat(validator.cataloged.get(0).schemas.get(0).version, equalTo("latest")); - assertThat(validator.cataloged.get(0).schemas.get(0).id, equalTo(0)); - assertThat(validator.cataloged.get(0).schemas.get(1).subject, equalTo("cat")); - assertThat(validator.cataloged.get(0).schemas.get(1).strategy, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(1).version, equalTo("latest")); - assertThat(validator.cataloged.get(0).schemas.get(1).id, equalTo(0)); - assertThat(validator.cataloged.get(0).schemas.get(2).strategy, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(2).version, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(2).id, equalTo(42)); + assertThat(converter, not(nullValue())); + assertThat(converter.format, equalTo("json")); + assertThat(converter.type, equalTo("avro")); + assertThat(converter.cataloged.size(), equalTo(1)); + assertThat(converter.cataloged.get(0).name, equalTo("test0")); + assertThat(converter.cataloged.get(0).schemas.get(0).strategy, equalTo("topic")); + assertThat(converter.cataloged.get(0).schemas.get(0).version, equalTo("latest")); + assertThat(converter.cataloged.get(0).schemas.get(0).id, equalTo(0)); + assertThat(converter.cataloged.get(0).schemas.get(1).subject, equalTo("cat")); + assertThat(converter.cataloged.get(0).schemas.get(1).strategy, nullValue()); + assertThat(converter.cataloged.get(0).schemas.get(1).version, equalTo("latest")); + assertThat(converter.cataloged.get(0).schemas.get(1).id, equalTo(0)); + assertThat(converter.cataloged.get(0).schemas.get(2).strategy, nullValue()); + assertThat(converter.cataloged.get(0).schemas.get(2).version, nullValue()); + assertThat(converter.cataloged.get(0).schemas.get(2).id, equalTo(42)); } @Test - public void shouldWriteAvroValidator() + public void shouldWriteAvroconverter() { // GIVEN String expectedJson = @@ -112,7 +112,7 @@ public void shouldWriteAvroValidator() "]" + "}" + "}"; - AvroValidatorConfig validator = AvroValidatorConfig.builder() + AvroConverterConfig converter = AvroConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -131,7 +131,7 @@ public void shouldWriteAvroValidator() .build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(converter); // THEN assertThat(json, not(nullValue())); diff --git a/incubator/validator-core.spec/COPYRIGHT b/incubator/types-core.spec/COPYRIGHT similarity index 100% rename from incubator/validator-core.spec/COPYRIGHT rename to incubator/types-core.spec/COPYRIGHT diff --git a/incubator/validator-core.spec/LICENSE b/incubator/types-core.spec/LICENSE similarity index 100% rename from incubator/validator-core.spec/LICENSE rename to incubator/types-core.spec/LICENSE diff --git a/incubator/validator-core.spec/NOTICE b/incubator/types-core.spec/NOTICE similarity index 100% rename from incubator/validator-core.spec/NOTICE rename to incubator/types-core.spec/NOTICE diff --git a/incubator/validator-core.spec/NOTICE.template b/incubator/types-core.spec/NOTICE.template similarity index 100% rename from incubator/validator-core.spec/NOTICE.template rename to incubator/types-core.spec/NOTICE.template diff --git a/incubator/validator-core.spec/mvnw b/incubator/types-core.spec/mvnw similarity index 100% rename from incubator/validator-core.spec/mvnw rename to incubator/types-core.spec/mvnw diff --git a/incubator/validator-core.spec/mvnw.cmd b/incubator/types-core.spec/mvnw.cmd similarity index 100% rename from incubator/validator-core.spec/mvnw.cmd rename to incubator/types-core.spec/mvnw.cmd diff --git a/incubator/validator-core.spec/pom.xml b/incubator/types-core.spec/pom.xml similarity index 94% rename from incubator/validator-core.spec/pom.xml rename to incubator/types-core.spec/pom.xml index 8f089c8d6e..3b7b0106cb 100644 --- a/incubator/validator-core.spec/pom.xml +++ b/incubator/types-core.spec/pom.xml @@ -12,8 +12,8 @@ ../pom.xml - validator-core.spec - zilla::incubator::validator-core.spec + types-core.spec + zilla::incubator::types-core.spec @@ -79,7 +79,7 @@ ${project.version} core - io.aklivity.zilla.specs.validator.core.internal.types + io.aklivity.zilla.specs.types.core.internal.types @@ -135,7 +135,7 @@ jacoco-maven-plugin - io/aklivity/zilla/specs/validator/core/internal/types/**/*.class + io/aklivity/zilla/specs/types/core/internal/types/**/*.class diff --git a/incubator/validator-core.spec/src/main/moditect/module-info.java b/incubator/types-core.spec/src/main/moditect/module-info.java similarity index 92% rename from incubator/validator-core.spec/src/main/moditect/module-info.java rename to incubator/types-core.spec/src/main/moditect/module-info.java index 89567c9647..5f04a35bed 100644 --- a/incubator/validator-core.spec/src/main/moditect/module-info.java +++ b/incubator/types-core.spec/src/main/moditect/module-info.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -open module io.aklivity.zilla.specs.validator.core +open module io.aklivity.zilla.specs.types.core { requires transitive io.aklivity.zilla.specs.engine; } diff --git a/incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/config/string.validator.yaml b/incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/config/string.converter.yaml similarity index 100% rename from incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/config/string.validator.yaml rename to incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/config/string.converter.yaml diff --git a/incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/schema/integer.schema.patch.json b/incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/schema/integer.schema.patch.json similarity index 56% rename from incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/schema/integer.schema.patch.json rename to incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/schema/integer.schema.patch.json index 4e671fa357..9c06f5fd4b 100644 --- a/incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/schema/integer.schema.patch.json +++ b/incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/schema/integer.schema.patch.json @@ -1,7 +1,7 @@ [ { "op": "add", - "path": "/$defs/validator/types/enum/-", + "path": "/$defs/converter/types/enum/-", "value": "integer" } ] diff --git a/incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/schema/string.schema.patch.json b/incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/schema/string.schema.patch.json similarity index 90% rename from incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/schema/string.schema.patch.json rename to incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/schema/string.schema.patch.json index 566c74e1ff..d295f406e6 100644 --- a/incubator/validator-core.spec/src/main/scripts/io/aklivity/zilla/specs/validator/core/schema/string.schema.patch.json +++ b/incubator/types-core.spec/src/main/scripts/io/aklivity/zilla/specs/types/core/schema/string.schema.patch.json @@ -1,12 +1,12 @@ [ { "op": "add", - "path": "/$defs/validator/types/enum/-", + "path": "/$defs/converter/types/enum/-", "value": "string" }, { "op": "add", - "path": "/$defs/validator/allOf/-", + "path": "/$defs/converter/allOf/-", "value": { "if": diff --git a/incubator/validator-core.spec/src/test/java/io/aklivity/zilla/specs/validator/core/config/SchemaTest.java b/incubator/types-core.spec/src/test/java/io/aklivity/zilla/specs/types/core/config/SchemaTest.java similarity index 80% rename from incubator/validator-core.spec/src/test/java/io/aklivity/zilla/specs/validator/core/config/SchemaTest.java rename to incubator/types-core.spec/src/test/java/io/aklivity/zilla/specs/types/core/config/SchemaTest.java index 092a0d830a..2217f7560a 100644 --- a/incubator/validator-core.spec/src/test/java/io/aklivity/zilla/specs/validator/core/config/SchemaTest.java +++ b/incubator/types-core.spec/src/test/java/io/aklivity/zilla/specs/types/core/config/SchemaTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.specs.validator.core.config; +package io.aklivity.zilla.specs.types.core.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.not; @@ -30,13 +30,13 @@ public class SchemaTest @Rule public final ConfigSchemaRule schema = new ConfigSchemaRule() .schemaPatch("io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/validator/core/schema/string.schema.patch.json") - .configurationRoot("io/aklivity/zilla/specs/validator/core/config"); + .schemaPatch("io/aklivity/zilla/specs/types/core/schema/string.schema.patch.json") + .configurationRoot("io/aklivity/zilla/specs/types/core/config"); @Test public void shouldValidateCatalog() { - JsonObject config = schema.validate("string.validator.yaml"); + JsonObject config = schema.validate("string.converter.yaml"); assertThat(config, not(nullValue())); } diff --git a/incubator/validator-core/COPYRIGHT b/incubator/types-core/COPYRIGHT similarity index 100% rename from incubator/validator-core/COPYRIGHT rename to incubator/types-core/COPYRIGHT diff --git a/incubator/validator-core/LICENSE b/incubator/types-core/LICENSE similarity index 100% rename from incubator/validator-core/LICENSE rename to incubator/types-core/LICENSE diff --git a/incubator/validator-core/NOTICE b/incubator/types-core/NOTICE similarity index 100% rename from incubator/validator-core/NOTICE rename to incubator/types-core/NOTICE diff --git a/incubator/validator-core/NOTICE.template b/incubator/types-core/NOTICE.template similarity index 100% rename from incubator/validator-core/NOTICE.template rename to incubator/types-core/NOTICE.template diff --git a/incubator/validator-core/mvnw b/incubator/types-core/mvnw similarity index 100% rename from incubator/validator-core/mvnw rename to incubator/types-core/mvnw diff --git a/incubator/validator-core/mvnw.cmd b/incubator/types-core/mvnw.cmd similarity index 100% rename from incubator/validator-core/mvnw.cmd rename to incubator/types-core/mvnw.cmd diff --git a/incubator/validator-core/pom.xml b/incubator/types-core/pom.xml similarity index 88% rename from incubator/validator-core/pom.xml rename to incubator/types-core/pom.xml index 4c5ad82543..760f48abbd 100644 --- a/incubator/validator-core/pom.xml +++ b/incubator/types-core/pom.xml @@ -12,8 +12,8 @@ ../pom.xml - validator-core - zilla::incubator::validator-core + types-core + zilla::incubator::types-core @@ -33,7 +33,7 @@ ${project.groupId} - validator-core.spec + types-core.spec ${project.version} provided @@ -79,7 +79,7 @@ ${project.version} core - io.aklivity.zilla.runtime.validator.core.internal.types + io.aklivity.zilla.runtime.types.core.internal.types @@ -116,16 +116,16 @@ ${project.groupId} - validator-core.spec + types-core.spec - ^\Qio/aklivity/zilla/specs/validator/core/\E - io/aklivity/zilla/runtime/validator/core/ + ^\Qio/aklivity/zilla/specs/types/core/\E + io/aklivity/zilla/runtime/types/core/ - io/aklivity/zilla/specs/validator/core/schema/*.schema.patch.json + io/aklivity/zilla/specs/types/core/schema/*.schema.patch.json ${project.build.directory}/classes @@ -155,7 +155,7 @@ jacoco-maven-plugin - io/aklivity/zilla/runtime/validator/core/internal/types/**/*.class + io/aklivity/zilla/runtime/types/core/internal/types/**/*.class diff --git a/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/IntegerConverter.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/IntegerConverter.java new file mode 100644 index 0000000000..cae96e6e02 --- /dev/null +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/IntegerConverter.java @@ -0,0 +1,46 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.core; + +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfig; + +public class IntegerConverter implements Converter +{ + public IntegerConverter( + IntegerConverterConfig config) + { + } + + @Override + public int convert( + DirectBuffer data, + int index, + int length, + ValueConsumer next) + { + boolean valid = length == 4; + + if (valid) + { + next.accept(data, index, length); + } + + return valid ? length : -1; + } +} diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorFactory.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/IntegerConverterFactory.java similarity index 51% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorFactory.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/IntegerConverterFactory.java index 6c330fdba0..f531598f08 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorFactory.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/IntegerConverterFactory.java @@ -12,19 +12,18 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core; +package io.aklivity.zilla.runtime.types.core; import java.net.URL; import java.util.function.LongFunction; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; +import io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfig; -public class IntegerValidatorFactory implements ValidatorFactorySpi +public class IntegerConverterFactory implements ConverterFactorySpi { @Override public String type() @@ -39,40 +38,24 @@ public URL schema() } @Override - public ValueValidator createValueReader( - ValidatorConfig config, + public Converter createReader( + ConverterConfig config, LongFunction supplyCatalog) { return create(config); } @Override - public ValueValidator createValueWriter( - ValidatorConfig config, + public Converter createWriter( + ConverterConfig config, LongFunction supplyCatalog) { return create(config); } - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return create(config); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return create(config); - } - - private IntegerValidator create( - ValidatorConfig config) + private IntegerConverter create( + ConverterConfig config) { - return new IntegerValidator(IntegerValidatorConfig.class.cast(config)); + return new IntegerConverter(IntegerConverterConfig.class.cast(config)); } } diff --git a/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringConverter.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringConverter.java new file mode 100644 index 0000000000..60a29b33dd --- /dev/null +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringConverter.java @@ -0,0 +1,50 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.core; + +import org.agrona.DirectBuffer; + +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.core.config.StringConverterConfig; + +public class StringConverter implements Converter +{ + private StringEncoding encoding; + + public StringConverter( + StringConverterConfig config) + { + this.encoding = StringEncoding.of(config.encoding); + } + + @Override + public int convert( + DirectBuffer data, + int index, + int length, + ValueConsumer next) + { + int valLength = -1; + + if (encoding.validate(data, index, length)) + { + next.accept(data, index, length); + valLength = length; + } + + return valLength; + } +} diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringValidatorFactory.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringConverterFactory.java similarity index 51% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringValidatorFactory.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringConverterFactory.java index d4f84f85ee..c75902c5ec 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringValidatorFactory.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringConverterFactory.java @@ -12,19 +12,18 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core; +package io.aklivity.zilla.runtime.types.core; import java.net.URL; import java.util.function.LongFunction; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; +import io.aklivity.zilla.runtime.types.core.config.StringConverterConfig; -public final class StringValidatorFactory implements ValidatorFactorySpi +public final class StringConverterFactory implements ConverterFactorySpi { @Override public String type() @@ -39,40 +38,24 @@ public URL schema() } @Override - public ValueValidator createValueReader( - ValidatorConfig config, + public Converter createReader( + ConverterConfig config, LongFunction supplyCatalog) { return create(config); } @Override - public ValueValidator createValueWriter( - ValidatorConfig config, + public Converter createWriter( + ConverterConfig config, LongFunction supplyCatalog) { return create(config); } - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return create(config); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return create(config); - } - - private StringValidator create( - ValidatorConfig config) + private StringConverter create( + ConverterConfig config) { - return new StringValidator(StringValidatorConfig.class.cast(config)); + return new StringConverter(StringConverterConfig.class.cast(config)); } } diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringEncoding.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringEncoding.java similarity index 98% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringEncoding.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringEncoding.java index 3807690c7f..e0201673bb 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringEncoding.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/StringEncoding.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core; +package io.aklivity.zilla.runtime.types.core; import org.agrona.DirectBuffer; diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfig.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfig.java similarity index 57% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfig.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfig.java index 27a4400fb4..5a178cac8c 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfig.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfig.java @@ -12,27 +12,27 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import java.util.function.Function; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public class IntegerValidatorConfig extends ValidatorConfig +public class IntegerConverterConfig extends ConverterConfig { - public IntegerValidatorConfig() + public IntegerConverterConfig() { super("integer"); } - public static IntegerValidatorConfigBuilder builder( - Function mapper) + public static IntegerConverterConfigBuilder builder( + Function mapper) { - return new IntegerValidatorConfigBuilder<>(mapper::apply); + return new IntegerConverterConfigBuilder<>(mapper::apply); } - public static IntegerValidatorConfigBuilder builder() + public static IntegerConverterConfigBuilder builder() { - return new IntegerValidatorConfigBuilder<>(IntegerValidatorConfig.class::cast); + return new IntegerConverterConfigBuilder<>(IntegerConverterConfig.class::cast); } } diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigAdapter.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigAdapter.java similarity index 68% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigAdapter.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigAdapter.java index 6a7927ff67..4542df0094 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigAdapter.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigAdapter.java @@ -12,16 +12,16 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import jakarta.json.Json; import jakarta.json.JsonValue; import jakarta.json.bind.adapter.JsonbAdapter; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; -public class IntegerValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter +public class IntegerConverterConfigAdapter implements ConverterConfigAdapterSpi, JsonbAdapter { @Override public String type() @@ -31,15 +31,15 @@ public String type() @Override public JsonValue adaptToJson( - ValidatorConfig options) + ConverterConfig options) { return Json.createValue(type()); } @Override - public ValidatorConfig adaptFromJson( + public ConverterConfig adaptFromJson( JsonValue object) { - return new IntegerValidatorConfig(); + return new IntegerConverterConfig(); } } diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigBuilder.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigBuilder.java similarity index 63% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigBuilder.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigBuilder.java index 016551f448..ff6abcb5fb 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigBuilder.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigBuilder.java @@ -12,32 +12,32 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -public class IntegerValidatorConfigBuilder extends ConfigBuilder> +public class IntegerConverterConfigBuilder extends ConfigBuilder> { - private final Function mapper; + private final Function mapper; - IntegerValidatorConfigBuilder( - Function mapper) + IntegerConverterConfigBuilder( + Function mapper) { this.mapper = mapper; } @Override @SuppressWarnings("unchecked") - protected Class> thisType() + protected Class> thisType() { - return (Class>) getClass(); + return (Class>) getClass(); } @Override public T build() { - return mapper.apply(new IntegerValidatorConfig()); + return mapper.apply(new IntegerConverterConfig()); } } diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfig.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfig.java similarity index 64% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfig.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfig.java index 7d2af19e7b..dcb8c3eb3b 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfig.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfig.java @@ -12,33 +12,33 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import java.util.function.Function; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public final class StringValidatorConfig extends ValidatorConfig +public final class StringConverterConfig extends ConverterConfig { public static final String DEFAULT_ENCODING = "utf_8"; public final String encoding; - public StringValidatorConfig( + public StringConverterConfig( String encoding) { super("string"); this.encoding = encoding != null ? encoding : DEFAULT_ENCODING; } - public static StringValidatorConfigBuilder builder( - Function mapper) + public static StringConverterConfigBuilder builder( + Function mapper) { - return new StringValidatorConfigBuilder<>(mapper::apply); + return new StringConverterConfigBuilder<>(mapper::apply); } - public static StringValidatorConfigBuilder builder() + public static StringConverterConfigBuilder builder() { - return new StringValidatorConfigBuilder<>(StringValidatorConfig.class::cast); + return new StringConverterConfigBuilder<>(StringConverterConfig.class::cast); } } diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigAdapter.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigAdapter.java similarity index 66% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigAdapter.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigAdapter.java index 5536b28f2e..f141a0fa01 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigAdapter.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigAdapter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import jakarta.json.Json; import jakarta.json.JsonObject; @@ -21,26 +21,26 @@ import jakarta.json.JsonValue; import jakarta.json.bind.adapter.JsonbAdapter; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; -public final class StringValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter +public final class StringConverterConfigAdapter implements ConverterConfigAdapterSpi, JsonbAdapter { private static final String TYPE_NAME = "type"; private static final String ENCODING_NAME = "encoding"; @Override public JsonValue adaptToJson( - ValidatorConfig config) + ConverterConfig config) { JsonValue result; - String encoding = ((StringValidatorConfig) config).encoding; - if (encoding != null && !encoding.isEmpty() && !encoding.equals(StringValidatorConfig.DEFAULT_ENCODING)) + String encoding = ((StringConverterConfig) config).encoding; + if (encoding != null && !encoding.isEmpty() && !encoding.equals(StringConverterConfig.DEFAULT_ENCODING)) { - JsonObjectBuilder validator = Json.createObjectBuilder(); - validator.add(TYPE_NAME, type()); - validator.add(ENCODING_NAME, encoding); - result = validator.build(); + JsonObjectBuilder converter = Json.createObjectBuilder(); + converter.add(TYPE_NAME, type()); + converter.add(ENCODING_NAME, encoding); + result = converter.build(); } else { @@ -50,13 +50,13 @@ public JsonValue adaptToJson( } @Override - public StringValidatorConfig adaptFromJson( + public StringConverterConfig adaptFromJson( JsonValue value) { - StringValidatorConfig result = null; + StringConverterConfig result = null; if (value instanceof JsonString) { - result = StringValidatorConfig.builder().build(); + result = StringConverterConfig.builder().build(); } else if (value instanceof JsonObject) { @@ -64,7 +64,7 @@ else if (value instanceof JsonObject) String encoding = object.containsKey(ENCODING_NAME) ? object.getString(ENCODING_NAME) : null; - result = new StringValidatorConfig(encoding); + result = new StringConverterConfig(encoding); } else { diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigBuilder.java b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigBuilder.java similarity index 63% rename from incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigBuilder.java rename to incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigBuilder.java index ce700243eb..b2bde4368e 100644 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigBuilder.java +++ b/incubator/types-core/src/main/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigBuilder.java @@ -12,32 +12,32 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -public class StringValidatorConfigBuilder extends ConfigBuilder> +public class StringConverterConfigBuilder extends ConfigBuilder> { - private final Function mapper; + private final Function mapper; private String encoding; - StringValidatorConfigBuilder( - Function mapper) + StringConverterConfigBuilder( + Function mapper) { this.mapper = mapper; } @Override @SuppressWarnings("unchecked") - protected Class> thisType() + protected Class> thisType() { - return (Class>) getClass(); + return (Class>) getClass(); } - public StringValidatorConfigBuilder encoding( + public StringConverterConfigBuilder encoding( String encoding) { this.encoding = encoding; @@ -47,6 +47,6 @@ public StringValidatorConfigBuilder encoding( @Override public T build() { - return mapper.apply(new StringValidatorConfig(encoding)); + return mapper.apply(new StringConverterConfig(encoding)); } } diff --git a/incubator/validator-core/src/main/moditect/module-info.java b/incubator/types-core/src/main/moditect/module-info.java similarity index 53% rename from incubator/validator-core/src/main/moditect/module-info.java rename to incubator/types-core/src/main/moditect/module-info.java index 5f4ad061d0..f016e1f449 100644 --- a/incubator/validator-core/src/main/moditect/module-info.java +++ b/incubator/types-core/src/main/moditect/module-info.java @@ -12,17 +12,17 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -module io.aklivity.zilla.runtime.validator.core +module io.aklivity.zilla.runtime.types.core { requires io.aklivity.zilla.runtime.engine; - exports io.aklivity.zilla.runtime.validator.core.config; + exports io.aklivity.zilla.runtime.types.core.config; - provides io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi - with io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfigAdapter, - io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfigAdapter; + provides io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi + with io.aklivity.zilla.runtime.types.core.config.StringConverterConfigAdapter, + io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfigAdapter; - provides io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi - with io.aklivity.zilla.runtime.validator.core.StringValidatorFactory, - io.aklivity.zilla.runtime.validator.core.IntegerValidatorFactory; + provides io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi + with io.aklivity.zilla.runtime.types.core.StringConverterFactory, + io.aklivity.zilla.runtime.types.core.IntegerConverterFactory; } diff --git a/incubator/types-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi b/incubator/types-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi new file mode 100644 index 0000000000..9b91029714 --- /dev/null +++ b/incubator/types-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi @@ -0,0 +1,2 @@ +io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfigAdapter +io.aklivity.zilla.runtime.types.core.config.StringConverterConfigAdapter diff --git a/incubator/types-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi b/incubator/types-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi new file mode 100644 index 0000000000..d6be8e6205 --- /dev/null +++ b/incubator/types-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi @@ -0,0 +1,2 @@ +io.aklivity.zilla.runtime.types.core.IntegerConverterFactory +io.aklivity.zilla.runtime.types.core.StringConverterFactory diff --git a/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/IntegerConverterFactoryTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/IntegerConverterFactoryTest.java new file mode 100644 index 0000000000..a38e6178ec --- /dev/null +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/IntegerConverterFactoryTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.core; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; + +import java.util.function.LongFunction; + +import org.junit.Test; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfig; + +public class IntegerConverterFactoryTest +{ + @Test + @SuppressWarnings("unchecked") + public void shouldCreateReader() + { + // GIVEN + ConverterConfig converter = new IntegerConverterConfig(); + LongFunction supplyCatalog = mock(LongFunction.class); + IntegerConverterFactory factory = new IntegerConverterFactory(); + + // WHEN + Converter reader = factory.createReader(converter, supplyCatalog); + + // THEN + assertThat(reader, instanceOf(IntegerConverter.class)); + } + + @Test + @SuppressWarnings("unchecked") + public void shouldCreateWriter() + { + // GIVEN + ConverterConfig converter = new IntegerConverterConfig(); + LongFunction supplyCatalog = mock(LongFunction.class); + IntegerConverterFactory factory = new IntegerConverterFactory(); + + // WHEN + Converter writer = factory.createWriter(converter, supplyCatalog); + + // THEN + assertThat(writer, instanceOf(IntegerConverter.class)); + } +} diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/IntegerConverterTest.java similarity index 51% rename from incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorTest.java rename to incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/IntegerConverterTest.java index 0541f57b67..852a916464 100644 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorTest.java +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/IntegerConverterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core; +package io.aklivity.zilla.runtime.types.core; import static org.junit.Assert.assertEquals; @@ -20,14 +20,13 @@ import org.agrona.concurrent.UnsafeBuffer; import org.junit.Test; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.core.config.IntegerConverterConfig; -public class IntegerValidatorTest +public class IntegerConverterTest { - private final IntegerValidatorConfig config = new IntegerValidatorConfig(); - private final IntegerValidator validator = new IntegerValidator(config); + private final IntegerConverterConfig config = new IntegerConverterConfig(); + private final IntegerConverter converter = new IntegerConverter(config); @Test public void shouldVerifyValidInteger() @@ -36,7 +35,7 @@ public void shouldVerifyValidInteger() byte[] bytes = {0, 0, 0, 42}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -46,19 +45,6 @@ public void shouldVerifyInvalidInteger() byte[] bytes = "Not an Integer".getBytes(); data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyValidFragmentInteger() - { - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {0, 0, 0, 42}; - data.wrap(bytes, 0, bytes.length); - - assertEquals(0, validator.validate(0x00, data, 0, data.capacity(), FragmentConsumer.NOP)); - - assertEquals(data.capacity(), validator.validate(0x01, data, 0, data.capacity(), FragmentConsumer.NOP)); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } } diff --git a/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringConverterFactoryTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringConverterFactoryTest.java new file mode 100644 index 0000000000..3a768640e4 --- /dev/null +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringConverterFactoryTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.core; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; + +import java.util.function.LongFunction; + +import org.junit.Test; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.types.core.config.StringConverterConfig; + +public class StringConverterFactoryTest +{ + @Test + @SuppressWarnings("unchecked") + public void shouldCreateReader() + { + // GIVEN + ConverterConfig converter = new StringConverterConfig("utf_8"); + LongFunction supplyCatalog = mock(LongFunction.class); + StringConverterFactory factory = new StringConverterFactory(); + + // WHEN + Converter reader = factory.createReader(converter, supplyCatalog); + + // THEN + assertThat(reader, instanceOf(StringConverter.class)); + } + + @Test + @SuppressWarnings("unchecked") + public void shouldCreateWriter() + { + // GIVEN + ConverterConfig converter = new StringConverterConfig("utf_8"); + LongFunction supplyCatalog = mock(LongFunction.class); + StringConverterFactory factory = new StringConverterFactory(); + + // WHEN + Converter writer = factory.createWriter(converter, supplyCatalog); + + // THEN + assertThat(writer, instanceOf(StringConverter.class)); + } +} diff --git a/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringConverterTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringConverterTest.java new file mode 100644 index 0000000000..43253ac244 --- /dev/null +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringConverterTest.java @@ -0,0 +1,150 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.core; + +import static org.junit.Assert.assertEquals; + +import java.nio.charset.StandardCharsets; + +import org.agrona.DirectBuffer; +import org.agrona.concurrent.UnsafeBuffer; +import org.junit.Test; + +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.core.config.StringConverterConfig; + +public class StringConverterTest +{ + @Test + public void shouldVerifyValidUtf8() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_8") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = "Valid String".getBytes(); + data.wrap(bytes, 0, bytes.length); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyInvalidUtf8() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_8") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = {(byte) 0xc0}; + data.wrap(bytes, 0, bytes.length); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyValidUtf16() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_16") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = "Valid String".getBytes(StandardCharsets.UTF_16); + data.wrap(bytes, 0, bytes.length); + + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyIncompleteUtf16() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_16") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = {0x48}; + data.wrap(bytes, 0, bytes.length); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyIncompleteSurrogatePairUtf16() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_16") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = {(byte) 0xD8, (byte) 0x00}; + data.wrap(bytes, 0, bytes.length); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyInvalidSecondSurrogateUtf16() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_16") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = {(byte) 0xDC, (byte) 0x01}; + data.wrap(bytes, 0, bytes.length); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyUnexpectedSecondSurrogateUtf16() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_16") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = {(byte) 0xDC, (byte) 0x80}; + data.wrap(bytes, 0, bytes.length); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } + + @Test + public void shouldVerifyValidMixedUtf16() + { + StringConverterConfig config = StringConverterConfig.builder() + .encoding("utf_16") + .build(); + StringConverter converter = new StringConverter(config); + + DirectBuffer data = new UnsafeBuffer(); + + byte[] bytes = {0, 72, 0, 101, 0, 108, 0, 108, 0, 111, 65, 66, 67}; + data.wrap(bytes, 0, bytes.length); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); + } +} diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringEncodingTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringEncodingTest.java similarity index 97% rename from incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringEncodingTest.java rename to incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringEncodingTest.java index e0cdf0beff..223689b0e6 100644 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringEncodingTest.java +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/StringEncodingTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core; +package io.aklivity.zilla.runtime.types.core; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigAdapterTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigAdapterTest.java similarity index 72% rename from incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigAdapterTest.java rename to incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigAdapterTest.java index da6befc886..6a87275cd9 100644 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/IntegerValidatorConfigAdapterTest.java +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/config/IntegerConverterConfigAdapterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Test; -public class IntegerValidatorConfigAdapterTest +public class IntegerConverterConfigAdapterTest { private Jsonb jsonb; @@ -34,12 +34,12 @@ public class IntegerValidatorConfigAdapterTest public void initJson() { JsonbConfig config = new JsonbConfig() - .withAdapters(new IntegerValidatorConfigAdapter()); + .withAdapters(new IntegerConverterConfigAdapter()); jsonb = JsonbBuilder.create(config); } @Test - public void shouldReadIntegerValidator() + public void shouldReadIntegerconverter() { // GIVEN String json = @@ -48,22 +48,22 @@ public void shouldReadIntegerValidator() "}"; // WHEN - IntegerValidatorConfig validator = jsonb.fromJson(json, IntegerValidatorConfig.class); + IntegerConverterConfig converter = jsonb.fromJson(json, IntegerConverterConfig.class); // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.type, equalTo("integer")); + assertThat(converter, not(nullValue())); + assertThat(converter.type, equalTo("integer")); } @Test - public void shouldWriteIntegerValidator() + public void shouldWriteIntegerconverter() { // GIVEN String expectedJson = "\"integer\""; - IntegerValidatorConfig validator = IntegerValidatorConfig.builder().build(); + IntegerConverterConfig converter = IntegerConverterConfig.builder().build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(converter); // THEN assertThat(json, not(nullValue())); diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigAdapterTest.java b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigAdapterTest.java similarity index 71% rename from incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigAdapterTest.java rename to incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigAdapterTest.java index 89ab178016..44ec73278a 100644 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/StringValidatorConfigAdapterTest.java +++ b/incubator/types-core/src/test/java/io/aklivity/zilla/runtime/types/core/config/StringConverterConfigAdapterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.core.config; +package io.aklivity.zilla.runtime.types.core.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Test; -public class StringValidatorConfigAdapterTest +public class StringConverterConfigAdapterTest { private Jsonb jsonb; @@ -34,12 +34,12 @@ public class StringValidatorConfigAdapterTest public void initJson() { JsonbConfig config = new JsonbConfig() - .withAdapters(new StringValidatorConfigAdapter()); + .withAdapters(new StringConverterConfigAdapter()); jsonb = JsonbBuilder.create(config); } @Test - public void shouldReadStringValidator() + public void shouldReadStringconverter() { // GIVEN String json = @@ -49,23 +49,23 @@ public void shouldReadStringValidator() "}"; // WHEN - StringValidatorConfig validator = jsonb.fromJson(json, StringValidatorConfig.class); + StringConverterConfig converter = jsonb.fromJson(json, StringConverterConfig.class); // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.type, equalTo("string")); - assertThat(validator.encoding, equalTo("utf_8")); + assertThat(converter, not(nullValue())); + assertThat(converter.type, equalTo("string")); + assertThat(converter.encoding, equalTo("utf_8")); } @Test - public void shouldWriteDefaultEncodingStringValidator() + public void shouldWriteDefaultEncodingStringconverter() { // GIVEN String expectedJson = "\"string\""; - StringValidatorConfig validator = StringValidatorConfig.builder().build(); + StringConverterConfig converter = StringConverterConfig.builder().build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(converter); // THEN assertThat(json, not(nullValue())); @@ -73,7 +73,7 @@ public void shouldWriteDefaultEncodingStringValidator() } @Test - public void shouldWriteStringValidator() + public void shouldWriteStringconverter() { // GIVEN String expectedJson = @@ -81,12 +81,12 @@ public void shouldWriteStringValidator() "\"type\":\"string\"," + "\"encoding\":\"utf_16\"" + "}"; - StringValidatorConfig validator = StringValidatorConfig.builder() + StringConverterConfig converter = StringConverterConfig.builder() .encoding("utf_16") .build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(converter); // THEN assertThat(json, not(nullValue())); diff --git a/incubator/validator-json.spec/COPYRIGHT b/incubator/types-json.spec/COPYRIGHT similarity index 100% rename from incubator/validator-json.spec/COPYRIGHT rename to incubator/types-json.spec/COPYRIGHT diff --git a/incubator/validator-json.spec/LICENSE b/incubator/types-json.spec/LICENSE similarity index 100% rename from incubator/validator-json.spec/LICENSE rename to incubator/types-json.spec/LICENSE diff --git a/incubator/validator-json.spec/NOTICE b/incubator/types-json.spec/NOTICE similarity index 100% rename from incubator/validator-json.spec/NOTICE rename to incubator/types-json.spec/NOTICE diff --git a/incubator/validator-json.spec/NOTICE.template b/incubator/types-json.spec/NOTICE.template similarity index 100% rename from incubator/validator-json.spec/NOTICE.template rename to incubator/types-json.spec/NOTICE.template diff --git a/incubator/validator-json.spec/mvnw b/incubator/types-json.spec/mvnw similarity index 100% rename from incubator/validator-json.spec/mvnw rename to incubator/types-json.spec/mvnw diff --git a/incubator/validator-json.spec/mvnw.cmd b/incubator/types-json.spec/mvnw.cmd similarity index 100% rename from incubator/validator-json.spec/mvnw.cmd rename to incubator/types-json.spec/mvnw.cmd diff --git a/incubator/validator-json.spec/pom.xml b/incubator/types-json.spec/pom.xml similarity index 97% rename from incubator/validator-json.spec/pom.xml rename to incubator/types-json.spec/pom.xml index 939483e174..40dbfc7248 100644 --- a/incubator/validator-json.spec/pom.xml +++ b/incubator/types-json.spec/pom.xml @@ -12,8 +12,8 @@ ../pom.xml -validator-json.spec -zilla::incubator::validator-json.spec +types-json.spec +zilla::incubator::types-json.spec diff --git a/incubator/validator-json.spec/src/main/moditect/module-info.java b/incubator/types-json.spec/src/main/moditect/module-info.java similarity index 92% rename from incubator/validator-json.spec/src/main/moditect/module-info.java rename to incubator/types-json.spec/src/main/moditect/module-info.java index 08a27de593..ffcdbe4fd1 100644 --- a/incubator/validator-json.spec/src/main/moditect/module-info.java +++ b/incubator/types-json.spec/src/main/moditect/module-info.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -open module io.aklivity.zilla.specs.validator.json +open module io.aklivity.zilla.specs.types.json { requires transitive io.aklivity.zilla.specs.engine; } diff --git a/incubator/validator-json.spec/src/main/scripts/io/aklivity/zilla/specs/validator/json/config/validator.yaml b/incubator/types-json.spec/src/main/scripts/io/aklivity/zilla/specs/types/json/config/converter.yaml similarity index 100% rename from incubator/validator-json.spec/src/main/scripts/io/aklivity/zilla/specs/validator/json/config/validator.yaml rename to incubator/types-json.spec/src/main/scripts/io/aklivity/zilla/specs/types/json/config/converter.yaml diff --git a/incubator/validator-json.spec/src/main/scripts/io/aklivity/zilla/specs/validator/json/schema/json.schema.patch.json b/incubator/types-json.spec/src/main/scripts/io/aklivity/zilla/specs/types/json/schema/json.schema.patch.json similarity index 98% rename from incubator/validator-json.spec/src/main/scripts/io/aklivity/zilla/specs/validator/json/schema/json.schema.patch.json rename to incubator/types-json.spec/src/main/scripts/io/aklivity/zilla/specs/types/json/schema/json.schema.patch.json index 25c0b507d2..f33bb24382 100644 --- a/incubator/validator-json.spec/src/main/scripts/io/aklivity/zilla/specs/validator/json/schema/json.schema.patch.json +++ b/incubator/types-json.spec/src/main/scripts/io/aklivity/zilla/specs/types/json/schema/json.schema.patch.json @@ -1,12 +1,12 @@ [ { "op": "add", - "path": "/$defs/validator/types/enum/-", + "path": "/$defs/converter/types/enum/-", "value": "json" }, { "op": "add", - "path": "/$defs/validator/allOf/-", + "path": "/$defs/converter/allOf/-", "value": { "if": diff --git a/incubator/validator-avro.spec/src/test/java/io/aklivity/zilla/specs/validator/avro/config/SchemaTest.java b/incubator/types-json.spec/src/test/java/io/aklivity/zilla/specs/types/json/config/SchemaTest.java similarity index 81% rename from incubator/validator-avro.spec/src/test/java/io/aklivity/zilla/specs/validator/avro/config/SchemaTest.java rename to incubator/types-json.spec/src/test/java/io/aklivity/zilla/specs/types/json/config/SchemaTest.java index 584ded5d99..94764e5d0e 100644 --- a/incubator/validator-avro.spec/src/test/java/io/aklivity/zilla/specs/validator/avro/config/SchemaTest.java +++ b/incubator/types-json.spec/src/test/java/io/aklivity/zilla/specs/types/json/config/SchemaTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.specs.validator.avro.config; +package io.aklivity.zilla.specs.types.json.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.not; @@ -31,13 +31,13 @@ public class SchemaTest public final ConfigSchemaRule schema = new ConfigSchemaRule() .schemaPatch("io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/validator/avro/schema/avro.schema.patch.json") - .configurationRoot("io/aklivity/zilla/specs/validator/avro/config"); + .schemaPatch("io/aklivity/zilla/specs/types/json/schema/json.schema.patch.json") + .configurationRoot("io/aklivity/zilla/specs/types/json/config"); @Test public void shouldValidateCatalog() { - JsonObject config = schema.validate("validator.yaml"); + JsonObject config = schema.validate("converter.yaml"); assertThat(config, not(nullValue())); } diff --git a/incubator/validator-json/COPYRIGHT b/incubator/types-json/COPYRIGHT similarity index 100% rename from incubator/validator-json/COPYRIGHT rename to incubator/types-json/COPYRIGHT diff --git a/incubator/validator-json/LICENSE b/incubator/types-json/LICENSE similarity index 100% rename from incubator/validator-json/LICENSE rename to incubator/types-json/LICENSE diff --git a/incubator/validator-json/NOTICE b/incubator/types-json/NOTICE similarity index 100% rename from incubator/validator-json/NOTICE rename to incubator/types-json/NOTICE diff --git a/incubator/validator-json/NOTICE.template b/incubator/types-json/NOTICE.template similarity index 100% rename from incubator/validator-json/NOTICE.template rename to incubator/types-json/NOTICE.template diff --git a/incubator/validator-json/mvnw b/incubator/types-json/mvnw similarity index 100% rename from incubator/validator-json/mvnw rename to incubator/types-json/mvnw diff --git a/incubator/validator-json/mvnw.cmd b/incubator/types-json/mvnw.cmd similarity index 100% rename from incubator/validator-json/mvnw.cmd rename to incubator/types-json/mvnw.cmd diff --git a/incubator/validator-json/pom.xml b/incubator/types-json/pom.xml similarity index 93% rename from incubator/validator-json/pom.xml rename to incubator/types-json/pom.xml index 2fa253de7f..0614fac44e 100644 --- a/incubator/validator-json/pom.xml +++ b/incubator/types-json/pom.xml @@ -10,8 +10,8 @@ ../pom.xml -validator-json -zilla::incubator::validator-json +types-json +zilla::incubator::types-json @@ -31,7 +31,7 @@ ${project.groupId} - validator-json.spec + types-json.spec ${project.version} provided @@ -98,16 +98,16 @@ ${project.groupId} - validator-json.spec + types-json.spec - ^\Qio/aklivity/zilla/specs/validator/json/\E - io/aklivity/zilla/runtime/validator/json/ + ^\Qio/aklivity/zilla/specs/types/json/\E + io/aklivity/zilla/runtime/types/json/ - io/aklivity/zilla/specs/validator/json/schema/json.schema.patch.json + io/aklivity/zilla/specs/types/json/schema/json.schema.patch.json ${project.build.directory}/classes diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonValidator.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonConverter.java similarity index 94% rename from incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonValidator.java rename to incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonConverter.java index 7c31a357cc..94a23c2d53 100644 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonValidator.java +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json; +package io.aklivity.zilla.runtime.types.json; import java.io.StringReader; import java.util.function.LongFunction; @@ -33,9 +33,9 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; -public abstract class JsonValidator +public abstract class JsonConverter { protected final SchemaConfig catalog; protected final CatalogHandler handler; @@ -48,8 +48,8 @@ public abstract class JsonValidator private final JsonParserFactory factory; private DirectBufferInputStream in; - public JsonValidator( - JsonValidatorConfig config, + public JsonConverter( + JsonConverterConfig config, LongFunction supplyCatalog) { this.schemaProvider = JsonProvider.provider(); diff --git a/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonConverterFactory.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonConverterFactory.java new file mode 100644 index 0000000000..610eea6cf0 --- /dev/null +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonConverterFactory.java @@ -0,0 +1,54 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.json; + +import java.net.URL; +import java.util.function.LongFunction; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; + +public final class JsonConverterFactory implements ConverterFactorySpi +{ + @Override + public String type() + { + return "json"; + } + + public URL schema() + { + return getClass().getResource("schema/json.schema.patch.json"); + } + + @Override + public Converter createReader( + ConverterConfig config, + LongFunction supplyCatalog) + { + return new JsonReadConverter(JsonConverterConfig.class.cast(config), supplyCatalog); + } + + @Override + public Converter createWriter( + ConverterConfig config, + LongFunction supplyCatalog) + { + return new JsonWriteConverter(JsonConverterConfig.class.cast(config), supplyCatalog); + } +} diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonReadValidator.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonReadConverter.java similarity index 61% rename from incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonReadValidator.java rename to incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonReadConverter.java index 9cfec07e8a..a402762e18 100644 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonReadValidator.java +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonReadConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json; +package io.aklivity.zilla.runtime.types.json; import static io.aklivity.zilla.runtime.engine.catalog.CatalogHandler.NO_SCHEMA_ID; @@ -21,45 +21,21 @@ import org.agrona.DirectBuffer; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; -public class JsonReadValidator extends JsonValidator implements ValueValidator, FragmentValidator +public class JsonReadConverter extends JsonConverter implements Converter { - public JsonReadValidator( - JsonValidatorConfig config, + public JsonReadConverter( + JsonConverterConfig config, LongFunction supplyCatalog) { super(config, supplyCatalog); } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonWriteValidator.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonWriteConverter.java similarity index 57% rename from incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonWriteValidator.java rename to incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonWriteConverter.java index 2cf1b059d8..e5710f8a41 100644 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonWriteValidator.java +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/JsonWriteConverter.java @@ -12,23 +12,21 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json; +package io.aklivity.zilla.runtime.types.json; import java.util.function.LongFunction; import org.agrona.DirectBuffer; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; -public class JsonWriteValidator extends JsonValidator implements ValueValidator, FragmentValidator +public class JsonWriteConverter extends JsonConverter implements Converter { - public JsonWriteValidator( - JsonValidatorConfig config, + public JsonWriteConverter( + JsonConverterConfig config, LongFunction supplyCatalog) { super(config, supplyCatalog); @@ -44,29 +42,7 @@ public int padding( } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfig.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfig.java similarity index 65% rename from incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfig.java rename to incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfig.java index 339f2df03b..5b945e991d 100644 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfig.java +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfig.java @@ -12,19 +12,19 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json.config; +package io.aklivity.zilla.runtime.types.json.config; import java.util.List; import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public final class JsonValidatorConfig extends ValidatorConfig +public final class JsonConverterConfig extends ConverterConfig { public final String subject; - JsonValidatorConfig( + JsonConverterConfig( List cataloged, String subject) { @@ -32,14 +32,14 @@ public final class JsonValidatorConfig extends ValidatorConfig this.subject = subject; } - public static JsonValidatorConfigBuilder builder( - Function mapper) + public static JsonConverterConfigBuilder builder( + Function mapper) { - return new JsonValidatorConfigBuilder<>(mapper::apply); + return new JsonConverterConfigBuilder<>(mapper::apply); } - public static JsonValidatorConfigBuilder builder() + public static JsonConverterConfigBuilder builder() { - return new JsonValidatorConfigBuilder<>(JsonValidatorConfig.class::cast); + return new JsonConverterConfigBuilder<>(JsonConverterConfig.class::cast); } } diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigAdapter.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigAdapter.java similarity index 81% rename from incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigAdapter.java rename to incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigAdapter.java index d682640b69..a7437c50ea 100644 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigAdapter.java +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigAdapter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json.config; +package io.aklivity.zilla.runtime.types.json.config; import java.util.LinkedList; import java.util.List; @@ -26,12 +26,12 @@ import jakarta.json.bind.adapter.JsonbAdapter; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfigAdapter; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; -public final class JsonValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter +public final class JsonConverterConfigAdapter implements ConverterConfigAdapterSpi, JsonbAdapter { private static final String JSON = "json"; private static final String TYPE_NAME = "type"; @@ -48,11 +48,11 @@ public String type() @Override public JsonValue adaptToJson( - ValidatorConfig config) + ConverterConfig config) { - JsonValidatorConfig jsonConfig = (JsonValidatorConfig) config; - JsonObjectBuilder validator = Json.createObjectBuilder(); - validator.add(TYPE_NAME, JSON); + JsonConverterConfig jsonConfig = (JsonConverterConfig) config; + JsonObjectBuilder converter = Json.createObjectBuilder(); + converter.add(TYPE_NAME, JSON); if (jsonConfig.cataloged != null && !jsonConfig.cataloged.isEmpty()) { JsonObjectBuilder catalogs = Json.createObjectBuilder(); @@ -65,13 +65,13 @@ public JsonValue adaptToJson( } catalogs.add(catalog.name, array); } - validator.add(CATALOG_NAME, catalogs); + converter.add(CATALOG_NAME, catalogs); } - return validator.build(); + return converter.build(); } @Override - public ValidatorConfig adaptFromJson( + public ConverterConfig adaptFromJson( JsonValue value) { JsonObject object = (JsonObject) value; @@ -97,6 +97,6 @@ public ValidatorConfig adaptFromJson( ? object.getString(SUBJECT_NAME) : null; - return new JsonValidatorConfig(catalogs, subject); + return new JsonConverterConfig(catalogs, subject); } } diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigBuilder.java b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigBuilder.java similarity index 69% rename from incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigBuilder.java rename to incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigBuilder.java index e98095fe7b..20c60278f3 100644 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigBuilder.java +++ b/incubator/types-json/src/main/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigBuilder.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json.config; +package io.aklivity.zilla.runtime.types.json.config; import java.util.LinkedList; import java.util.List; @@ -22,39 +22,39 @@ import io.aklivity.zilla.runtime.engine.config.CatalogedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -public class JsonValidatorConfigBuilder extends ConfigBuilder> +public class JsonConverterConfigBuilder extends ConfigBuilder> { - private final Function mapper; + private final Function mapper; private List catalogs; private String subject; - JsonValidatorConfigBuilder( - Function mapper) + JsonConverterConfigBuilder( + Function mapper) { this.mapper = mapper; } @Override @SuppressWarnings("unchecked") - protected Class> thisType() + protected Class> thisType() { - return (Class>) getClass(); + return (Class>) getClass(); } - public CatalogedConfigBuilder> catalog() + public CatalogedConfigBuilder> catalog() { return CatalogedConfig.builder(this::catalog); } - public JsonValidatorConfigBuilder subject( + public JsonConverterConfigBuilder subject( String subject) { this.subject = subject; return this; } - public JsonValidatorConfigBuilder catalog( + public JsonConverterConfigBuilder catalog( CatalogedConfig catalog) { if (catalogs == null) @@ -68,6 +68,6 @@ public JsonValidatorConfigBuilder catalog( @Override public T build() { - return mapper.apply(new JsonValidatorConfig(catalogs, subject)); + return mapper.apply(new JsonConverterConfig(catalogs, subject)); } } diff --git a/incubator/validator-json/src/main/moditect/module-info.java b/incubator/types-json/src/main/moditect/module-info.java similarity index 63% rename from incubator/validator-json/src/main/moditect/module-info.java rename to incubator/types-json/src/main/moditect/module-info.java index 3931d8cd17..e168ff3523 100644 --- a/incubator/validator-json/src/main/moditect/module-info.java +++ b/incubator/types-json/src/main/moditect/module-info.java @@ -12,17 +12,17 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -module io.aklivity.zilla.runtime.validator.json +module io.aklivity.zilla.runtime.types.json { requires io.aklivity.zilla.runtime.engine; requires org.leadpony.justify; - exports io.aklivity.zilla.runtime.validator.json.config; + exports io.aklivity.zilla.runtime.types.json.config; - provides io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi - with io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfigAdapter; + provides io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi + with io.aklivity.zilla.runtime.types.json.config.JsonConverterConfigAdapter; - provides io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi - with io.aklivity.zilla.runtime.validator.json.JsonValidatorFactory; + provides io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi + with io.aklivity.zilla.runtime.types.json.JsonConverterFactory; } diff --git a/incubator/types-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi b/incubator/types-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi new file mode 100644 index 0000000000..6f34e76cea --- /dev/null +++ b/incubator/types-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.types.json.config.JsonConverterConfigAdapter diff --git a/incubator/types-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi b/incubator/types-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi new file mode 100644 index 0000000000..077b0fdcee --- /dev/null +++ b/incubator/types-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.types.json.JsonConverterFactory diff --git a/incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorFactoryTest.java b/incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/JsonConverterFactoryTest.java similarity index 66% rename from incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorFactoryTest.java rename to incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/JsonConverterFactoryTest.java index 48a66f3eda..5ab13eaf6d 100644 --- a/incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorFactoryTest.java +++ b/incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/JsonConverterFactoryTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json; +package io.aklivity.zilla.runtime.types.json; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; @@ -22,19 +22,19 @@ import org.junit.Test; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; import io.aklivity.zilla.runtime.engine.test.internal.catalog.TestCatalogHandler; import io.aklivity.zilla.runtime.engine.test.internal.catalog.config.TestCatalogOptionsConfig; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; -public class JsonValidatorFactoryTest +public class JsonConverterFactoryTest { @Test - public void shouldCreateReadValidator() + public void shouldCreateReader() { // GIVEN - ValidatorConfig validator = JsonValidatorConfig.builder() + ConverterConfig converter = JsonConverterConfig.builder() .catalog() .name("test0") .build() @@ -44,20 +44,20 @@ public void shouldCreateReadValidator() .id(1) .schema("schema0") .build()); - JsonValidatorFactory factory = new JsonValidatorFactory(); + JsonConverterFactory factory = new JsonConverterFactory(); // WHEN - ValueValidator reader = factory.createValueReader(validator, supplyCatalog); + Converter reader = factory.createReader(converter, supplyCatalog); // THEN - assertThat(reader, instanceOf(JsonReadValidator.class)); + assertThat(reader, instanceOf(JsonReadConverter.class)); } @Test - public void shouldCreateWriteValidator() + public void shouldCreateWriter() { // GIVEN - ValidatorConfig validator = JsonValidatorConfig.builder() + ConverterConfig converter = JsonConverterConfig.builder() .catalog() .name("test0") .build() @@ -67,12 +67,12 @@ public void shouldCreateWriteValidator() .id(1) .schema("schema0") .build()); - JsonValidatorFactory factory = new JsonValidatorFactory(); + JsonConverterFactory factory = new JsonConverterFactory(); // WHEN - ValueValidator writer = factory.createValueWriter(validator, supplyCatalog); + Converter writer = factory.createWriter(converter, supplyCatalog); // THEN - assertThat(writer, instanceOf(JsonWriteValidator.class)); + assertThat(writer, instanceOf(JsonWriteConverter.class)); } } diff --git a/incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorTest.java b/incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/JsonConverterTest.java similarity index 68% rename from incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorTest.java rename to incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/JsonConverterTest.java index 023ca989d6..1379cd2b3c 100644 --- a/incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorTest.java +++ b/incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/JsonConverterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json; +package io.aklivity.zilla.runtime.types.json; import static io.aklivity.zilla.runtime.engine.EngineConfiguration.ENGINE_DIRECTORY; import static org.junit.Assert.assertEquals; @@ -33,13 +33,12 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogContext; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogConfig; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; import io.aklivity.zilla.runtime.engine.test.internal.catalog.TestCatalog; import io.aklivity.zilla.runtime.engine.test.internal.catalog.config.TestCatalogOptionsConfig; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; +import io.aklivity.zilla.runtime.types.json.config.JsonConverterConfig; -public class JsonValidatorTest +public class JsonConverterTest { private static final String OBJECT_SCHEMA = "{" + "\"type\": \"object\"," + @@ -64,7 +63,7 @@ public class JsonValidatorTest OBJECT_SCHEMA + "}"; - private final JsonValidatorConfig config = JsonValidatorConfig.builder() + private final JsonConverterConfig config = JsonConverterConfig.builder() .catalog() .name("test0") .schema() @@ -96,7 +95,7 @@ public void shouldVerifyValidJsonObject() .schema(OBJECT_SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - JsonReadValidator validator = new JsonReadValidator(config, handler); + JsonReadConverter converter = new JsonReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -107,7 +106,7 @@ public void shouldVerifyValidJsonObject() "}"; byte[] bytes = payload.getBytes(); data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -119,7 +118,7 @@ public void shouldVerifyValidJsonArray() .schema(ARRAY_SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - JsonWriteValidator validator = new JsonWriteValidator(config, handler); + JsonWriteConverter converter = new JsonWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -133,7 +132,7 @@ public void shouldVerifyValidJsonArray() byte[] bytes = payload.getBytes(); data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -145,7 +144,7 @@ public void shouldVerifyInvalidJsonObject() .schema(OBJECT_SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - JsonReadValidator validator = new JsonReadValidator(config, handler); + JsonReadConverter converter = new JsonReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -161,7 +160,7 @@ public void shouldVerifyInvalidJsonObject() value.putBytes(0, new byte[]{0x00, 0x00, 0x00, 0x00, 0x01}); value.putBytes(5, bytes); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -173,7 +172,7 @@ public void shouldWriteValidJsonData() .schema(OBJECT_SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - JsonWriteValidator validator = new JsonWriteValidator(config, handler); + JsonWriteConverter converter = new JsonWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -185,59 +184,7 @@ public void shouldWriteValidJsonData() byte[] bytes = payload.getBytes(); data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldWriteValidFragmentJsonData() - { - CatalogConfig catalogConfig = new CatalogConfig("test0", "test", - TestCatalogOptionsConfig.builder() - .id(9) - .schema(OBJECT_SCHEMA) - .build()); - LongFunction handler = value -> context.attach(catalogConfig); - JsonWriteValidator validator = new JsonWriteValidator(config, handler); - - DirectBuffer data = new UnsafeBuffer(); - - String payload = - "{" + - "\"id\": \"123\"," + - "\"status\": \"OK\"" + - "}"; - byte[] bytes = payload.getBytes(); - data.wrap(bytes, 0, bytes.length); - - assertEquals(0, validator.validate(0x00, data, 0, data.capacity(), FragmentConsumer.NOP)); - - assertEquals(data.capacity(), validator.validate(0x01, data, 0, data.capacity(), FragmentConsumer.NOP)); - } - - @Test - public void shouldVerifyValidFragmentJsonData() - { - CatalogConfig catalogConfig = new CatalogConfig("test0", "test", - TestCatalogOptionsConfig.builder() - .id(9) - .schema(OBJECT_SCHEMA) - .build()); - LongFunction handler = value -> context.attach(catalogConfig); - JsonReadValidator validator = new JsonReadValidator(config, handler); - - DirectBuffer data = new UnsafeBuffer(); - - String payload = - "{" + - "\"id\": \"123\"," + - "\"status\": \"OK\"" + - "}"; - byte[] bytes = payload.getBytes(); - data.wrap(bytes, 0, bytes.length); - - assertEquals(0, validator.validate(0x00, data, 0, data.capacity(), FragmentConsumer.NOP)); - - assertEquals(data.capacity(), validator.validate(0x01, data, 0, data.capacity(), FragmentConsumer.NOP)); + assertEquals(data.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -249,7 +196,7 @@ public void shouldVerifyInvalidJsonArray() .schema(ARRAY_SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - JsonWriteValidator validator = new JsonWriteValidator(config, handler); + JsonWriteConverter converter = new JsonWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -262,6 +209,6 @@ public void shouldVerifyInvalidJsonArray() "]"; byte[] bytes = payload.getBytes(); data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } } diff --git a/incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigAdapterTest.java b/incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigAdapterTest.java similarity index 69% rename from incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigAdapterTest.java rename to incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigAdapterTest.java index 53ebc16ba1..5113aa8614 100644 --- a/incubator/validator-json/src/test/java/io/aklivity/zilla/runtime/validator/json/config/JsonValidatorConfigAdapterTest.java +++ b/incubator/types-json/src/test/java/io/aklivity/zilla/runtime/types/json/config/JsonConverterConfigAdapterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.json.config; +package io.aklivity.zilla.runtime.types.json.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Test; -public class JsonValidatorConfigAdapterTest +public class JsonConverterConfigAdapterTest { private Jsonb jsonb; @@ -34,12 +34,12 @@ public class JsonValidatorConfigAdapterTest public void initJson() { JsonbConfig config = new JsonbConfig() - .withAdapters(new JsonValidatorConfigAdapter()); + .withAdapters(new JsonConverterConfigAdapter()); jsonb = JsonbBuilder.create(config); } @Test - public void shouldReadJsonValidator() + public void shouldReadJsonConverter() { // GIVEN String json = @@ -65,26 +65,26 @@ public void shouldReadJsonValidator() "}"; // WHEN - JsonValidatorConfig validator = jsonb.fromJson(json, JsonValidatorConfig.class); + JsonConverterConfig config = jsonb.fromJson(json, JsonConverterConfig.class); // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.type, equalTo("json")); - assertThat(validator.cataloged.size(), equalTo(1)); - assertThat(validator.cataloged.get(0).name, equalTo("test0")); - assertThat(validator.cataloged.get(0).schemas.get(0).subject, equalTo("subject1")); - assertThat(validator.cataloged.get(0).schemas.get(0).version, equalTo("latest")); - assertThat(validator.cataloged.get(0).schemas.get(0).id, equalTo(0)); - assertThat(validator.cataloged.get(0).schemas.get(1).strategy, equalTo("topic")); - assertThat(validator.cataloged.get(0).schemas.get(1).version, equalTo("latest")); - assertThat(validator.cataloged.get(0).schemas.get(1).id, equalTo(0)); - assertThat(validator.cataloged.get(0).schemas.get(2).strategy, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(2).version, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(2).id, equalTo(42)); + assertThat(config, not(nullValue())); + assertThat(config.type, equalTo("json")); + assertThat(config.cataloged.size(), equalTo(1)); + assertThat(config.cataloged.get(0).name, equalTo("test0")); + assertThat(config.cataloged.get(0).schemas.get(0).subject, equalTo("subject1")); + assertThat(config.cataloged.get(0).schemas.get(0).version, equalTo("latest")); + assertThat(config.cataloged.get(0).schemas.get(0).id, equalTo(0)); + assertThat(config.cataloged.get(0).schemas.get(1).strategy, equalTo("topic")); + assertThat(config.cataloged.get(0).schemas.get(1).version, equalTo("latest")); + assertThat(config.cataloged.get(0).schemas.get(1).id, equalTo(0)); + assertThat(config.cataloged.get(0).schemas.get(2).strategy, nullValue()); + assertThat(config.cataloged.get(0).schemas.get(2).version, nullValue()); + assertThat(config.cataloged.get(0).schemas.get(2).id, equalTo(42)); } @Test - public void shouldWriteJsonValidator() + public void shouldWriteJsonConverter() { // GIVEN String expectedJson = @@ -108,7 +108,7 @@ public void shouldWriteJsonValidator() "]" + "}" + "}"; - JsonValidatorConfig validator = JsonValidatorConfig.builder() + JsonConverterConfig config = JsonConverterConfig.builder() .catalog() .name("test0") .schema() @@ -126,7 +126,7 @@ public void shouldWriteJsonValidator() .build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(config); // THEN assertThat(json, not(nullValue())); diff --git a/incubator/validator-protobuf.spec/COPYRIGHT b/incubator/types-protobuf.spec/COPYRIGHT similarity index 100% rename from incubator/validator-protobuf.spec/COPYRIGHT rename to incubator/types-protobuf.spec/COPYRIGHT diff --git a/incubator/validator-protobuf.spec/LICENSE b/incubator/types-protobuf.spec/LICENSE similarity index 100% rename from incubator/validator-protobuf.spec/LICENSE rename to incubator/types-protobuf.spec/LICENSE diff --git a/incubator/validator-protobuf.spec/NOTICE b/incubator/types-protobuf.spec/NOTICE similarity index 100% rename from incubator/validator-protobuf.spec/NOTICE rename to incubator/types-protobuf.spec/NOTICE diff --git a/incubator/validator-protobuf.spec/NOTICE.template b/incubator/types-protobuf.spec/NOTICE.template similarity index 100% rename from incubator/validator-protobuf.spec/NOTICE.template rename to incubator/types-protobuf.spec/NOTICE.template diff --git a/incubator/validator-protobuf.spec/mvnw b/incubator/types-protobuf.spec/mvnw similarity index 100% rename from incubator/validator-protobuf.spec/mvnw rename to incubator/types-protobuf.spec/mvnw diff --git a/incubator/validator-protobuf.spec/mvnw.cmd b/incubator/types-protobuf.spec/mvnw.cmd similarity index 100% rename from incubator/validator-protobuf.spec/mvnw.cmd rename to incubator/types-protobuf.spec/mvnw.cmd diff --git a/incubator/validator-protobuf.spec/pom.xml b/incubator/types-protobuf.spec/pom.xml similarity index 97% rename from incubator/validator-protobuf.spec/pom.xml rename to incubator/types-protobuf.spec/pom.xml index aaf5571fe3..b4db02e752 100644 --- a/incubator/validator-protobuf.spec/pom.xml +++ b/incubator/types-protobuf.spec/pom.xml @@ -12,8 +12,8 @@ ../pom.xml -validator-protobuf.spec -zilla::incubator::validator-protobuf.spec +types-protobuf.spec +zilla::incubator::types-protobuf.spec diff --git a/incubator/validator-protobuf.spec/src/main/moditect/module-info.java b/incubator/types-protobuf.spec/src/main/moditect/module-info.java similarity index 92% rename from incubator/validator-protobuf.spec/src/main/moditect/module-info.java rename to incubator/types-protobuf.spec/src/main/moditect/module-info.java index 9c10b90fa0..2dc331fe6a 100644 --- a/incubator/validator-protobuf.spec/src/main/moditect/module-info.java +++ b/incubator/types-protobuf.spec/src/main/moditect/module-info.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -open module io.aklivity.zilla.specs.validator.protobuf +open module io.aklivity.zilla.specs.types.protobuf { requires transitive io.aklivity.zilla.specs.engine; } diff --git a/incubator/validator-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/validator/protobuf/config/validator.yaml b/incubator/types-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/types/protobuf/config/converter.yaml similarity index 100% rename from incubator/validator-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/validator/protobuf/config/validator.yaml rename to incubator/types-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/types/protobuf/config/converter.yaml diff --git a/incubator/validator-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/validator/protobuf/schema/protobuf.schema.patch.json b/incubator/types-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/types/protobuf/schema/protobuf.schema.patch.json similarity index 98% rename from incubator/validator-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/validator/protobuf/schema/protobuf.schema.patch.json rename to incubator/types-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/types/protobuf/schema/protobuf.schema.patch.json index 92ec64be6d..570fdd3b9e 100644 --- a/incubator/validator-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/validator/protobuf/schema/protobuf.schema.patch.json +++ b/incubator/types-protobuf.spec/src/main/scripts/io/aklivity/zilla/specs/types/protobuf/schema/protobuf.schema.patch.json @@ -1,12 +1,12 @@ [ { "op": "add", - "path": "/$defs/validator/types/enum/-", + "path": "/$defs/converter/types/enum/-", "value": "protobuf" }, { "op": "add", - "path": "/$defs/validator/allOf/-", + "path": "/$defs/converter/allOf/-", "value": { "if": diff --git a/incubator/validator-protobuf.spec/src/test/java/io/aklivity/zilla/specs/validator/protobuf/config/SchemaTest.java b/incubator/types-protobuf.spec/src/test/java/io/aklivity/zilla/specs/types/protobuf/config/SchemaTest.java similarity index 80% rename from incubator/validator-protobuf.spec/src/test/java/io/aklivity/zilla/specs/validator/protobuf/config/SchemaTest.java rename to incubator/types-protobuf.spec/src/test/java/io/aklivity/zilla/specs/types/protobuf/config/SchemaTest.java index 38111b881a..fd2ad5fcc0 100644 --- a/incubator/validator-protobuf.spec/src/test/java/io/aklivity/zilla/specs/validator/protobuf/config/SchemaTest.java +++ b/incubator/types-protobuf.spec/src/test/java/io/aklivity/zilla/specs/types/protobuf/config/SchemaTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.specs.validator.protobuf.config; +package io.aklivity.zilla.specs.types.protobuf.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.not; @@ -31,13 +31,13 @@ public class SchemaTest public final ConfigSchemaRule schema = new ConfigSchemaRule() .schemaPatch("io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/validator/protobuf/schema/protobuf.schema.patch.json") - .configurationRoot("io/aklivity/zilla/specs/validator/protobuf/config"); + .schemaPatch("io/aklivity/zilla/specs/types/protobuf/schema/protobuf.schema.patch.json") + .configurationRoot("io/aklivity/zilla/specs/types/protobuf/config"); @Test public void shouldValidateCatalog() { - JsonObject config = schema.validate("validator.yaml"); + JsonObject config = schema.validate("converter.yaml"); assertThat(config, not(nullValue())); } diff --git a/incubator/validator-protobuf/COPYRIGHT b/incubator/types-protobuf/COPYRIGHT similarity index 100% rename from incubator/validator-protobuf/COPYRIGHT rename to incubator/types-protobuf/COPYRIGHT diff --git a/incubator/validator-protobuf/LICENSE b/incubator/types-protobuf/LICENSE similarity index 100% rename from incubator/validator-protobuf/LICENSE rename to incubator/types-protobuf/LICENSE diff --git a/incubator/validator-protobuf/NOTICE b/incubator/types-protobuf/NOTICE similarity index 100% rename from incubator/validator-protobuf/NOTICE rename to incubator/types-protobuf/NOTICE diff --git a/incubator/validator-protobuf/NOTICE.template b/incubator/types-protobuf/NOTICE.template similarity index 100% rename from incubator/validator-protobuf/NOTICE.template rename to incubator/types-protobuf/NOTICE.template diff --git a/incubator/validator-protobuf/mvnw b/incubator/types-protobuf/mvnw similarity index 100% rename from incubator/validator-protobuf/mvnw rename to incubator/types-protobuf/mvnw diff --git a/incubator/validator-protobuf/mvnw.cmd b/incubator/types-protobuf/mvnw.cmd similarity index 100% rename from incubator/validator-protobuf/mvnw.cmd rename to incubator/types-protobuf/mvnw.cmd diff --git a/incubator/validator-protobuf/pom.xml b/incubator/types-protobuf/pom.xml similarity index 91% rename from incubator/validator-protobuf/pom.xml rename to incubator/types-protobuf/pom.xml index 6d1f1bfef6..df8256829c 100644 --- a/incubator/validator-protobuf/pom.xml +++ b/incubator/types-protobuf/pom.xml @@ -12,8 +12,8 @@ ../pom.xml -validator-protobuf -zilla::incubator::validator-protobuf +types-protobuf +zilla::incubator::types-protobuf @@ -33,7 +33,7 @@ ${project.groupId} - validator-protobuf.spec + types-protobuf.spec ${project.version} provided @@ -111,16 +111,16 @@ ${project.groupId} - validator-protobuf.spec + types-protobuf.spec - ^\Qio/aklivity/zilla/specs/validator/protobuf/\E - io/aklivity/zilla/runtime/validator/protobuf/ + ^\Qio/aklivity/zilla/specs/types/protobuf/\E + io/aklivity/zilla/runtime/types/protobuf/ - io/aklivity/zilla/specs/validator/protobuf/schema/protobuf.schema.patch.json + io/aklivity/zilla/specs/types/protobuf/schema/protobuf.schema.patch.json ${project.build.directory}/classes @@ -134,7 +134,7 @@ ${project.groupId} - validator-protobuf.spec + types-protobuf.spec ${project.version} ${basedir}/target/test-classes **\/*.proto @@ -165,7 +165,7 @@ jacoco-maven-plugin - io/aklivity/zilla/runtime/validator/protobuf/internal/parser/**/*.class + io/aklivity/zilla/runtime/types/protobuf/internal/parser/**/*.class diff --git a/incubator/validator-protobuf/src/main/antlr4/io/aklivity/zilla/runtime/validator/protobuf/internal/parser/Protobuf3.g4 b/incubator/types-protobuf/src/main/antlr4/io/aklivity/zilla/runtime/types/protobuf/internal/parser/Protobuf3.g4 similarity index 100% rename from incubator/validator-protobuf/src/main/antlr4/io/aklivity/zilla/runtime/validator/protobuf/internal/parser/Protobuf3.g4 rename to incubator/types-protobuf/src/main/antlr4/io/aklivity/zilla/runtime/types/protobuf/internal/parser/Protobuf3.g4 diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/DescriptorTree.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/DescriptorTree.java similarity index 98% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/DescriptorTree.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/DescriptorTree.java index fcf57c1c39..e899d9eb69 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/DescriptorTree.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/DescriptorTree.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import java.util.LinkedHashMap; import java.util.LinkedList; diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtoListener.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtoListener.java similarity index 96% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtoListener.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtoListener.java index 8ab28e564d..ddd2f97f3d 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtoListener.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtoListener.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import static java.util.Map.entry; @@ -28,8 +28,8 @@ import com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type; import com.google.protobuf.DescriptorProtos.FileDescriptorProto; -import io.aklivity.zilla.runtime.validator.protobuf.internal.parser.Protobuf3BaseListener; -import io.aklivity.zilla.runtime.validator.protobuf.internal.parser.Protobuf3Parser; +import io.aklivity.zilla.runtime.types.protobuf.internal.parser.Protobuf3BaseListener; +import io.aklivity.zilla.runtime.types.protobuf.internal.parser.Protobuf3Parser; public class ProtoListener extends Protobuf3BaseListener { diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidator.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverter.java similarity index 95% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidator.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverter.java index a699cc457e..cc23494813 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidator.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import java.util.Arrays; import java.util.LinkedList; @@ -41,11 +41,11 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; -import io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfig; -import io.aklivity.zilla.runtime.validator.protobuf.internal.parser.Protobuf3Lexer; -import io.aklivity.zilla.runtime.validator.protobuf.internal.parser.Protobuf3Parser; +import io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfig; +import io.aklivity.zilla.runtime.types.protobuf.internal.parser.Protobuf3Lexer; +import io.aklivity.zilla.runtime.types.protobuf.internal.parser.Protobuf3Parser; -public class ProtobufValidator +public class ProtobufConverter { protected static final byte[] ZERO_INDEX = new byte[]{0x0}; protected static final String FORMAT_JSON = "json"; @@ -67,8 +67,8 @@ public class ProtobufValidator private final FileDescriptor[] dependencies; private final Int2IntHashMap paddings; - protected ProtobufValidator( - ProtobufValidatorConfig config, + protected ProtobufConverter( + ProtobufConverterConfig config, LongFunction supplyCatalog) { CatalogedConfig cataloged = config.cataloged.get(0); diff --git a/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterFactory.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterFactory.java new file mode 100644 index 0000000000..ab3afa0afa --- /dev/null +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterFactory.java @@ -0,0 +1,54 @@ +/* + * Copyright 2021-2023 Aklivity Inc + * + * Licensed under the Aklivity Community License (the "License"); you may not use + * this file except in compliance with the License. You may obtain a copy of the + * License at + * + * https://www.aklivity.io/aklivity-community-license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package io.aklivity.zilla.runtime.types.protobuf; + +import java.net.URL; +import java.util.function.LongFunction; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; +import io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfig; + +public final class ProtobufConverterFactory implements ConverterFactorySpi +{ + @Override + public String type() + { + return "protobuf"; + } + + public URL schema() + { + return getClass().getResource("schema/protobuf.schema.patch.json"); + } + + @Override + public Converter createReader( + ConverterConfig config, + LongFunction supplyCatalog) + { + return new ProtobufReadConverter(ProtobufConverterConfig.class.cast(config), supplyCatalog); + } + + @Override + public Converter createWriter( + ConverterConfig config, + LongFunction supplyCatalog) + { + return new ProtobufWriteConverter(ProtobufConverterConfig.class.cast(config), supplyCatalog); + } +} diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufReadValidator.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufReadConverter.java similarity index 79% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufReadValidator.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufReadConverter.java index 8fc7d49d93..fc30116e6e 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufReadValidator.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufReadConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import static io.aklivity.zilla.runtime.engine.catalog.CatalogHandler.NO_SCHEMA_ID; @@ -27,19 +27,17 @@ import com.google.protobuf.util.JsonFormat; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfig; -public class ProtobufReadValidator extends ProtobufValidator implements ValueValidator, FragmentValidator +public class ProtobufReadConverter extends ProtobufConverter implements Converter { private final JsonFormat.Printer printer; private final OutputStreamWriter output; - public ProtobufReadValidator( - ProtobufValidatorConfig config, + public ProtobufReadConverter( + ProtobufConverterConfig config, LongFunction supplyCatalog) { super(config, supplyCatalog); @@ -73,29 +71,7 @@ public int padding( } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufWriteValidator.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufWriteConverter.java similarity index 83% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufWriteValidator.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufWriteConverter.java index 2a785c7d74..ecf989dad8 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufWriteValidator.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufWriteConverter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import java.io.IOException; import java.io.InputStreamReader; @@ -27,21 +27,19 @@ import com.google.protobuf.util.JsonFormat; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfig; -public class ProtobufWriteValidator extends ProtobufValidator implements ValueValidator, FragmentValidator +public class ProtobufWriteConverter extends ProtobufConverter implements Converter { private final DirectBuffer indexesRO; private final InputStreamReader input; private final DirectBufferInputStream in; private final JsonFormat.Parser parser; - public ProtobufWriteValidator( - ProtobufValidatorConfig config, + public ProtobufWriteConverter( + ProtobufConverterConfig config, LongFunction supplyCatalog) { super(config, supplyCatalog); @@ -65,29 +63,7 @@ public int padding( } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, @@ -124,6 +100,7 @@ private boolean validate( if (tree != null) { Descriptors.Descriptor descriptor = tree.descriptor; + indexes.clear(); indexes.add(tree.indexes.size()); indexes.addAll(tree.indexes); in.wrap(buffer, index, length); diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfig.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfig.java similarity index 64% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfig.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfig.java index 89a7827dd6..d16b114a05 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfig.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfig.java @@ -12,20 +12,20 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf.config; +package io.aklivity.zilla.runtime.types.protobuf.config; import java.util.List; import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public final class ProtobufValidatorConfig extends ValidatorConfig +public final class ProtobufConverterConfig extends ConverterConfig { public final String subject; public final String format; - ProtobufValidatorConfig( + ProtobufConverterConfig( List cataloged, String subject, String format) @@ -35,14 +35,14 @@ public final class ProtobufValidatorConfig extends ValidatorConfig this.format = format; } - public static ProtobufValidatorConfigBuilder builder( - Function mapper) + public static ProtobufConverterConfigBuilder builder( + Function mapper) { - return new ProtobufValidatorConfigBuilder<>(mapper::apply); + return new ProtobufConverterConfigBuilder<>(mapper::apply); } - public static ProtobufValidatorConfigBuilder builder() + public static ProtobufConverterConfigBuilder builder() { - return new ProtobufValidatorConfigBuilder<>(ProtobufValidatorConfig.class::cast); + return new ProtobufConverterConfigBuilder<>(ProtobufConverterConfig.class::cast); } } diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigAdapter.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigAdapter.java similarity index 80% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigAdapter.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigAdapter.java index 6471d50cc9..e70f4d3da3 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigAdapter.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigAdapter.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf.config; +package io.aklivity.zilla.runtime.types.protobuf.config; import java.util.LinkedList; import java.util.List; @@ -26,12 +26,12 @@ import jakarta.json.bind.adapter.JsonbAdapter; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfigAdapter; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; -public final class ProtobufValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter +public final class ProtobufConverterConfigAdapter implements ConverterConfigAdapterSpi, JsonbAdapter { private static final String PROTOBUF = "protobuf"; private static final String TYPE_NAME = "type"; @@ -49,15 +49,15 @@ public String type() @Override public JsonValue adaptToJson( - ValidatorConfig config) + ConverterConfig config) { - ProtobufValidatorConfig protobufConfig = (ProtobufValidatorConfig) config; - JsonObjectBuilder validator = Json.createObjectBuilder(); - validator.add(TYPE_NAME, PROTOBUF); + ProtobufConverterConfig protobufConfig = (ProtobufConverterConfig) config; + JsonObjectBuilder converter = Json.createObjectBuilder(); + converter.add(TYPE_NAME, PROTOBUF); if (protobufConfig.format != null) { - validator.add(FORMAT, protobufConfig.format); + converter.add(FORMAT, protobufConfig.format); } if (protobufConfig.cataloged != null && !protobufConfig.cataloged.isEmpty()) @@ -72,13 +72,13 @@ public JsonValue adaptToJson( } catalogs.add(catalog.name, array); } - validator.add(CATALOG_NAME, catalogs); + converter.add(CATALOG_NAME, catalogs); } - return validator.build(); + return converter.build(); } @Override - public ValidatorConfig adaptFromJson( + public ConverterConfig adaptFromJson( JsonValue value) { JsonObject object = (JsonObject) value; @@ -108,6 +108,6 @@ public ValidatorConfig adaptFromJson( ? object.getString(FORMAT) : null; - return new ProtobufValidatorConfig(catalogs, subject, format); + return new ProtobufConverterConfig(catalogs, subject, format); } } diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigBuilder.java b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigBuilder.java similarity index 68% rename from incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigBuilder.java rename to incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigBuilder.java index be37990c94..bf988ced73 100644 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigBuilder.java +++ b/incubator/types-protobuf/src/main/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigBuilder.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf.config; +package io.aklivity.zilla.runtime.types.protobuf.config; import java.util.LinkedList; import java.util.List; @@ -22,40 +22,40 @@ import io.aklivity.zilla.runtime.engine.config.CatalogedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -public class ProtobufValidatorConfigBuilder extends ConfigBuilder> +public class ProtobufConverterConfigBuilder extends ConfigBuilder> { - private final Function mapper; + private final Function mapper; private List catalogs; private String subject; private String format; - ProtobufValidatorConfigBuilder( - Function mapper) + ProtobufConverterConfigBuilder( + Function mapper) { this.mapper = mapper; } @Override @SuppressWarnings("unchecked") - protected Class> thisType() + protected Class> thisType() { - return (Class>) getClass(); + return (Class>) getClass(); } - public CatalogedConfigBuilder> catalog() + public CatalogedConfigBuilder> catalog() { return CatalogedConfig.builder(this::catalog); } - public ProtobufValidatorConfigBuilder subject( + public ProtobufConverterConfigBuilder subject( String subject) { this.subject = subject; return this; } - public ProtobufValidatorConfigBuilder catalog( + public ProtobufConverterConfigBuilder catalog( CatalogedConfig catalog) { if (catalogs == null) @@ -66,7 +66,7 @@ public ProtobufValidatorConfigBuilder catalog( return this; } - public ProtobufValidatorConfigBuilder format( + public ProtobufConverterConfigBuilder format( String format) { this.format = format; @@ -76,6 +76,6 @@ public ProtobufValidatorConfigBuilder format( @Override public T build() { - return mapper.apply(new ProtobufValidatorConfig(catalogs, subject, format)); + return mapper.apply(new ProtobufConverterConfig(catalogs, subject, format)); } } diff --git a/incubator/validator-protobuf/src/main/moditect/module-info.java b/incubator/types-protobuf/src/main/moditect/module-info.java similarity index 63% rename from incubator/validator-protobuf/src/main/moditect/module-info.java rename to incubator/types-protobuf/src/main/moditect/module-info.java index 4781ede24e..bd1843ab4b 100644 --- a/incubator/validator-protobuf/src/main/moditect/module-info.java +++ b/incubator/types-protobuf/src/main/moditect/module-info.java @@ -12,17 +12,17 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -module io.aklivity.zilla.runtime.validator.protobuf +module io.aklivity.zilla.runtime.types.protobuf { requires org.antlr.antlr4.runtime; requires protobuf.java; requires io.aklivity.zilla.runtime.engine; - exports io.aklivity.zilla.runtime.validator.protobuf.config; + exports io.aklivity.zilla.runtime.types.protobuf.config; - provides io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi - with io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfigAdapter; + provides io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi + with io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfigAdapter; - provides io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi - with io.aklivity.zilla.runtime.validator.protobuf.ProtobufValidatorFactory; + provides io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi + with io.aklivity.zilla.runtime.types.protobuf.ProtobufConverterFactory; } diff --git a/incubator/types-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi b/incubator/types-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi new file mode 100644 index 0000000000..947a6156e0 --- /dev/null +++ b/incubator/types-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfigAdapter diff --git a/incubator/types-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi b/incubator/types-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi new file mode 100644 index 0000000000..5e14defee6 --- /dev/null +++ b/incubator/types-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.types.protobuf.ProtobufConverterFactory diff --git a/incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorFactoryTest.java b/incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterFactoryTest.java similarity index 70% rename from incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorFactoryTest.java rename to incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterFactoryTest.java index 02e4824417..bc4ea87349 100644 --- a/incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorFactoryTest.java +++ b/incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterFactoryTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; @@ -22,20 +22,19 @@ import org.junit.Test; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; import io.aklivity.zilla.runtime.engine.test.internal.catalog.TestCatalogHandler; import io.aklivity.zilla.runtime.engine.test.internal.catalog.config.TestCatalogOptionsConfig; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfig; +import io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfig; - -public class ProtobufValidatorFactoryTest +public class ProtobufConverterFactoryTest { @Test - public void shouldCreateReadValidator() + public void shouldCreateReader() { // GIVEN - ValidatorConfig validator = ProtobufValidatorConfig.builder() + ConverterConfig converter = ProtobufConverterConfig.builder() .subject("test-value") .catalog() .name("test0") @@ -50,20 +49,20 @@ public void shouldCreateReadValidator() .id(1) .schema("schema0") .build()); - ProtobufValidatorFactory factory = new ProtobufValidatorFactory(); + ProtobufConverterFactory factory = new ProtobufConverterFactory(); // WHEN - ValueValidator reader = factory.createValueReader(validator, supplyCatalog); + Converter reader = factory.createReader(converter, supplyCatalog); // THEN - assertThat(reader, instanceOf(ProtobufReadValidator.class)); + assertThat(reader, instanceOf(ProtobufReadConverter.class)); } @Test - public void shouldCreateWriteValidator() + public void shouldCreateWriter() { // GIVEN - ValidatorConfig validator = ProtobufValidatorConfig.builder() + ConverterConfig converter = ProtobufConverterConfig.builder() .subject("test-value") .catalog() .name("test0") @@ -78,12 +77,12 @@ public void shouldCreateWriteValidator() .id(1) .schema("schema0") .build()); - ProtobufValidatorFactory factory = new ProtobufValidatorFactory(); + ProtobufConverterFactory factory = new ProtobufConverterFactory(); // WHEN - ValueValidator writer = factory.createValueWriter(validator, supplyCatalog); + Converter writer = factory.createWriter(converter, supplyCatalog); // THEN - assertThat(writer, instanceOf(ProtobufWriteValidator.class)); + assertThat(writer, instanceOf(ProtobufWriteConverter.class)); } } diff --git a/incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorTest.java b/incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterTest.java similarity index 82% rename from incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorTest.java rename to incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterTest.java index d464df6583..95c8f84e2b 100644 --- a/incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorTest.java +++ b/incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/ProtobufConverterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf; +package io.aklivity.zilla.runtime.types.protobuf; import static io.aklivity.zilla.runtime.engine.EngineConfiguration.ENGINE_DIRECTORY; import static org.junit.Assert.assertEquals; @@ -33,12 +33,12 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogContext; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogConfig; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; import io.aklivity.zilla.runtime.engine.test.internal.catalog.TestCatalog; import io.aklivity.zilla.runtime.engine.test.internal.catalog.config.TestCatalogOptionsConfig; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfig; +import io.aklivity.zilla.runtime.types.protobuf.config.ProtobufConverterConfig; -public class ProtobufValidatorTest +public class ProtobufConverterTest { private static final String SCHEMA = "syntax = \"proto3\";" + "package io.aklivity.examples.clients.proto;" + @@ -95,7 +95,7 @@ public void shouldWriteValidProtobufEvent() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -107,15 +107,15 @@ public void shouldWriteValidProtobufEvent() .build() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufWriteValidator validator = new ProtobufWriteValidator(config, handler); + ProtobufWriteConverter converter = new ProtobufWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x08, 0x30, 0x31, 0x30, 0x31, 0x32, 0x30, 0x32, 0x34}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity() + 1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity() + 1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); - assertEquals(data.capacity() + 1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity() + 1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -127,7 +127,7 @@ public void shouldWriteValidProtobufEventNestedMessage() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -139,13 +139,13 @@ public void shouldWriteValidProtobufEventNestedMessage() .build() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufWriteValidator validator = new ProtobufWriteValidator(config, handler); + ProtobufWriteConverter converter = new ProtobufWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x08, 0x30, 0x31, 0x30, 0x31, 0x32, 0x30, 0x32, 0x34}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity() + 3, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity() + 3, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -157,7 +157,7 @@ public void shouldWriteValidProtobufEventIncorrectRecordName() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -169,13 +169,13 @@ public void shouldWriteValidProtobufEventIncorrectRecordName() .build() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufWriteValidator validator = new ProtobufWriteValidator(config, handler); + ProtobufWriteConverter converter = new ProtobufWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x08, 0x30, 0x31, 0x30, 0x31, 0x32, 0x30, 0x32, 0x34}; data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(-1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -187,7 +187,7 @@ public void shouldReadValidProtobufEvent() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -198,15 +198,15 @@ public void shouldReadValidProtobufEvent() .build() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufReadValidator validator = new ProtobufReadValidator(config, handler); + ProtobufReadConverter converter = new ProtobufReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x00, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x08, 0x30, 0x31, 0x30, 0x31, 0x32, 0x30, 0x32, 0x34}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity() - 1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity() - 1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); - assertEquals(data.capacity() - 1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity() - 1, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -218,7 +218,7 @@ public void shouldReadValidProtobufEventNestedMessage() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -229,13 +229,13 @@ public void shouldReadValidProtobufEventNestedMessage() .build() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufReadValidator validator = new ProtobufReadValidator(config, handler); + ProtobufReadConverter converter = new ProtobufReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); byte[] bytes = {0x04, 0x02, 0x04, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x08, 0x30, 0x31, 0x30, 0x31, 0x32, 0x30, 0x32, 0x34}; data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity() - 3, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(data.capacity() - 3, converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -247,7 +247,7 @@ public void shouldReadValidProtobufEventFormatJson() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -260,7 +260,7 @@ public void shouldReadValidProtobufEventFormatJson() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufReadValidator validator = new ProtobufReadValidator(config, handler); + ProtobufReadConverter converter = new ProtobufReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -279,9 +279,9 @@ public void shouldReadValidProtobufEventFormatJson() buffer.getBytes(index, jsonBytes); assertEquals(json, new String(jsonBytes, StandardCharsets.UTF_8)); }; - validator.validate(data, 0, data.capacity(), consumer); + converter.convert(data, 0, data.capacity(), consumer); - validator.validate(data, 0, data.capacity(), consumer); + converter.convert(data, 0, data.capacity(), consumer); } @Test @@ -293,7 +293,7 @@ public void shouldWriteValidProtobufEventFormatJson() .schema(SCHEMA) .build()); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -307,7 +307,7 @@ public void shouldWriteValidProtobufEventFormatJson() .build(); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufWriteValidator validator = new ProtobufWriteValidator(config, handler); + ProtobufWriteConverter converter = new ProtobufWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); @@ -322,9 +322,9 @@ public void shouldWriteValidProtobufEventFormatJson() DirectBuffer expected = new UnsafeBuffer(); expected.wrap(expectedBytes, 0, expectedBytes.length); - assertEquals(expected.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(expected.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); - assertEquals(expected.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); + assertEquals(expected.capacity(), converter.convert(data, 0, data.capacity(), ValueConsumer.NOP)); } @Test @@ -336,7 +336,7 @@ public void shouldVerifyJsonFormatPaddingLength() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .format("json") .catalog() .name("test0") @@ -347,11 +347,11 @@ public void shouldVerifyJsonFormatPaddingLength() .build() .build() .build(); - ProtobufReadValidator validator = new ProtobufReadValidator(config, handler); + ProtobufReadConverter converter = new ProtobufReadConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); - assertEquals(71, validator.padding(data, 0, data.capacity())); + assertEquals(71, converter.padding(data, 0, data.capacity())); } @Test @@ -363,7 +363,7 @@ public void shouldVerifyIndexPaddingLength() .schema(SCHEMA) .build()); LongFunction handler = value -> context.attach(catalogConfig); - ProtobufValidatorConfig config = ProtobufValidatorConfig.builder() + ProtobufConverterConfig config = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -374,11 +374,11 @@ public void shouldVerifyIndexPaddingLength() .build() .build() .build(); - ProtobufWriteValidator validator = new ProtobufWriteValidator(config, handler); + ProtobufWriteConverter converter = new ProtobufWriteConverter(config, handler); DirectBuffer data = new UnsafeBuffer(); - assertEquals(3, validator.padding(data, 0, data.capacity())); + assertEquals(3, converter.padding(data, 0, data.capacity())); } } diff --git a/incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigAdapterTest.java b/incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigAdapterTest.java similarity index 72% rename from incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigAdapterTest.java rename to incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigAdapterTest.java index e9c8ce0de3..75d941ff61 100644 --- a/incubator/validator-protobuf/src/test/java/io/aklivity/zilla/runtime/validator/protobuf/config/ProtobufValidatorConfigAdapterTest.java +++ b/incubator/types-protobuf/src/test/java/io/aklivity/zilla/runtime/types/protobuf/config/ProtobufConverterConfigAdapterTest.java @@ -12,7 +12,7 @@ * WARRANTIES OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package io.aklivity.zilla.runtime.validator.protobuf.config; +package io.aklivity.zilla.runtime.types.protobuf.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Test; -public class ProtobufValidatorConfigAdapterTest +public class ProtobufConverterConfigAdapterTest { private Jsonb jsonb; @@ -34,12 +34,12 @@ public class ProtobufValidatorConfigAdapterTest public void initJson() { JsonbConfig config = new JsonbConfig() - .withAdapters(new ProtobufValidatorConfigAdapter()); + .withAdapters(new ProtobufConverterConfigAdapter()); jsonb = JsonbBuilder.create(config); } @Test - public void shouldReadAvroValidator() + public void shouldReadAvroConverter() { // GIVEN String json = @@ -65,27 +65,27 @@ public void shouldReadAvroValidator() "}"; // WHEN - ProtobufValidatorConfig validator = jsonb.fromJson(json, ProtobufValidatorConfig.class); + ProtobufConverterConfig converter = jsonb.fromJson(json, ProtobufConverterConfig.class); // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.type, equalTo("protobuf")); - assertThat(validator.cataloged.size(), equalTo(1)); - assertThat(validator.cataloged.get(0).name, equalTo("test0")); - assertThat(validator.cataloged.get(0).schemas.get(0).strategy, equalTo("topic")); - assertThat(validator.cataloged.get(0).schemas.get(0).version, equalTo("latest")); - assertThat(validator.cataloged.get(0).schemas.get(0).id, equalTo(0)); - assertThat(validator.cataloged.get(0).schemas.get(1).subject, equalTo("cat")); - assertThat(validator.cataloged.get(0).schemas.get(1).strategy, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(1).version, equalTo("latest")); - assertThat(validator.cataloged.get(0).schemas.get(1).id, equalTo(0)); - assertThat(validator.cataloged.get(0).schemas.get(2).strategy, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(2).version, nullValue()); - assertThat(validator.cataloged.get(0).schemas.get(2).id, equalTo(42)); + assertThat(converter, not(nullValue())); + assertThat(converter.type, equalTo("protobuf")); + assertThat(converter.cataloged.size(), equalTo(1)); + assertThat(converter.cataloged.get(0).name, equalTo("test0")); + assertThat(converter.cataloged.get(0).schemas.get(0).strategy, equalTo("topic")); + assertThat(converter.cataloged.get(0).schemas.get(0).version, equalTo("latest")); + assertThat(converter.cataloged.get(0).schemas.get(0).id, equalTo(0)); + assertThat(converter.cataloged.get(0).schemas.get(1).subject, equalTo("cat")); + assertThat(converter.cataloged.get(0).schemas.get(1).strategy, nullValue()); + assertThat(converter.cataloged.get(0).schemas.get(1).version, equalTo("latest")); + assertThat(converter.cataloged.get(0).schemas.get(1).id, equalTo(0)); + assertThat(converter.cataloged.get(0).schemas.get(2).strategy, nullValue()); + assertThat(converter.cataloged.get(0).schemas.get(2).version, nullValue()); + assertThat(converter.cataloged.get(0).schemas.get(2).id, equalTo(42)); } @Test - public void shouldWriteAvroValidator() + public void shouldWriteAvroConverter() { // GIVEN String expectedJson = @@ -109,7 +109,7 @@ public void shouldWriteAvroValidator() "]" + "}" + "}"; - ProtobufValidatorConfig validator = ProtobufValidatorConfig.builder() + ProtobufConverterConfig converter = ProtobufConverterConfig.builder() .catalog() .name("test0") .schema() @@ -127,7 +127,7 @@ public void shouldWriteAvroValidator() .build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(converter); // THEN assertThat(json, not(nullValue())); diff --git a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorFactory.java b/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorFactory.java deleted file mode 100644 index 7a6b4e3395..0000000000 --- a/incubator/validator-avro/src/main/java/io/aklivity/zilla/runtime/validator/avro/AvroValidatorFactory.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.avro; - -import java.net.URL; -import java.util.function.LongFunction; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfig; - -public final class AvroValidatorFactory implements ValidatorFactorySpi -{ - @Override - public String type() - { - return "avro"; - } - - public URL schema() - { - return getClass().getResource("schema/avro.schema.patch.json"); - } - - @Override - public ValueValidator createValueReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createReader(config, supplyCatalog); - } - - @Override - public ValueValidator createValueWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createWriter(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createReader(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createWriter(config, supplyCatalog); - } - - private AvroReadValidator createReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return new AvroReadValidator(AvroValidatorConfig.class.cast(config), supplyCatalog); - } - - private AvroWriteValidator createWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return new AvroWriteValidator(AvroValidatorConfig.class.cast(config), supplyCatalog); - } -} diff --git a/incubator/validator-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi b/incubator/validator-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi deleted file mode 100644 index aba3576a05..0000000000 --- a/incubator/validator-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.validator.avro.config.AvroValidatorConfigAdapter diff --git a/incubator/validator-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi b/incubator/validator-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi deleted file mode 100644 index 3282542a93..0000000000 --- a/incubator/validator-avro/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.validator.avro.AvroValidatorFactory diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/IntegerValidator.java b/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/IntegerValidator.java deleted file mode 100644 index 5f2db11b4b..0000000000 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/IntegerValidator.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core; - -import org.agrona.DirectBuffer; - -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfig; - -public class IntegerValidator implements ValueValidator, FragmentValidator -{ - public IntegerValidator( - IntegerValidatorConfig config) - { - } - - @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - boolean valid = length == 4; - - if (valid) - { - next.accept(data, index, length); - } - - return valid ? length : -1; - } -} diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringValidator.java b/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringValidator.java deleted file mode 100644 index 969d82ed33..0000000000 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/StringValidator.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core; - -import org.agrona.DirectBuffer; - -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfig; - -public class StringValidator implements ValueValidator, FragmentValidator -{ - private StringEncoding encoding; - - public StringValidator( - StringValidatorConfig config) - { - this.encoding = StringEncoding.of(config.encoding); - } - - @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - int valLength = -1; - - if (encoding.validate(data, index, length)) - { - next.accept(data, index, length); - valLength = length; - } - - return valLength; - } -} diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfig.java b/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfig.java deleted file mode 100644 index 5deba72254..0000000000 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfig.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core.config; - -import java.util.function.Function; - -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; - -public class LongValidatorConfig extends ValidatorConfig -{ - public LongValidatorConfig() - { - super("long"); - } - - public static LongValidatorConfigBuilder builder( - Function mapper) - { - return new LongValidatorConfigBuilder<>(mapper::apply); - } - - public static LongValidatorConfigBuilder builder() - { - return new LongValidatorConfigBuilder<>(LongValidatorConfig.class::cast); - } -} diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigAdapter.java b/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigAdapter.java deleted file mode 100644 index 69f57d0f9b..0000000000 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core.config; - -import jakarta.json.Json; -import jakarta.json.JsonValue; -import jakarta.json.bind.adapter.JsonbAdapter; - -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; - -public class LongValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter -{ - @Override - public String type() - { - return "long"; - } - - @Override - public JsonValue adaptToJson( - ValidatorConfig options) - { - return Json.createValue(type()); - } - - @Override - public ValidatorConfig adaptFromJson( - JsonValue object) - { - return new LongValidatorConfig(); - } -} diff --git a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigBuilder.java b/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigBuilder.java deleted file mode 100644 index fc843c2da7..0000000000 --- a/incubator/validator-core/src/main/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigBuilder.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core.config; - -import java.util.function.Function; - -import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; - -public class LongValidatorConfigBuilder extends ConfigBuilder> -{ - private final Function mapper; - - LongValidatorConfigBuilder( - Function mapper) - { - this.mapper = mapper; - } - - @Override - @SuppressWarnings("unchecked") - protected Class> thisType() - { - return (Class>) getClass(); - } - - @Override - public T build() - { - return mapper.apply(new LongValidatorConfig()); - } -} diff --git a/incubator/validator-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi b/incubator/validator-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi deleted file mode 100644 index e9b69c3849..0000000000 --- a/incubator/validator-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi +++ /dev/null @@ -1,2 +0,0 @@ -io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfigAdapter -io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfigAdapter diff --git a/incubator/validator-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi b/incubator/validator-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi deleted file mode 100644 index 609579e189..0000000000 --- a/incubator/validator-core/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi +++ /dev/null @@ -1,2 +0,0 @@ -io.aklivity.zilla.runtime.validator.core.IntegerValidatorFactory -io.aklivity.zilla.runtime.validator.core.StringValidatorFactory diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorFactoryTest.java b/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorFactoryTest.java deleted file mode 100644 index dc7f79edc8..0000000000 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/IntegerValidatorFactoryTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Mockito.mock; - -import java.util.function.LongFunction; - -import org.junit.Test; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.core.config.IntegerValidatorConfig; - -public class IntegerValidatorFactoryTest -{ - @Test - @SuppressWarnings("unchecked") - public void shouldCreateValueReader() - { - // GIVEN - ValidatorConfig validator = new IntegerValidatorConfig(); - LongFunction supplyCatalog = mock(LongFunction.class); - IntegerValidatorFactory factory = new IntegerValidatorFactory(); - - // WHEN - ValueValidator reader = factory.createValueReader(validator, supplyCatalog); - - // THEN - assertThat(reader, instanceOf(IntegerValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateValueWriter() - { - // GIVEN - ValidatorConfig validator = new IntegerValidatorConfig(); - LongFunction supplyCatalog = mock(LongFunction.class); - IntegerValidatorFactory factory = new IntegerValidatorFactory(); - - // WHEN - ValueValidator writer = factory.createValueWriter(validator, supplyCatalog); - - // THEN - assertThat(writer, instanceOf(IntegerValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateFragmentReader() - { - // GIVEN - ValidatorConfig validator = new IntegerValidatorConfig(); - LongFunction supplyCatalog = mock(LongFunction.class); - IntegerValidatorFactory factory = new IntegerValidatorFactory(); - - // WHEN - FragmentValidator reader = factory.createFragmentReader(validator, supplyCatalog); - - // THEN - assertThat(reader, instanceOf(IntegerValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateFragmentWriter() - { - // GIVEN - ValidatorConfig validator = new IntegerValidatorConfig(); - LongFunction supplyCatalog = mock(LongFunction.class); - IntegerValidatorFactory factory = new IntegerValidatorFactory(); - - // WHEN - FragmentValidator writer = factory.createFragmentWriter(validator, supplyCatalog); - - // THEN - assertThat(writer, instanceOf(IntegerValidator.class)); - } -} diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringValidatorFactoryTest.java b/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringValidatorFactoryTest.java deleted file mode 100644 index db0f13d00f..0000000000 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringValidatorFactoryTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Mockito.mock; - -import java.util.function.LongFunction; - -import org.junit.Test; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfig; - -public class StringValidatorFactoryTest -{ - @Test - @SuppressWarnings("unchecked") - public void shouldCreateValueReader() - { - // GIVEN - ValidatorConfig validator = new StringValidatorConfig("utf_8"); - LongFunction supplyCatalog = mock(LongFunction.class); - StringValidatorFactory factory = new StringValidatorFactory(); - - // WHEN - ValueValidator reader = factory.createValueReader(validator, supplyCatalog); - - // THEN - assertThat(reader, instanceOf(StringValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateValueWriter() - { - // GIVEN - ValidatorConfig validator = new StringValidatorConfig("utf_8"); - LongFunction supplyCatalog = mock(LongFunction.class); - StringValidatorFactory factory = new StringValidatorFactory(); - - // WHEN - ValueValidator writer = factory.createValueWriter(validator, supplyCatalog); - - // THEN - assertThat(writer, instanceOf(StringValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateFragmentReader() - { - // GIVEN - ValidatorConfig validator = new StringValidatorConfig("utf_8"); - LongFunction supplyCatalog = mock(LongFunction.class); - StringValidatorFactory factory = new StringValidatorFactory(); - - // WHEN - FragmentValidator reader = factory.createFragmentReader(validator, supplyCatalog); - - // THEN - assertThat(reader, instanceOf(StringValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateFragmentWriter() - { - // GIVEN - ValidatorConfig validator = new StringValidatorConfig("utf_8"); - LongFunction supplyCatalog = mock(LongFunction.class); - StringValidatorFactory factory = new StringValidatorFactory(); - - // WHEN - FragmentValidator writer = factory.createFragmentWriter(validator, supplyCatalog); - - // THEN - assertThat(writer, instanceOf(StringValidator.class)); - } -} diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringValidatorTest.java b/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringValidatorTest.java deleted file mode 100644 index cf1e78af20..0000000000 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/StringValidatorTest.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core; - -import static io.aklivity.zilla.runtime.engine.validator.FragmentValidator.FLAGS_COMPLETE; -import static org.junit.Assert.assertEquals; - -import java.nio.charset.StandardCharsets; - -import org.agrona.DirectBuffer; -import org.agrona.concurrent.UnsafeBuffer; -import org.junit.Test; - -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; -import io.aklivity.zilla.runtime.validator.core.config.StringValidatorConfig; - -public class StringValidatorTest -{ - private static final int FLAGS_INIT = 0x02; - - @Test - public void shouldVerifyValidUtf8() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_8") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = "Valid String".getBytes(); - data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyInvalidUtf8() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_8") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {(byte) 0xc0}; - data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyValidUtf16() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_16") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = "Valid String".getBytes(StandardCharsets.UTF_16); - data.wrap(bytes, 0, bytes.length); - - assertEquals(data.capacity(), validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyIncompleteUtf16() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_16") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {0x48}; - data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyIncompleteSurrogatePairUtf16() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_16") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {(byte) 0xD8, (byte) 0x00}; - data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyInvalidSecondSurrogateUtf16() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_16") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {(byte) 0xDC, (byte) 0x01}; - data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyUnexpectedSecondSurrogateUtf16() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_16") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {(byte) 0xDC, (byte) 0x80}; - data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyValidMixedUtf16() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_16") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {0, 72, 0, 101, 0, 108, 0, 108, 0, 111, 65, 66, 67}; - data.wrap(bytes, 0, bytes.length); - assertEquals(-1, validator.validate(data, 0, data.capacity(), ValueConsumer.NOP)); - } - - @Test - public void shouldVerifyCompleteAndValidMessage() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_8") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = "Valid String".getBytes(); - data.wrap(bytes, 0, bytes.length); - assertEquals(data.capacity(), validator.validate(FLAGS_COMPLETE, data, 0, data.capacity(), FragmentConsumer.NOP)); - } - - @Test - public void shouldVerifyIncompleteMessage() - { - StringValidatorConfig config = new StringValidatorConfig("utf_8"); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = {(byte) 0xc0}; - data.wrap(bytes, 0, bytes.length); - assertEquals(0, validator.validate(FLAGS_INIT, data, 0, data.capacity(), FragmentConsumer.NOP)); - } - - @Test - public void shouldVerifyValidFragmentUtf8() - { - StringValidatorConfig config = StringValidatorConfig.builder() - .encoding("utf_8") - .build(); - StringValidator validator = new StringValidator(config); - - DirectBuffer data = new UnsafeBuffer(); - - byte[] bytes = "Valid String".getBytes(); - data.wrap(bytes, 0, bytes.length); - - assertEquals(0, validator.validate(0x00, data, 0, data.capacity(), FragmentConsumer.NOP)); - - assertEquals(data.capacity(), validator.validate(0x01, data, 0, data.capacity(), FragmentConsumer.NOP)); - } -} diff --git a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigAdapterTest.java b/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigAdapterTest.java deleted file mode 100644 index 3d8e140c36..0000000000 --- a/incubator/validator-core/src/test/java/io/aklivity/zilla/runtime/validator/core/config/LongValidatorConfigAdapterTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.core.config; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; - -import jakarta.json.bind.Jsonb; -import jakarta.json.bind.JsonbBuilder; -import jakarta.json.bind.JsonbConfig; - -import org.junit.Before; -import org.junit.Test; - -public class LongValidatorConfigAdapterTest -{ - private Jsonb jsonb; - - @Before - public void initJson() - { - JsonbConfig config = new JsonbConfig() - .withAdapters(new LongValidatorConfigAdapter()); - jsonb = JsonbBuilder.create(config); - } - - @Test - public void shouldReadLongValidator() - { - // GIVEN - String json = - "{" + - "\"type\":\"long\"" + - "}"; - - // WHEN - LongValidatorConfig validator = jsonb.fromJson(json, LongValidatorConfig.class); - - // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.type, equalTo("long")); - } - - @Test - public void shouldWriteLongValidator() - { - // GIVEN - String expectedJson = "\"long\""; - LongValidatorConfig validator = LongValidatorConfig.builder().build(); - - // WHEN - String json = jsonb.toJson(validator); - - // THEN - assertThat(json, not(nullValue())); - assertThat(json, equalTo(expectedJson)); - } -} diff --git a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorFactory.java b/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorFactory.java deleted file mode 100644 index 2aaf4fb10f..0000000000 --- a/incubator/validator-json/src/main/java/io/aklivity/zilla/runtime/validator/json/JsonValidatorFactory.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.json; - -import java.net.URL; -import java.util.function.LongFunction; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfig; - -public final class JsonValidatorFactory implements ValidatorFactorySpi -{ - @Override - public String type() - { - return "json"; - } - - public URL schema() - { - return getClass().getResource("schema/json.schema.patch.json"); - } - - @Override - public ValueValidator createValueReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createReader(config, supplyCatalog); - } - - @Override - public ValueValidator createValueWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createWriter(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createReader(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createWriter(config, supplyCatalog); - } - - private JsonReadValidator createReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return new JsonReadValidator(JsonValidatorConfig.class.cast(config), supplyCatalog); - } - - private JsonWriteValidator createWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return new JsonWriteValidator(JsonValidatorConfig.class.cast(config), supplyCatalog); - } -} diff --git a/incubator/validator-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi b/incubator/validator-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi deleted file mode 100644 index 1b107098bc..0000000000 --- a/incubator/validator-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.validator.json.config.JsonValidatorConfigAdapter diff --git a/incubator/validator-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi b/incubator/validator-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi deleted file mode 100644 index bf8cca9996..0000000000 --- a/incubator/validator-json/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.validator.json.JsonValidatorFactory diff --git a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorFactory.java b/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorFactory.java deleted file mode 100644 index 6b6bd34b37..0000000000 --- a/incubator/validator-protobuf/src/main/java/io/aklivity/zilla/runtime/validator/protobuf/ProtobufValidatorFactory.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc - * - * Licensed under the Aklivity Community License (the "License"); you may not use - * this file except in compliance with the License. You may obtain a copy of the - * License at - * - * https://www.aklivity.io/aklivity-community-license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package io.aklivity.zilla.runtime.validator.protobuf; - -import java.net.URL; -import java.util.function.LongFunction; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfig; - -public final class ProtobufValidatorFactory implements ValidatorFactorySpi -{ - @Override - public String type() - { - return "protobuf"; - } - - public URL schema() - { - return getClass().getResource("schema/protobuf.schema.patch.json"); - } - - @Override - public ValueValidator createValueReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createReader(config, supplyCatalog); - } - - @Override - public ValueValidator createValueWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createWriter(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createReader(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return createWriter(config, supplyCatalog); - } - - private ProtobufReadValidator createReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return new ProtobufReadValidator(ProtobufValidatorConfig.class.cast(config), supplyCatalog); - } - - private ProtobufWriteValidator createWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return new ProtobufWriteValidator(ProtobufValidatorConfig.class.cast(config), supplyCatalog); - } -} diff --git a/incubator/validator-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi b/incubator/validator-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi deleted file mode 100644 index f159a5ed34..0000000000 --- a/incubator/validator-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.validator.protobuf.config.ProtobufValidatorConfigAdapter diff --git a/incubator/validator-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi b/incubator/validator-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi deleted file mode 100644 index 903ff8382f..0000000000 --- a/incubator/validator-protobuf/src/main/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.validator.protobuf.ProtobufValidatorFactory diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfig.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfig.java index 498e14fe26..d765bad3f1 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfig.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfig.java @@ -17,19 +17,19 @@ import static java.util.function.Function.identity; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class HttpParamConfig { public String name; - public ValidatorConfig validator; + public ConverterConfig converter; public HttpParamConfig( String name, - ValidatorConfig validator) + ConverterConfig converter) { this.name = name; - this.validator = validator; + this.converter = converter; } public static HttpParamConfigBuilder builder() diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfigBuilder.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfigBuilder.java index 675a93f0ee..e203a1870b 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfigBuilder.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpParamConfigBuilder.java @@ -18,14 +18,14 @@ import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class HttpParamConfigBuilder extends ConfigBuilder> { private final Function mapper; private String name; - private ValidatorConfig validator; + private ConverterConfig converter; HttpParamConfigBuilder( Function mapper) @@ -47,22 +47,22 @@ public HttpParamConfigBuilder name( return this; } - public HttpParamConfigBuilder validator( - ValidatorConfig validator) + public HttpParamConfigBuilder converter( + ConverterConfig converter) { - this.validator = validator; + this.converter = converter; return this; } - public , C>> C validator( - Function>, C> validator) + public , C>> C converter( + Function>, C> converter) { - return validator.apply(this::validator); + return converter.apply(this::converter); } @Override public T build() { - return mapper.apply(new HttpParamConfig(name, validator)); + return mapper.apply(new HttpParamConfig(name, converter)); } } diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfig.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfig.java index f8b97422da..9c174b120f 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfig.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfig.java @@ -19,7 +19,7 @@ import java.util.List; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class HttpRequestConfig { @@ -41,7 +41,7 @@ public enum Method public final List headers; public final List pathParams; public final List queryParams; - public final ValidatorConfig content; + public final ConverterConfig content; public HttpRequestConfig( String path, @@ -50,7 +50,7 @@ public HttpRequestConfig( List headers, List pathParams, List queryParams, - ValidatorConfig content) + ConverterConfig content) { this.path = path; this.method = method; diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfigBuilder.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfigBuilder.java index 2219674bd8..f71b6abfa2 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfigBuilder.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/config/HttpRequestConfigBuilder.java @@ -20,7 +20,7 @@ import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class HttpRequestConfigBuilder extends ConfigBuilder> { @@ -32,7 +32,7 @@ public class HttpRequestConfigBuilder extends ConfigBuilder headers; private List pathParams; private List queryParams; - private ValidatorConfig content; + private ConverterConfig content; HttpRequestConfigBuilder( Function mapper) @@ -149,14 +149,14 @@ public HttpParamConfigBuilder> pathParam() } public HttpRequestConfigBuilder content( - ValidatorConfig content) + ConverterConfig content) { this.content = content; return this; } public , C>> C content( - Function>, C> content) + Function>, C> content) { return content.apply(this::content); } diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpBindingConfig.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpBindingConfig.java index 386c9eb3fa..4dca3a068a 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpBindingConfig.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpBindingConfig.java @@ -47,10 +47,10 @@ import io.aklivity.zilla.runtime.binding.http.internal.types.String8FW; import io.aklivity.zilla.runtime.binding.http.internal.types.stream.HttpBeginExFW; import io.aklivity.zilla.runtime.engine.config.BindingConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; import io.aklivity.zilla.runtime.engine.config.KindConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public final class HttpBindingConfig { @@ -80,7 +80,7 @@ public HttpBindingConfig( public HttpBindingConfig( BindingConfig binding, - Function createValidator) + Function createConverter) { this.id = binding.id; this.name = binding.name; @@ -90,7 +90,7 @@ public HttpBindingConfig( this.resolveId = binding.resolveId; this.credentials = options != null && options.authorization != null ? asAccessor(options.authorization.credentials) : DEFAULT_CREDENTIALS; - this.requests = createValidator == null ? null : createRequestTypes(createValidator); + this.requests = createConverter == null ? null : createRequestTypes(createConverter); } public HttpRouteConfig resolve( @@ -195,38 +195,38 @@ private Function, String> asAccessor( } private List createRequestTypes( - Function createValidator) + Function createConverter) { List requestTypes = new LinkedList<>(); if (this.options != null && this.options.requests != null) { for (HttpRequestConfig request : this.options.requests) { - Map headers = new HashMap<>(); + Map headers = new HashMap<>(); if (request.headers != null) { for (HttpParamConfig header : request.headers) { - headers.put(new String8FW(header.name), createValidator.apply(header.validator)); + headers.put(new String8FW(header.name), createConverter.apply(header.converter)); } } - Map pathParams = new Object2ObjectHashMap<>(); + Map pathParams = new Object2ObjectHashMap<>(); if (request.pathParams != null) { for (HttpParamConfig pathParam : request.pathParams) { - pathParams.put(pathParam.name, createValidator.apply(pathParam.validator)); + pathParams.put(pathParam.name, createConverter.apply(pathParam.converter)); } } - Map queryParams = new TreeMap<>(QUERY_STRING_COMPARATOR); + Map queryParams = new TreeMap<>(QUERY_STRING_COMPARATOR); if (request.queryParams != null) { for (HttpParamConfig queryParam : request.queryParams) { - queryParams.put(queryParam.name, createValidator.apply(queryParam.validator)); + queryParams.put(queryParam.name, createConverter.apply(queryParam.converter)); } } - ValueValidator content = request.content == null ? null : createValidator.apply(request.content); + Converter content = request.content == null ? null : createConverter.apply(request.content); HttpRequestType requestType = HttpRequestType.builder() .path(request.path) .method(request.method) @@ -308,11 +308,11 @@ private boolean validateHeaderValues( { if (valid.value) { - ValueValidator validator = requestType.headers.get(header.name()); - if (validator != null) + Converter converter = requestType.headers.get(header.name()); + if (converter != null) { String16FW value = header.value(); - valid.value &= validator.validate(value.value(), value.offset(), value.length(), ValueConsumer.NOP) != -1; + valid.value &= converter.convert(value.value(), value.offset(), value.length(), ValueConsumer.NOP) != -1; } } }); @@ -335,8 +335,8 @@ private boolean validatePathParams( if (value != null) { String8FW value0 = new String8FW(value); - ValueValidator validator = requestType.pathParams.get(name); - if (validator.validate(value0.value(), value0.offset(), value0.length(), ValueConsumer.NOP) == -1) + Converter converter = requestType.pathParams.get(name); + if (converter.convert(value0.value(), value0.offset(), value0.length(), ValueConsumer.NOP) == -1) { valid = false; break; @@ -355,11 +355,11 @@ private boolean validateQueryParams( while (valid && matcher.find()) { String name = matcher.group(1); - ValueValidator validator = requestType.queryParams.get(name); - if (validator != null) + Converter converter = requestType.queryParams.get(name); + if (converter != null) { String8FW value = new String8FW(matcher.group(2)); - valid &= validator.validate(value.value(), value.offset(), value.length(), ValueConsumer.NOP) != -1; + valid &= converter.convert(value.value(), value.offset(), value.length(), ValueConsumer.NOP) != -1; } } return valid; @@ -373,7 +373,7 @@ public boolean validateContent( { return requestType == null || requestType.content == null || - requestType.content.validate(buffer, index, length, ValueConsumer.NOP) != -1; + requestType.content.convert(buffer, index, length, ValueConsumer.NOP) != -1; } private static Function, String> orElseIfNull( diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapter.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapter.java index 39a64b7e5c..b84e0862d6 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapter.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapter.java @@ -30,8 +30,8 @@ import io.aklivity.zilla.runtime.binding.http.config.HttpParamConfig; import io.aklivity.zilla.runtime.binding.http.config.HttpRequestConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapter; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapter; public class HttpRequestConfigAdapter implements JsonbAdapter { @@ -44,7 +44,7 @@ public class HttpRequestConfigAdapter implements JsonbAdapter ((JsonString) i).getString()) .collect(Collectors.toList()); } - ValidatorConfig content = null; + ConverterConfig content = null; if (object.containsKey(CONTENT_NAME)) { JsonValue contentJson = object.get(CONTENT_NAME); - content = validator.adaptFromJson(contentJson); + content = converter.adaptFromJson(contentJson); } List headers = null; if (object.containsKey(HEADERS_NAME)) @@ -145,7 +145,7 @@ public HttpRequestConfig adaptFromJson( { HttpParamConfig header = HttpParamConfig.builder() .name(entry.getKey()) - .validator(validator.adaptFromJson(entry.getValue())) + .converter(converter.adaptFromJson(entry.getValue())) .build(); headers.add(header); } @@ -163,7 +163,7 @@ public HttpRequestConfig adaptFromJson( { HttpParamConfig pathParam = HttpParamConfig.builder() .name(entry.getKey()) - .validator(validator.adaptFromJson(entry.getValue())) + .converter(converter.adaptFromJson(entry.getValue())) .build(); pathParams.add(pathParam); } @@ -176,7 +176,7 @@ public HttpRequestConfig adaptFromJson( { HttpParamConfig queryParam = HttpParamConfig.builder() .name(entry.getKey()) - .validator(validator.adaptFromJson(entry.getValue())) + .converter(converter.adaptFromJson(entry.getValue())) .build(); queryParams.add(queryParam); } diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestType.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestType.java index 917a1434ea..fde746275f 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestType.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestType.java @@ -22,7 +22,7 @@ import io.aklivity.zilla.runtime.binding.http.config.HttpRequestConfig; import io.aklivity.zilla.runtime.binding.http.internal.types.String8FW; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; +import io.aklivity.zilla.runtime.engine.converter.Converter; public final class HttpRequestType { @@ -43,10 +43,10 @@ public final class HttpRequestType public final Matcher queryMatcher; // validators - public final Map headers; - public final Map pathParams; - public final Map queryParams; - public final ValueValidator content; + public final Map headers; + public final Map pathParams; + public final Map queryParams; + public final Converter content; private HttpRequestType( String path, @@ -54,10 +54,10 @@ private HttpRequestType( List contentType, Matcher pathMatcher, Matcher queryMatcher, - Map headers, - Map pathParams, - Map queryParams, - ValueValidator content) + Map headers, + Map pathParams, + Map queryParams, + Converter content) { this.path = path; this.method = method; @@ -80,10 +80,10 @@ public static final class Builder private String path; private HttpRequestConfig.Method method; private List contentType; - private Map headers; - private Map pathParams; - private Map queryParams; - private ValueValidator content; + private Map headers; + private Map pathParams; + private Map queryParams; + private Converter content; public Builder path( String path) @@ -107,28 +107,28 @@ public Builder contentType( } public Builder headers( - Map headers) + Map headers) { this.headers = headers; return this; } public Builder pathParams( - Map pathParams) + Map pathParams) { this.pathParams = pathParams; return this; } public Builder queryParams( - Map queryParams) + Map queryParams) { this.queryParams = queryParams; return this; } public Builder content( - ValueValidator content) + Converter content) { this.content = content; return this; diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/stream/HttpServerFactory.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/stream/HttpServerFactory.java index 94b460e4bc..675c0387ac 100644 --- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/stream/HttpServerFactory.java +++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/stream/HttpServerFactory.java @@ -140,9 +140,9 @@ import io.aklivity.zilla.runtime.engine.buffer.BufferPool; import io.aklivity.zilla.runtime.engine.concurrent.Signaler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; import io.aklivity.zilla.runtime.engine.guard.GuardHandler; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; public final class HttpServerFactory implements HttpStreamFactory { @@ -498,7 +498,7 @@ public final class HttpServerFactory implements HttpStreamFactory private final Http2ServerDecoder decodeHttp2IgnoreAll = this::decodeHttp2IgnoreAll; private final EnumMap decodersByFrameType; - private final Function createValidator; + private final Function createConverter; { final EnumMap decodersByFrameType = new EnumMap<>(Http2FrameType.class); @@ -572,7 +572,7 @@ public HttpServerFactory( this.connectionClose = CONNECTION_CLOSE_PATTERN.matcher(""); this.maximumHeadersSize = bufferPool.slotCapacity(); this.decodeMax = bufferPool.slotCapacity(); - this.createValidator = context::createValueWriter; + this.createConverter = context::createWriter; this.encodeMax = bufferPool.slotCapacity(); this.bindings = new Long2ObjectHashMap<>(); @@ -596,7 +596,7 @@ public int routedTypeId() public void attach( BindingConfig binding) { - HttpBindingConfig httpBinding = new HttpBindingConfig(binding, createValidator); + HttpBindingConfig httpBinding = new HttpBindingConfig(binding, createConverter); bindings.put(binding.id, httpBinding); } diff --git a/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpOptionsConfigAdapterTest.java b/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpOptionsConfigAdapterTest.java index 451c7668e6..3d5f4b3d53 100644 --- a/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpOptionsConfigAdapterTest.java +++ b/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpOptionsConfigAdapterTest.java @@ -42,7 +42,7 @@ import io.aklivity.zilla.runtime.binding.http.config.HttpVersion; import io.aklivity.zilla.runtime.binding.http.internal.types.String16FW; import io.aklivity.zilla.runtime.binding.http.internal.types.String8FW; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; public class HttpOptionsConfigAdapterTest { @@ -158,15 +158,15 @@ public void shouldReadOptions() assertThat(request.method, equalTo(HttpRequestConfig.Method.GET)); assertThat(request.contentType.get(0), equalTo("application/json")); assertThat(request.headers.get(0).name, equalTo("content-type")); - assertThat(request.headers.get(0).validator, instanceOf(TestValidatorConfig.class)); - assertThat(request.headers.get(0).validator.type, equalTo("test")); + assertThat(request.headers.get(0).converter, instanceOf(TestConverterConfig.class)); + assertThat(request.headers.get(0).converter.type, equalTo("test")); assertThat(request.pathParams.get(0).name, equalTo("id")); - assertThat(request.pathParams.get(0).validator, instanceOf(TestValidatorConfig.class)); - assertThat(request.pathParams.get(0).validator.type, equalTo("test")); + assertThat(request.pathParams.get(0).converter, instanceOf(TestConverterConfig.class)); + assertThat(request.pathParams.get(0).converter.type, equalTo("test")); assertThat(request.queryParams.get(0).name, equalTo("index")); - assertThat(request.queryParams.get(0).validator, instanceOf(TestValidatorConfig.class)); - assertThat(request.queryParams.get(0).validator.type, equalTo("test")); - assertThat(request.content, instanceOf(TestValidatorConfig.class)); + assertThat(request.queryParams.get(0).converter, instanceOf(TestConverterConfig.class)); + assertThat(request.queryParams.get(0).converter.type, equalTo("test")); + assertThat(request.content, instanceOf(TestConverterConfig.class)); assertThat(request.content.type, equalTo("test")); } @@ -280,20 +280,20 @@ public void shouldWriteOptions() .contentType("application/json") .header() .name("content-type") - .validator(TestValidatorConfig::builder) + .converter(TestConverterConfig::builder) .build() .build() .pathParam() .name("id") - .validator(TestValidatorConfig::builder) + .converter(TestConverterConfig::builder) .build() .build() .queryParam() .name("index") - .validator(TestValidatorConfig::builder) + .converter(TestConverterConfig::builder) .build() .build() - .content(TestValidatorConfig::builder) + .content(TestConverterConfig::builder) .build() .build() .build(); diff --git a/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapterTest.java b/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapterTest.java index 5178001925..7efd1e3bb7 100644 --- a/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapterTest.java +++ b/runtime/binding-http/src/test/java/io/aklivity/zilla/runtime/binding/http/internal/config/HttpRequestConfigAdapterTest.java @@ -29,7 +29,7 @@ import org.junit.Test; import io.aklivity.zilla.runtime.binding.http.config.HttpRequestConfig; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; public class HttpRequestConfigAdapterTest { @@ -81,15 +81,15 @@ public void shouldReadOptions() assertThat(request.method, equalTo(HttpRequestConfig.Method.GET)); assertThat(request.contentType.get(0), equalTo("application/json")); assertThat(request.headers.get(0).name, equalTo("content-type")); - assertThat(request.headers.get(0).validator, instanceOf(TestValidatorConfig.class)); - assertThat(request.headers.get(0).validator.type, equalTo("test")); + assertThat(request.headers.get(0).converter, instanceOf(TestConverterConfig.class)); + assertThat(request.headers.get(0).converter.type, equalTo("test")); assertThat(request.pathParams.get(0).name, equalTo("id")); - assertThat(request.pathParams.get(0).validator, instanceOf(TestValidatorConfig.class)); - assertThat(request.pathParams.get(0).validator.type, equalTo("test")); + assertThat(request.pathParams.get(0).converter, instanceOf(TestConverterConfig.class)); + assertThat(request.pathParams.get(0).converter.type, equalTo("test")); assertThat(request.queryParams.get(0).name, equalTo("index")); - assertThat(request.queryParams.get(0).validator, instanceOf(TestValidatorConfig.class)); - assertThat(request.queryParams.get(0).validator.type, equalTo("test")); - assertThat(request.content, instanceOf(TestValidatorConfig.class)); + assertThat(request.queryParams.get(0).converter, instanceOf(TestConverterConfig.class)); + assertThat(request.queryParams.get(0).converter.type, equalTo("test")); + assertThat(request.content, instanceOf(TestConverterConfig.class)); assertThat(request.content.type, equalTo("test")); } @@ -128,20 +128,20 @@ public void shouldWriteOptions() .contentType("application/json") .header() .name("content-type") - .validator(TestValidatorConfig::builder) + .converter(TestConverterConfig::builder) .build() .build() .pathParam() .name("id") - .validator(TestValidatorConfig::builder) + .converter(TestConverterConfig::builder) .build() .build() .queryParam() .name("index") - .validator(TestValidatorConfig::builder) + .converter(TestConverterConfig::builder) .build() .build() - .content(TestValidatorConfig::builder) + .content(TestConverterConfig::builder) .build() .build(); diff --git a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/config/KafkaTopicConfig.java b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/config/KafkaTopicConfig.java index d35c471173..b4d833f385 100644 --- a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/config/KafkaTopicConfig.java +++ b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/config/KafkaTopicConfig.java @@ -19,22 +19,22 @@ import io.aklivity.zilla.runtime.binding.kafka.internal.types.KafkaDeltaType; import io.aklivity.zilla.runtime.binding.kafka.internal.types.KafkaOffsetType; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class KafkaTopicConfig { public final String name; public final KafkaOffsetType defaultOffset; public final KafkaDeltaType deltaType; - public final ValidatorConfig key; - public final ValidatorConfig value; + public final ConverterConfig key; + public final ConverterConfig value; public KafkaTopicConfig( String name, KafkaOffsetType defaultOffset, KafkaDeltaType deltaType, - ValidatorConfig key, - ValidatorConfig value) + ConverterConfig key, + ConverterConfig value) { this.name = name; this.defaultOffset = defaultOffset; diff --git a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/cache/KafkaCachePartition.java b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/cache/KafkaCachePartition.java index 3cd227b420..aed84f565b 100644 --- a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/cache/KafkaCachePartition.java +++ b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/cache/KafkaCachePartition.java @@ -73,10 +73,8 @@ import io.aklivity.zilla.runtime.binding.kafka.internal.types.Varint32FW; import io.aklivity.zilla.runtime.binding.kafka.internal.types.cache.KafkaCacheDeltaFW; import io.aklivity.zilla.runtime.binding.kafka.internal.types.cache.KafkaCacheEntryFW; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public final class KafkaCachePartition { @@ -92,6 +90,7 @@ public final class KafkaCachePartition private static final String FORMAT_PRODUCE_PARTITION_DIRECTORY = "%s-%d-%d"; private static final int FLAGS_COMPLETE = 0x03; + private static final int FLAGS_FIN = 0x01; public static final int CACHE_ENTRY_FLAGS_DIRTY = 0x01; public static final int CACHE_ENTRY_FLAGS_COMPLETED = 0x02; public static final int CACHE_ENTRY_FLAGS_ABORTED = 0x04; @@ -340,14 +339,14 @@ public void writeEntry( KafkaCacheEntryFW ancestor, int entryFlags, KafkaDeltaType deltaType, - ValueValidator validateKey, - FragmentValidator validateValue) + Converter convertKey, + Converter convertValue) { final long keyHash = computeHash(key); final int valueLength = value != null ? value.sizeof() : -1; writeEntryStart(offset, entryMark, valueMark, timestamp, producerId, key, - keyHash, valueLength, ancestor, entryFlags, deltaType, value, validateKey, validateValue); - writeEntryContinue(FLAGS_COMPLETE, entryMark, valueMark, value, validateValue); + keyHash, valueLength, ancestor, entryFlags, deltaType, value, convertKey, convertValue); + writeEntryContinue(FLAGS_COMPLETE, entryMark, valueMark, value, convertValue); writeEntryFinish(headers, deltaType); } @@ -364,8 +363,8 @@ public void writeEntryStart( int entryFlags, KafkaDeltaType deltaType, OctetsFW payload, - ValueValidator validateKey, - FragmentValidator validateValue) + Converter convertKey, + Converter convertValue) { assert offset > this.progress : String.format("%d > %d", offset, this.progress); this.progress = offset; @@ -398,9 +397,9 @@ public void writeEntryStart( this.ancestorEntry = ancestor; int convertedPos = NO_CONVERTED_POSITION; - if (validateValue != FragmentValidator.NONE) + if (convertValue != Converter.NONE) { - int convertedPadding = validateValue.padding(payload.buffer(), payload.offset(), payload.sizeof()); + int convertedPadding = convertValue.padding(payload.buffer(), payload.offset(), payload.sizeof()); int convertedMaxLength = valueMaxLength + convertedPadding; convertedPos = convertedFile.capacity(); @@ -438,8 +437,8 @@ public void writeEntryStart( logFile.appendBytes(buffer, index, length); }; OctetsFW value = key.value(); - int validated = validateKey.validate(value.buffer(), value.offset(), value.sizeof(), writeKey); - if (validated == -1) + int converted = convertKey.convert(value.buffer(), value.offset(), value.sizeof(), writeKey); + if (converted == -1) { // For Fetch Validation failure, we still push the event to Cache logFile.appendBytes(key); @@ -470,7 +469,7 @@ public void writeEntryContinue( MutableInteger entryMark, MutableInteger valueMark, OctetsFW payload, - FragmentValidator validateValue) + Converter convertValue) { final Node head = sentinel.previous; assert head != sentinel; @@ -487,9 +486,9 @@ public void writeEntryContinue( logFile.appendBytes(payload.buffer(), payload.offset(), payload.sizeof()); - if (payload != null && validateValue != FragmentValidator.NONE) + if (payload != null && convertValue != Converter.NONE) { - final FragmentConsumer consumeConverted = (flag, buffer, index, length) -> + final ValueConsumer consumeConverted = (buffer, index, length) -> { final int convertedLengthAt = logFile.readInt(entryMark.value + FIELD_OFFSET_CONVERTED_POSITION); final int convertedLength = convertedFile.readInt(convertedLengthAt); @@ -505,12 +504,14 @@ public void writeEntryContinue( final int valueLength = logFile.capacity() - valueMark.value; // TODO: log if invalid - int validated = validateValue.validate(flags, logFile.buffer(), valueMark.value, valueLength, consumeConverted); - if (validated == -1) + if ((flags & FLAGS_FIN) != 0x00) { - logFile.writeInt(entryMark.value + FIELD_OFFSET_CONVERTED_POSITION, NO_CONVERTED_POSITION); + int converted = convertValue.convert(logFile.buffer(), valueMark.value, valueLength, consumeConverted); + if (converted == -1) + { + logFile.writeInt(entryMark.value + FIELD_OFFSET_CONVERTED_POSITION, NO_CONVERTED_POSITION); + } } - } } @@ -611,8 +612,8 @@ public int writeProduceEntryStart( ArrayFW headers, int trailersSizeMax, OctetsFW payload, - ValueValidator validateKey, - FragmentValidator validateValue) + Converter convertKey, + Converter convertValue) { assert offset > this.progress : String.format("%d > %d", offset, this.progress); this.progress = offset; @@ -627,9 +628,9 @@ public int writeProduceEntryStart( final int valueMaxLength = valueLength == -1 ? 0 : valueLength; int convertedPos = NO_CONVERTED_POSITION; - if (validateValue != FragmentValidator.NONE) + if (convertValue != Converter.NONE) { - int convertedPadding = validateValue.padding(payload.buffer(), payload.offset(), payload.sizeof()); + int convertedPadding = convertValue.padding(payload.buffer(), payload.offset(), payload.sizeof()); int convertedMaxLength = valueMaxLength + convertedPadding; convertedPos = convertedFile.capacity(); @@ -655,7 +656,7 @@ public int writeProduceEntryStart( logFile.appendBytes(entryInfo); - int validated = 0; + int converted = 0; write: { OctetsFW value = key.value(); @@ -672,9 +673,9 @@ public int writeProduceEntryStart( logFile.appendBytes(buffer, index, length); }; - validated = validateKey.validate(value.buffer(), value.offset(), value.sizeof(), writeKey); + converted = convertKey.convert(value.buffer(), value.offset(), value.sizeof(), writeKey); - if (validated == -1) + if (converted == -1) { break write; } @@ -700,7 +701,7 @@ public int writeProduceEntryStart( assert indexFile.available() >= Long.BYTES; indexFile.appendLong(indexEntry); } - return validated; + return converted; } public int writeProduceEntryContinue( @@ -710,7 +711,7 @@ public int writeProduceEntryContinue( MutableInteger valueMark, MutableInteger valueLimit, OctetsFW payload, - FragmentValidator validateValue) + Converter convertValue) { final KafkaCacheSegment segment = head.segment; assert segment != null; @@ -718,14 +719,14 @@ public int writeProduceEntryContinue( final KafkaCacheFile logFile = segment.logFile(); final KafkaCacheFile convertedFile = segment.convertedFile(); - int validated = 0; + int converted = 0; if (payload != null) { valueLimit.value += logFile.writeBytes(valueLimit.value, payload); - if (validateValue != FragmentValidator.NONE) + if (convertValue != Converter.NONE) { - final FragmentConsumer consumeConverted = (flag, buffer, index, length) -> + final ValueConsumer consumeConverted = (buffer, index, length) -> { final int convertedLengthAt = logFile.readInt(entryMark.value + FIELD_OFFSET_CONVERTED_POSITION); final int convertedLength = convertedFile.readInt(convertedLengthAt); @@ -740,11 +741,14 @@ public int writeProduceEntryContinue( }; final int valueLength = valueLimit.value - valueMark.value; - validated = validateValue.validate(flags, logFile.buffer(), valueMark.value, valueLength, consumeConverted); + if ((flags & FLAGS_FIN) != 0x00) + { + converted = convertValue.convert(logFile.buffer(), valueMark.value, valueLength, consumeConverted); + } } } - return validated; + return converted; } public void writeProduceEntryFin( diff --git a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaBindingConfig.java b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaBindingConfig.java index e1c0946ee3..92c772ea06 100644 --- a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaBindingConfig.java +++ b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaBindingConfig.java @@ -31,8 +31,7 @@ import io.aklivity.zilla.runtime.engine.EngineContext; import io.aklivity.zilla.runtime.engine.config.BindingConfig; import io.aklivity.zilla.runtime.engine.config.KindConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; +import io.aklivity.zilla.runtime.engine.converter.Converter; public final class KafkaBindingConfig { @@ -42,10 +41,10 @@ public final class KafkaBindingConfig public final KindConfig kind; public final List routes; public final ToLongFunction resolveId; - public final Map fragmentReaders; - public final Map fragmentWriters; - public final Map valueReaders; - public final Map valueWriters; + public final Map keyReaders; + public final Map keyWriters; + public final Map valueReaders; + public final Map valueWriters; public KafkaBindingConfig( BindingConfig binding, @@ -57,37 +56,37 @@ public KafkaBindingConfig( this.options = KafkaOptionsConfig.class.cast(binding.options); this.routes = binding.routes.stream().map(KafkaRouteConfig::new).collect(toList()); this.resolveId = binding.resolveId; - this.valueReaders = options != null && options.topics != null + this.keyReaders = options != null && options.topics != null ? options.topics.stream() .collect(Collectors.toMap( t -> t.name, t -> t.key != null - ? context.createValueReader(t.key) - : ValueValidator.NONE)) + ? context.createReader(t.key) + : Converter.NONE)) : null; - this.valueWriters = options != null && options.topics != null + this.keyWriters = options != null && options.topics != null ? options.topics.stream() .collect(Collectors.toMap( t -> t.name, t -> t.key != null - ? context.createValueWriter(t.key) - : ValueValidator.NONE)) + ? context.createWriter(t.key) + : Converter.NONE)) : null; - this.fragmentReaders = options != null && options.topics != null + this.valueReaders = options != null && options.topics != null ? options.topics.stream() .collect(Collectors.toMap( t -> t.name, t -> t.value != null - ? context.createFragmentReader(t.value) - : FragmentValidator.NONE)) + ? context.createReader(t.value) + : Converter.NONE)) : null; - this.fragmentWriters = options != null && options.topics != null + this.valueWriters = options != null && options.topics != null ? options.topics.stream() .collect(Collectors.toMap( t -> t.name, t -> t.value != null - ? context.createFragmentWriter(t.value) - : FragmentValidator.NONE)) + ? context.createWriter(t.value) + : Converter.NONE)) : null; } @@ -142,27 +141,27 @@ public KafkaOffsetType supplyDefaultOffset( return config != null && config.defaultOffset != null ? config.defaultOffset : HISTORICAL; } - public ValueValidator resolveValueReader( + public Converter resolveKeyReader( String topic) { - return valueReaders != null ? valueReaders.getOrDefault(topic, ValueValidator.NONE) : ValueValidator.NONE; + return keyReaders != null ? keyReaders.getOrDefault(topic, Converter.NONE) : Converter.NONE; } - public ValueValidator resolveValueWriter( + public Converter resolveKeyWriter( String topic) { - return valueWriters != null ? valueWriters.getOrDefault(topic, ValueValidator.NONE) : ValueValidator.NONE; + return keyWriters != null ? keyWriters.getOrDefault(topic, Converter.NONE) : Converter.NONE; } - public FragmentValidator resolveFragmentReader( + public Converter resolveValueReader( String topic) { - return fragmentReaders != null ? fragmentReaders.getOrDefault(topic, FragmentValidator.NONE) : FragmentValidator.NONE; + return valueReaders != null ? valueReaders.getOrDefault(topic, Converter.NONE) : Converter.NONE; } - public FragmentValidator resolveFragmentWriter( + public Converter resolveValueWriter( String topic) { - return fragmentWriters != null ? fragmentWriters.getOrDefault(topic, FragmentValidator.NONE) : FragmentValidator.NONE; + return valueWriters != null ? valueWriters.getOrDefault(topic, Converter.NONE) : Converter.NONE; } } diff --git a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaTopicConfigAdapter.java b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaTopicConfigAdapter.java index ea7fcf79b6..6c1ac96c94 100644 --- a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaTopicConfigAdapter.java +++ b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaTopicConfigAdapter.java @@ -23,8 +23,8 @@ import io.aklivity.zilla.runtime.binding.kafka.config.KafkaTopicConfig; import io.aklivity.zilla.runtime.binding.kafka.internal.types.KafkaDeltaType; import io.aklivity.zilla.runtime.binding.kafka.internal.types.KafkaOffsetType; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapter; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapter; public final class KafkaTopicConfigAdapter implements JsonbAdapter { @@ -35,7 +35,7 @@ public final class KafkaTopicConfigAdapter implements JsonbAdapter(); this.defaultOffset = KafkaOffsetType.LIVE; this.cursor = cursorFactory.newCursor( @@ -709,7 +708,7 @@ private void onClientInitialData( final long keyHash = partition.computeKeyHash(key); if (partition.writeProduceEntryStart(partitionOffset, stream.segment, stream.entryMark, stream.valueMark, stream.valueLimit, timestamp, stream.initialId, sequence, ackMode, key, keyHash, valueLength, - headers, trailersSizeMax, valueFragment, validateKey, validateValue) == -1) + headers, trailersSizeMax, valueFragment, convertKey, convertValue) == -1) { error = ERROR_INVALID_RECORD; break init; @@ -727,7 +726,7 @@ private void onClientInitialData( { if (partition.writeProduceEntryContinue(flags, stream.segment, stream.entryMark, stream.valueMark, stream.valueLimit, - valueFragment, validateValue) == -1) + valueFragment, convertValue) == -1) { error = ERROR_INVALID_RECORD; } @@ -789,7 +788,7 @@ private void onClientInitialFlush( partition.writeProduceEntryStart(partitionOffset, stream.segment, stream.entryMark, stream.valueMark, stream.valueLimit, now().toEpochMilli(), stream.initialId, PRODUCE_FLUSH_SEQUENCE, KafkaAckMode.LEADER_ONLY, EMPTY_KEY, keyHash, 0, EMPTY_TRAILERS, - trailersSizeMax, EMPTY_OCTETS, validateKey, validateValue); + trailersSizeMax, EMPTY_OCTETS, convertKey, convertValue); stream.partitionOffset = partitionOffset; partitionOffset++; diff --git a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/stream/KafkaCacheServerFetchFactory.java b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/stream/KafkaCacheServerFetchFactory.java index 9899a10f8c..a81a306ddb 100644 --- a/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/stream/KafkaCacheServerFetchFactory.java +++ b/runtime/binding-kafka/src/main/java/io/aklivity/zilla/runtime/binding/kafka/internal/stream/KafkaCacheServerFetchFactory.java @@ -88,8 +88,7 @@ import io.aklivity.zilla.runtime.engine.binding.function.MessageConsumer; import io.aklivity.zilla.runtime.engine.buffer.BufferPool; import io.aklivity.zilla.runtime.engine.concurrent.Signaler; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; +import io.aklivity.zilla.runtime.engine.converter.Converter; public final class KafkaCacheServerFetchFactory implements BindingHandler { @@ -234,11 +233,11 @@ public MessageConsumer newStream( final KafkaCache cache = supplyCache.apply(cacheName); final KafkaCacheTopic cacheTopic = cache.supplyTopic(topicName); final KafkaCachePartition partition = cacheTopic.supplyFetchPartition(partitionId); - final ValueValidator validateKey = binding.resolveValueReader(topicName); - final FragmentValidator validateValue = binding.resolveFragmentReader(topicName); + final Converter convertKey = binding.resolveKeyReader(topicName); + final Converter convertValue = binding.resolveValueReader(topicName); final KafkaCacheServerFetchFanout newFanout = new KafkaCacheServerFetchFanout(routedId, resolvedId, authorization, - affinity, partition, routeDeltaType, defaultOffset, validateKey, validateValue); + affinity, partition, routeDeltaType, defaultOffset, convertKey, convertValue); cacheRoute.serverFetchFanoutsByTopicPartition.put(partitionKey, newFanout); fanout = newFanout; @@ -475,8 +474,8 @@ final class KafkaCacheServerFetchFanout private final KafkaOffsetType defaultOffset; private final long retentionMillisMax; private final List members; - private final ValueValidator validateKey; - private final FragmentValidator validateValue; + private final Converter convertKey; + private final Converter convertValue; private final MutableInteger entryMark; private final MutableInteger valueMark; @@ -513,8 +512,8 @@ private KafkaCacheServerFetchFanout( KafkaCachePartition partition, KafkaDeltaType deltaType, KafkaOffsetType defaultOffset, - ValueValidator validateKey, - FragmentValidator validateValue) + Converter convertKey, + Converter convertValue) { this.originId = originId; this.routedId = routedId; @@ -525,8 +524,8 @@ private KafkaCacheServerFetchFanout( this.retentionMillisMax = defaultOffset == LIVE ? SECONDS.toMillis(30) : Long.MAX_VALUE; this.members = new ArrayList<>(); this.leaderId = leaderId; - this.validateKey = validateKey; - this.validateValue = validateValue; + this.convertKey = convertKey; + this.convertValue = convertValue; this.entryMark = new MutableInteger(0); this.valueMark = new MutableInteger(0); } @@ -774,7 +773,7 @@ private void onServerFanoutReplyFlush( partition.writeEntry(partitionOffset, entryMark, valueMark, 0L, producerId, EMPTY_KEY, EMPTY_HEADERS, EMPTY_OCTETS, null, - entryFlags, KafkaDeltaType.NONE, validateKey, validateValue); + entryFlags, KafkaDeltaType.NONE, convertKey, convertValue); if (result == KafkaTransactionResult.ABORT) { @@ -878,12 +877,12 @@ private void onServerFanoutReplyData( final long keyHash = partition.computeKeyHash(key); final KafkaCacheEntryFW ancestor = findAndMarkAncestor(key, nextHead, (int) keyHash, partitionOffset); partition.writeEntryStart(partitionOffset, entryMark, valueMark, timestamp, producerId, - key, keyHash, valueLength, ancestor, entryFlags, deltaType, valueFragment, validateKey, validateValue); + key, keyHash, valueLength, ancestor, entryFlags, deltaType, valueFragment, convertKey, convertValue); } if (valueFragment != null) { - partition.writeEntryContinue(flags, entryMark, valueMark, valueFragment, validateValue); + partition.writeEntryContinue(flags, entryMark, valueMark, valueFragment, convertValue); } if ((flags & FLAGS_FIN) != 0x00) diff --git a/runtime/binding-kafka/src/test/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaOptionsConfigAdapterTest.java b/runtime/binding-kafka/src/test/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaOptionsConfigAdapterTest.java index b05a1a2ccb..20907fd221 100644 --- a/runtime/binding-kafka/src/test/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaOptionsConfigAdapterTest.java +++ b/runtime/binding-kafka/src/test/java/io/aklivity/zilla/runtime/binding/kafka/internal/config/KafkaOptionsConfigAdapterTest.java @@ -33,7 +33,7 @@ import io.aklivity.zilla.runtime.binding.kafka.config.KafkaOptionsConfig; import io.aklivity.zilla.runtime.binding.kafka.config.KafkaSaslConfig; import io.aklivity.zilla.runtime.binding.kafka.config.KafkaTopicConfig; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; public class KafkaOptionsConfigAdapterTest { @@ -87,7 +87,7 @@ public void shouldWriteOptions() { KafkaOptionsConfig options = new KafkaOptionsConfig( singletonList("test"), - singletonList(new KafkaTopicConfig("test", LIVE, JSON_PATCH, null, TestValidatorConfig.builder().build())), + singletonList(new KafkaTopicConfig("test", LIVE, JSON_PATCH, null, TestConverterConfig.builder().build())), new KafkaSaslConfig("plain", "username", "password")); String text = jsonb.toJson(options); @@ -157,7 +157,7 @@ public void shouldWriteCatalogOptions() KafkaOptionsConfig options = new KafkaOptionsConfig( singletonList("test"), singletonList(new KafkaTopicConfig("test", LIVE, JSON_PATCH, null, - TestValidatorConfig.builder() + TestConverterConfig.builder() .length(0) .build())), new KafkaSaslConfig("plain", "username", "password")); diff --git a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfig.java b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfig.java index bcba8eb11f..1940a546fd 100644 --- a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfig.java +++ b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfig.java @@ -17,16 +17,16 @@ import static java.util.function.Function.identity; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class MqttTopicConfig { public final String name; - public final ValidatorConfig content; + public final ConverterConfig content; public MqttTopicConfig( String name, - ValidatorConfig content) + ConverterConfig content) { this.name = name; this.content = content; diff --git a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfigBuilder.java b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfigBuilder.java index 382d56b951..f6a5a5316d 100644 --- a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfigBuilder.java +++ b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/config/MqttTopicConfigBuilder.java @@ -18,14 +18,14 @@ import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; public class MqttTopicConfigBuilder extends ConfigBuilder> { private final Function mapper; private String name; - private ValidatorConfig content; + private ConverterConfig content; MqttTopicConfigBuilder( Function mapper) @@ -48,14 +48,14 @@ public MqttTopicConfigBuilder name( } public MqttTopicConfigBuilder content( - ValidatorConfig content) + ConverterConfig content) { this.content = content; return this; } public , C>> C content( - Function>, C> content) + Function>, C> content) { return content.apply(this::content); } diff --git a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttBindingConfig.java b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttBindingConfig.java index 30e4346978..4cd34eb222 100644 --- a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttBindingConfig.java +++ b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttBindingConfig.java @@ -32,8 +32,8 @@ import io.aklivity.zilla.runtime.engine.EngineContext; import io.aklivity.zilla.runtime.engine.config.BindingConfig; import io.aklivity.zilla.runtime.engine.config.KindConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; import io.aklivity.zilla.runtime.engine.guard.GuardHandler; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; public final class MqttBindingConfig { @@ -45,7 +45,7 @@ public final class MqttBindingConfig public final MqttOptionsConfig options; public final List routes; public final Function credentials; - public final Map topics; + public final Map topics; public final ToLongFunction resolveId; public final GuardHandler guard; @@ -65,7 +65,7 @@ public MqttBindingConfig( options.topics != null ? options.topics.stream() .collect(Collectors.toMap(t -> t.name, - t -> context.createValueWriter(t.content))) : null; + t -> context.createWriter(t.content))) : null; this.guard = resolveGuard(context); } @@ -109,10 +109,10 @@ public MqttRouteConfig resolvePublish( .orElse(null); } - public ValueValidator supplyValidator( + public Converter supplyConverter( String topic) { - return topics != null ? topics.getOrDefault(topic, ValueValidator.NONE) : ValueValidator.NONE; + return topics != null ? topics.getOrDefault(topic, Converter.NONE) : Converter.NONE; } public Function credentials() diff --git a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttTopicConfigAdapter.java b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttTopicConfigAdapter.java index ba00810967..b769ed8fc6 100644 --- a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttTopicConfigAdapter.java +++ b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttTopicConfigAdapter.java @@ -23,14 +23,14 @@ import io.aklivity.zilla.runtime.binding.mqtt.config.MqttTopicConfig; import io.aklivity.zilla.runtime.binding.mqtt.config.MqttTopicConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapter; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapter; public class MqttTopicConfigAdapter implements JsonbAdapter { private static final String NAME_NAME = "name"; private static final String CONTENT_NAME = "content"; - private final ValidatorConfigAdapter validator = new ValidatorConfigAdapter(); + private final ConverterConfigAdapter converter = new ConverterConfigAdapter(); @Override public JsonObject adaptToJson( @@ -44,8 +44,8 @@ public JsonObject adaptToJson( if (topic.content != null) { - validator.adaptType(topic.content.type); - JsonValue content = validator.adaptToJson(topic.content); + converter.adaptType(topic.content.type); + JsonValue content = converter.adaptToJson(topic.content); object.add(CONTENT_NAME, content); } @@ -65,7 +65,7 @@ public MqttTopicConfig adaptFromJson( if (object.containsKey(CONTENT_NAME)) { JsonValue contentJson = object.get(CONTENT_NAME); - mqttTopic.content(validator.adaptFromJson(contentJson)); + mqttTopic.content(converter.adaptFromJson(contentJson)); } return mqttTopic.build(); } diff --git a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/stream/MqttServerFactory.java b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/stream/MqttServerFactory.java index e6c62a6369..1c78fdcf1c 100644 --- a/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/stream/MqttServerFactory.java +++ b/runtime/binding-mqtt/src/main/java/io/aklivity/zilla/runtime/binding/mqtt/internal/stream/MqttServerFactory.java @@ -189,9 +189,9 @@ import io.aklivity.zilla.runtime.engine.buffer.BufferPool; import io.aklivity.zilla.runtime.engine.concurrent.Signaler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; import io.aklivity.zilla.runtime.engine.guard.GuardHandler; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; public final class MqttServerFactory implements MqttStreamFactory { @@ -562,7 +562,7 @@ public MessageConsumer newStream( binding.guard, binding.credentials(), binding.authField(), - binding::supplyValidator)::onNetwork; + binding::supplyConverter)::onNetwork; } return newStream; } @@ -2277,7 +2277,7 @@ private final class MqttServer private final GuardHandler guard; private final Function credentials; private final MqttConnectProperty authField; - private final Function supplyValidator; + private final Function supplyConverter; private MqttSessionStream session; @@ -2350,7 +2350,7 @@ private MqttServer( GuardHandler guard, Function credentials, MqttConnectProperty authField, - Function supplyValidator) + Function supplyConverter) { this.network = network; this.originId = originId; @@ -2371,7 +2371,7 @@ private MqttServer( this.qos2Subscribes = new Int2ObjectHashMap<>(); this.credentials = credentials; this.authField = authField; - this.supplyValidator = supplyValidator; + this.supplyConverter = supplyConverter; } private void onNetwork( @@ -4713,8 +4713,8 @@ private boolean validContent( String topic, OctetsFW payload) { - final ValueValidator validator = supplyValidator.apply(topic); - return validator.validate(payload.buffer(), payload.offset(), payload.sizeof(), ValueConsumer.NOP) != -1; + final Converter converter = supplyConverter.apply(topic); + return converter.convert(payload.buffer(), payload.offset(), payload.sizeof(), ValueConsumer.NOP) != -1; } private final class Subscription diff --git a/runtime/binding-mqtt/src/test/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttOptionsConfigAdapterTest.java b/runtime/binding-mqtt/src/test/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttOptionsConfigAdapterTest.java index 786ff4959a..2eccd85e32 100644 --- a/runtime/binding-mqtt/src/test/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttOptionsConfigAdapterTest.java +++ b/runtime/binding-mqtt/src/test/java/io/aklivity/zilla/runtime/binding/mqtt/internal/config/MqttOptionsConfigAdapterTest.java @@ -38,7 +38,7 @@ import io.aklivity.zilla.runtime.binding.mqtt.config.MqttOptionsConfig; import io.aklivity.zilla.runtime.binding.mqtt.config.MqttPatternConfig; import io.aklivity.zilla.runtime.binding.mqtt.config.MqttTopicConfig; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; public class MqttOptionsConfigAdapterTest { @@ -95,7 +95,7 @@ public void shouldReadOptions() MqttTopicConfig topic = options.topics.get(0); assertThat(topic.name, equalTo("sensor/one")); - assertThat(topic.content, instanceOf(TestValidatorConfig.class)); + assertThat(topic.content, instanceOf(TestConverterConfig.class)); assertThat(topic.content.type, equalTo("test")); } @@ -104,7 +104,7 @@ public void shouldWriteOptions() { List topics = new ArrayList<>(); topics.add(new MqttTopicConfig("sensor/one", - TestValidatorConfig.builder() + TestConverterConfig.builder() .length(0) .build())); diff --git a/runtime/engine/pom.xml b/runtime/engine/pom.xml index 0080675975..d29725ac4e 100644 --- a/runtime/engine/pom.xml +++ b/runtime/engine/pom.xml @@ -210,7 +210,7 @@ io/aklivity/zilla/specs/engine/schema/guard/test.schema.patch.json, io/aklivity/zilla/specs/engine/schema/metrics/test.schema.patch.json, io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json, - io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json, + io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json, io/aklivity/zilla/specs/engine/schema/vault/test.schema.patch.json ${project.build.directory}/test-classes @@ -253,7 +253,7 @@ io/aklivity/zilla/runtime/engine/test/internal/guard/**/*.class io/aklivity/zilla/runtime/engine/test/internal/catalog/**/*.class io/aklivity/zilla/runtime/engine/test/internal/metrics/**/*.class - io/aklivity/zilla/runtime/engine/test/internal/validator/**/*.class + io/aklivity/zilla/runtime/engine/test/internal/converter/**/*.class io/aklivity/zilla/runtime/engine/test/internal/vault/**/*.class io/aklivity/zilla/runtime/engine/internal/concurrent/bench/**/*.class org/openjdk/jmh/infra/generated/**/*.class diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java index 0a6a2f3879..430410b84f 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java @@ -64,6 +64,8 @@ import io.aklivity.zilla.runtime.engine.config.BindingConfig; import io.aklivity.zilla.runtime.engine.config.KindConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactory; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; import io.aklivity.zilla.runtime.engine.exporter.Exporter; import io.aklivity.zilla.runtime.engine.ext.EngineExtContext; import io.aklivity.zilla.runtime.engine.ext.EngineExtSpi; @@ -80,8 +82,6 @@ import io.aklivity.zilla.runtime.engine.internal.stream.NamespacedId; import io.aklivity.zilla.runtime.engine.metrics.Collector; import io.aklivity.zilla.runtime.engine.metrics.MetricGroup; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactory; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; import io.aklivity.zilla.runtime.engine.vault.Vault; public final class Engine implements Collector, AutoCloseable @@ -114,7 +114,7 @@ public final class Engine implements Collector, AutoCloseable Collection metricGroups, Collection vaults, Collection catalogs, - ValidatorFactory validatorFactory, + ConverterFactory converterFactory, ErrorHandler errorHandler, Collection affinities, boolean readonly) @@ -169,7 +169,7 @@ public final class Engine implements Collector, AutoCloseable { DispatchAgent agent = new DispatchAgent(config, tasks, labels, errorHandler, tuning::affinity, - bindings, exporters, guards, vaults, catalogs, metricGroups, validatorFactory, + bindings, exporters, guards, vaults, catalogs, metricGroups, converterFactory, this, coreIndex, readonly); dispatchers.add(agent); } @@ -190,7 +190,7 @@ public final class Engine implements Collector, AutoCloseable schemaTypes.addAll(metricGroups.stream().map(MetricGroup::type).filter(Objects::nonNull).collect(toList())); schemaTypes.addAll(vaults.stream().map(Vault::type).filter(Objects::nonNull).collect(toList())); schemaTypes.addAll(catalogs.stream().map(Catalog::type).filter(Objects::nonNull).collect(toList())); - schemaTypes.addAll(validatorFactory.validatorSpis().stream().map(ValidatorFactorySpi::schema).collect(toList())); + schemaTypes.addAll(converterFactory.converterSpis().stream().map(ConverterFactorySpi::schema).collect(toList())); bindingsByType = bindings.stream().collect(Collectors.toMap(b -> b.name(), b -> b)); final Map guardsByType = guards.stream() diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineBuilder.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineBuilder.java index ad0a204e4a..e7076ebb34 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineBuilder.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineBuilder.java @@ -27,13 +27,13 @@ import io.aklivity.zilla.runtime.engine.binding.BindingFactory; import io.aklivity.zilla.runtime.engine.catalog.Catalog; import io.aklivity.zilla.runtime.engine.catalog.CatalogFactory; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactory; import io.aklivity.zilla.runtime.engine.exporter.Exporter; import io.aklivity.zilla.runtime.engine.exporter.ExporterFactory; import io.aklivity.zilla.runtime.engine.guard.Guard; import io.aklivity.zilla.runtime.engine.guard.GuardFactory; import io.aklivity.zilla.runtime.engine.metrics.MetricGroup; import io.aklivity.zilla.runtime.engine.metrics.MetricGroupFactory; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactory; import io.aklivity.zilla.runtime.engine.vault.Vault; import io.aklivity.zilla.runtime.engine.vault.VaultFactory; @@ -130,11 +130,11 @@ public Engine build() catalogs.add(catalog); } - final ValidatorFactory validatorFactory = ValidatorFactory.instantiate(); + final ConverterFactory converterFactory = ConverterFactory.instantiate(); final ErrorHandler errorHandler = requireNonNull(this.errorHandler, "errorHandler"); return new Engine(config, bindings, exporters, guards, metricGroups, vaults, - catalogs, validatorFactory, errorHandler, affinities, readonly); + catalogs, converterFactory, errorHandler, affinities, readonly); } } diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineContext.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineContext.java index 405e3e0082..0ccd67d3ed 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineContext.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/EngineContext.java @@ -30,13 +30,12 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.concurrent.Signaler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; import io.aklivity.zilla.runtime.engine.guard.GuardHandler; import io.aklivity.zilla.runtime.engine.metrics.Metric; import io.aklivity.zilla.runtime.engine.poller.PollerKey; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; import io.aklivity.zilla.runtime.engine.vault.VaultHandler; public interface EngineContext @@ -134,17 +133,11 @@ URL resolvePath( Metric resolveMetric( String name); - ValueValidator createValueReader( - ValidatorConfig validator); + Converter createReader( + ConverterConfig converter); - ValueValidator createValueWriter( - ValidatorConfig validator); - - FragmentValidator createFragmentReader( - ValidatorConfig validator); - - FragmentValidator createFragmentWriter( - ValidatorConfig validator); + Converter createWriter( + ConverterConfig converter); void onExporterAttached( long exporterId); diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/catalog/CatalogHandler.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/catalog/CatalogHandler.java index 09835cf620..a1cf9321ee 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/catalog/CatalogHandler.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/catalog/CatalogHandler.java @@ -17,7 +17,7 @@ import org.agrona.DirectBuffer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public interface CatalogHandler { diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfig.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfig.java similarity index 91% rename from runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfig.java rename to runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfig.java index 67458f862c..0380d31702 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfig.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfig.java @@ -17,18 +17,18 @@ import java.util.List; -public abstract class ValidatorConfig +public abstract class ConverterConfig { public final String type; public final List cataloged; - public ValidatorConfig( + public ConverterConfig( String type) { this(type, null); } - public ValidatorConfig( + public ConverterConfig( String type, List cataloged) { diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfigAdapter.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfigAdapter.java similarity index 83% rename from runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfigAdapter.java rename to runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfigAdapter.java index 22705005c9..9616510f1d 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfigAdapter.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfigAdapter.java @@ -28,20 +28,20 @@ import jakarta.json.JsonValue; import jakarta.json.bind.adapter.JsonbAdapter; -public final class ValidatorConfigAdapter implements JsonbAdapter +public final class ConverterConfigAdapter implements JsonbAdapter { private static final String TYPE_NAME = "type"; - private final Map delegatesByName; - private ValidatorConfigAdapterSpi delegate; + private final Map delegatesByName; + private ConverterConfigAdapterSpi delegate; - public ValidatorConfigAdapter() + public ConverterConfigAdapter() { delegatesByName = ServiceLoader - .load(ValidatorConfigAdapterSpi.class) + .load(ConverterConfigAdapterSpi.class) .stream() .map(Supplier::get) - .collect(toMap(ValidatorConfigAdapterSpi::type, identity())); + .collect(toMap(ConverterConfigAdapterSpi::type, identity())); } public void adaptType( @@ -52,13 +52,13 @@ public void adaptType( @Override public JsonValue adaptToJson( - ValidatorConfig options) + ConverterConfig options) { return delegate != null ? delegate.adaptToJson(options) : null; } @Override - public ValidatorConfig adaptFromJson( + public ConverterConfig adaptFromJson( JsonValue value) { JsonObject object = null; diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfigAdapterSpi.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfigAdapterSpi.java similarity index 84% rename from runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfigAdapterSpi.java rename to runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfigAdapterSpi.java index f7bf322a3e..9bbcbd2286 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ValidatorConfigAdapterSpi.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/ConverterConfigAdapterSpi.java @@ -18,16 +18,16 @@ import jakarta.json.JsonValue; import jakarta.json.bind.adapter.JsonbAdapter; -public interface ValidatorConfigAdapterSpi extends JsonbAdapter +public interface ConverterConfigAdapterSpi extends JsonbAdapter { String type(); @Override JsonValue adaptToJson( - ValidatorConfig options); + ConverterConfig options); @Override - ValidatorConfig adaptFromJson( + ConverterConfig adaptFromJson( JsonValue object); } diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/OptionsConfig.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/OptionsConfig.java index 7761ba185a..f8f55fe54a 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/OptionsConfig.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/config/OptionsConfig.java @@ -20,7 +20,7 @@ public class OptionsConfig { - public final List validators; + public final List converters; public OptionsConfig() { @@ -28,8 +28,8 @@ public OptionsConfig() } public OptionsConfig( - List validators) + List converters) { - this.validators = validators; + this.converters = converters; } } diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValueValidator.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/Converter.java similarity index 71% rename from runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValueValidator.java rename to runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/Converter.java index 176751d47a..962a56b008 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValueValidator.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/Converter.java @@ -13,23 +13,31 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.validator; +package io.aklivity.zilla.runtime.engine.converter; import org.agrona.DirectBuffer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; -public interface ValueValidator +public interface Converter { - ValueValidator NONE = (data, index, length, next) -> + Converter NONE = (data, index, length, next) -> { next.accept(data, index, length); return length; }; - int validate( + int convert( DirectBuffer data, int index, int length, ValueConsumer next); + + default int padding( + DirectBuffer data, + int index, + int length) + { + return 0; + } } diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/ConverterFactory.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/ConverterFactory.java new file mode 100644 index 0000000000..90d19582d7 --- /dev/null +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/ConverterFactory.java @@ -0,0 +1,83 @@ +/* + * Copyright 2021-2023 Aklivity Inc. + * + * Aklivity 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. + */ +package io.aklivity.zilla.runtime.engine.converter; + +import static java.util.Collections.unmodifiableMap; +import static java.util.Objects.requireNonNull; +import static java.util.ServiceLoader.load; + +import java.util.Collection; +import java.util.Map; +import java.util.ServiceLoader; +import java.util.TreeMap; +import java.util.function.LongFunction; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; + +public final class ConverterFactory +{ + private final Map converterSpis; + + public static ConverterFactory instantiate() + { + return instantiate(load(ConverterFactorySpi.class)); + } + + public Converter createReader( + ConverterConfig config, + LongFunction supplyCatalog) + { + String type = config.type; + requireNonNull(type, "name"); + + ConverterFactorySpi converterSpi = requireNonNull(converterSpis.get(type), () -> "Unrecognized Converter name: " + type); + + return converterSpi.createReader(config, supplyCatalog); + } + + public Converter createWriter( + ConverterConfig config, + LongFunction supplyCatalog) + { + String type = config.type; + requireNonNull(type, "name"); + + ConverterFactorySpi converterSpi = requireNonNull(converterSpis.get(type), () -> "Unrecognized Converter name: " + type); + + return converterSpi.createWriter(config, supplyCatalog); + } + + public Collection converterSpis() + { + return converterSpis.values(); + } + + private static ConverterFactory instantiate( + ServiceLoader converters) + { + Map converterSpisByName = new TreeMap<>(); + converters.forEach(converterSpi -> converterSpisByName.put(converterSpi.type(), converterSpi)); + + return new ConverterFactory(unmodifiableMap(converterSpisByName)); + } + + private ConverterFactory( + Map converterSpis) + { + this.converterSpis = converterSpis; + } +} diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValidatorFactorySpi.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/ConverterFactorySpi.java similarity index 62% rename from runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValidatorFactorySpi.java rename to runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/ConverterFactorySpi.java index 3d7826766c..fd64732329 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValidatorFactorySpi.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/ConverterFactorySpi.java @@ -13,34 +13,25 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.validator; +package io.aklivity.zilla.runtime.engine.converter; import java.net.URL; import java.util.function.LongFunction; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public interface ValidatorFactorySpi +public interface ConverterFactorySpi { String type(); URL schema(); - ValueValidator createValueReader( - ValidatorConfig config, + Converter createReader( + ConverterConfig config, LongFunction supplyCatalog); - ValueValidator createValueWriter( - ValidatorConfig config, + Converter createWriter( + ConverterConfig config, LongFunction supplyCatalog); - - FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog); - - FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog); - } diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/function/ValueConsumer.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/function/ValueConsumer.java similarity index 93% rename from runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/function/ValueConsumer.java rename to runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/function/ValueConsumer.java index 3d38046eb2..75334aeb2b 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/function/ValueConsumer.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/converter/function/ValueConsumer.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.validator.function; +package io.aklivity.zilla.runtime.engine.converter.function; import org.agrona.DirectBuffer; diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/ConfigurationManager.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/ConfigurationManager.java index a660de19f4..856a803138 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/ConfigurationManager.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/ConfigurationManager.java @@ -38,6 +38,7 @@ import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; import io.aklivity.zilla.runtime.engine.config.ConfigAdapterContext; import io.aklivity.zilla.runtime.engine.config.ConfigReader; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; import io.aklivity.zilla.runtime.engine.config.GuardConfig; import io.aklivity.zilla.runtime.engine.config.GuardedConfig; import io.aklivity.zilla.runtime.engine.config.KindConfig; @@ -45,7 +46,6 @@ import io.aklivity.zilla.runtime.engine.config.MetricRefConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; import io.aklivity.zilla.runtime.engine.config.RouteConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; import io.aklivity.zilla.runtime.engine.config.VaultConfig; import io.aklivity.zilla.runtime.engine.expression.ExpressionResolver; import io.aklivity.zilla.runtime.engine.ext.EngineExtContext; @@ -166,11 +166,11 @@ public NamespaceConfig parse( if (binding.options != null) { - for (ValidatorConfig validator : binding.options.validators) + for (ConverterConfig converter : binding.options.converters) { - if (validator.cataloged != null) + if (converter.cataloged != null) { - for (CatalogedConfig cataloged : validator.cataloged) + for (CatalogedConfig cataloged : converter.cataloged) { cataloged.id = namespace.resolveId.applyAsLong(cataloged.name); } diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/DispatchAgent.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/DispatchAgent.java index a590f8988f..cd749cb4d9 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/DispatchAgent.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/DispatchAgent.java @@ -94,8 +94,10 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.concurrent.Signaler; import io.aklivity.zilla.runtime.engine.config.BindingConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; import io.aklivity.zilla.runtime.engine.config.NamespaceConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactory; import io.aklivity.zilla.runtime.engine.exporter.Exporter; import io.aklivity.zilla.runtime.engine.exporter.ExporterContext; import io.aklivity.zilla.runtime.engine.exporter.ExporterHandler; @@ -131,9 +133,6 @@ import io.aklivity.zilla.runtime.engine.metrics.MetricGroup; import io.aklivity.zilla.runtime.engine.poller.PollerKey; import io.aklivity.zilla.runtime.engine.util.function.LongLongFunction; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactory; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; import io.aklivity.zilla.runtime.engine.vault.Vault; import io.aklivity.zilla.runtime.engine.vault.VaultContext; import io.aklivity.zilla.runtime.engine.vault.VaultHandler; @@ -208,7 +207,7 @@ public class DispatchAgent implements EngineContext, Agent private final ScalarsLayout countersLayout; private final ScalarsLayout gaugesLayout; private final HistogramsLayout histogramsLayout; - private final ValidatorFactory validatorFactory; + private final ConverterFactory converterFactory; private long initialId; private long promiseId; private long traceId; @@ -229,7 +228,7 @@ public DispatchAgent( Collection vaults, Collection catalogs, Collection metricGroups, - ValidatorFactory validatorFactory, + ConverterFactory converterFactory, Collector collector, int index, boolean readonly) @@ -397,7 +396,7 @@ public DispatchAgent( this.idleStrategy = idleStrategy; this.errorHandler = errorHandler; this.exportersById = new Long2ObjectHashMap<>(); - this.validatorFactory = validatorFactory; + this.converterFactory = converterFactory; } public static int indexOfId( @@ -863,31 +862,17 @@ public LongConsumer supplyHistogramWriter( } @Override - public ValueValidator createValueReader( - ValidatorConfig validator) + public Converter createReader( + ConverterConfig converter) { - return validatorFactory.createValueReader(validator, this::supplyCatalog); + return converterFactory.createReader(converter, this::supplyCatalog); } @Override - public ValueValidator createValueWriter( - ValidatorConfig validator) + public Converter createWriter( + ConverterConfig converter) { - return validatorFactory.createValueWriter(validator, this::supplyCatalog); - } - - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig validator) - { - return validatorFactory.createFragmentReader(validator, this::supplyCatalog); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig validator) - { - return validatorFactory.createFragmentWriter(validator, this::supplyCatalog); + return converterFactory.createWriter(converter, this::supplyCatalog); } private void onSystemMessage( diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/FragmentValidator.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/FragmentValidator.java deleted file mode 100644 index c17e0db4eb..0000000000 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/FragmentValidator.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc. - * - * Aklivity 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. - */ -package io.aklivity.zilla.runtime.engine.validator; - -import org.agrona.DirectBuffer; - -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; - -public interface FragmentValidator -{ - int FLAGS_FIN = 0x01; - int FLAGS_COMPLETE = 0x03; - - FragmentValidator NONE = (flags, data, index, length, next) -> - { - next.accept(flags, data, index, length); - return length; - }; - - int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next); - - default int padding( - DirectBuffer data, - int index, - int length) - { - return 0; - } -} diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValidatorFactory.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValidatorFactory.java deleted file mode 100644 index 93fc1a13f2..0000000000 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/ValidatorFactory.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc. - * - * Aklivity 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. - */ -package io.aklivity.zilla.runtime.engine.validator; - -import static java.util.Collections.unmodifiableMap; -import static java.util.Objects.requireNonNull; -import static java.util.ServiceLoader.load; - -import java.util.Collection; -import java.util.Map; -import java.util.ServiceLoader; -import java.util.TreeMap; -import java.util.function.LongFunction; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; - -public final class ValidatorFactory -{ - private final Map validatorSpis; - - public static ValidatorFactory instantiate() - { - return instantiate(load(ValidatorFactorySpi.class)); - } - - public ValueValidator createValueReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - String type = config.type; - requireNonNull(type, "name"); - - ValidatorFactorySpi validatorSpi = requireNonNull(validatorSpis.get(type), () -> "Unrecognized validator name: " + type); - - return validatorSpi.createValueReader(config, supplyCatalog); - } - - public ValueValidator createValueWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - String type = config.type; - requireNonNull(type, "name"); - - ValidatorFactorySpi validatorSpi = requireNonNull(validatorSpis.get(type), () -> "Unrecognized validator name: " + type); - - return validatorSpi.createValueWriter(config, supplyCatalog); - } - - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - String type = config.type; - requireNonNull(type, "name"); - - ValidatorFactorySpi validatorSpi = requireNonNull(validatorSpis.get(type), () -> "Unrecognized validator name: " + type); - - return validatorSpi.createFragmentReader(config, supplyCatalog); - } - - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - String type = config.type; - requireNonNull(type, "name"); - - ValidatorFactorySpi validatorSpi = requireNonNull(validatorSpis.get(type), () -> "Unrecognized validator name: " + type); - - return validatorSpi.createFragmentWriter(config, supplyCatalog); - } - - public Collection validatorSpis() - { - return validatorSpis.values(); - } - - private static ValidatorFactory instantiate( - ServiceLoader validators) - { - Map validatorSpisByName = new TreeMap<>(); - validators.forEach(validatorSpi -> validatorSpisByName.put(validatorSpi.type(), validatorSpi)); - - return new ValidatorFactory(unmodifiableMap(validatorSpisByName)); - } - - private ValidatorFactory( - Map validatorSpis) - { - this.validatorSpis = validatorSpis; - } -} diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/function/FragmentConsumer.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/function/FragmentConsumer.java deleted file mode 100644 index d71603f1cc..0000000000 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/validator/function/FragmentConsumer.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc. - * - * Aklivity 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. - */ -package io.aklivity.zilla.runtime.engine.validator.function; - -import org.agrona.DirectBuffer; - -@FunctionalInterface -public interface FragmentConsumer -{ - FragmentConsumer NOP = (flags, buffer, index, length) -> {}; - - void accept( - int flags, - DirectBuffer buffer, - int index, - int length); -} diff --git a/runtime/engine/src/main/moditect/module-info.java b/runtime/engine/src/main/moditect/module-info.java index 642f22bdab..f84f3b1f77 100644 --- a/runtime/engine/src/main/moditect/module-info.java +++ b/runtime/engine/src/main/moditect/module-info.java @@ -21,6 +21,8 @@ exports io.aklivity.zilla.runtime.engine.binding; exports io.aklivity.zilla.runtime.engine.binding.function; exports io.aklivity.zilla.runtime.engine.catalog; + exports io.aklivity.zilla.runtime.engine.converter; + exports io.aklivity.zilla.runtime.engine.converter.function; exports io.aklivity.zilla.runtime.engine.exporter; exports io.aklivity.zilla.runtime.engine.guard; exports io.aklivity.zilla.runtime.engine.metrics; @@ -28,8 +30,6 @@ exports io.aklivity.zilla.runtime.engine.reader; exports io.aklivity.zilla.runtime.engine.util.function; exports io.aklivity.zilla.runtime.engine.vault; - exports io.aklivity.zilla.runtime.engine.validator; - exports io.aklivity.zilla.runtime.engine.validator.function; exports io.aklivity.zilla.runtime.engine.ext; @@ -50,15 +50,15 @@ uses io.aklivity.zilla.runtime.engine.config.ConditionConfigAdapterSpi; uses io.aklivity.zilla.runtime.engine.config.OptionsConfigAdapterSpi; - uses io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; + uses io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; uses io.aklivity.zilla.runtime.engine.config.WithConfigAdapterSpi; uses io.aklivity.zilla.runtime.engine.binding.BindingFactorySpi; uses io.aklivity.zilla.runtime.engine.catalog.CatalogFactorySpi; + uses io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; uses io.aklivity.zilla.runtime.engine.exporter.ExporterFactorySpi; uses io.aklivity.zilla.runtime.engine.guard.GuardFactorySpi; uses io.aklivity.zilla.runtime.engine.metrics.MetricGroupFactorySpi; - uses io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; uses io.aklivity.zilla.runtime.engine.vault.VaultFactorySpi; uses io.aklivity.zilla.runtime.engine.ext.EngineExtSpi; uses io.aklivity.zilla.runtime.engine.expression.ExpressionResolverSpi; diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/ValueValidatorTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/converter/ConverterTest.java similarity index 72% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/ValueValidatorTest.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/converter/ConverterTest.java index caff092546..120b4f97ae 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/ValueValidatorTest.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/converter/ConverterTest.java @@ -13,20 +13,20 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.validator; +package io.aklivity.zilla.runtime.engine.converter; import static org.junit.Assert.assertEquals; import org.agrona.concurrent.UnsafeBuffer; import org.junit.Test; -public class ValueValidatorTest +public class ConverterTest { @Test - public void shouldCreateAndVerifyNoOpValueValidator() + public void shouldCreateAndVerifyNoOpValueConverter() { - ValueValidator validator = ValueValidator.NONE; + Converter converter = Converter.NONE; - assertEquals(1, validator.validate(new UnsafeBuffer(), 1, 1, (b, i, l) -> {})); + assertEquals(1, converter.convert(new UnsafeBuffer(), 1, 1, (b, i, l) -> {})); } } diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/function/ValueConsumerTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/converter/function/ValueConsumerTest.java similarity index 95% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/function/ValueConsumerTest.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/converter/function/ValueConsumerTest.java index b2b70d20df..08660514a3 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/function/ValueConsumerTest.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/converter/function/ValueConsumerTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.validator.function; +package io.aklivity.zilla.runtime.engine.converter.function; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/converter/ConverterFactoryTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/converter/ConverterFactoryTest.java new file mode 100644 index 0000000000..9054f0f046 --- /dev/null +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/converter/ConverterFactoryTest.java @@ -0,0 +1,84 @@ +/* + * Copyright 2021-2023 Aklivity Inc. + * + * Aklivity 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. + */ +package io.aklivity.zilla.runtime.engine.internal.converter; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; + +import java.util.function.LongFunction; + +import org.junit.Test; + +import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactory; +import io.aklivity.zilla.runtime.engine.test.internal.converter.TestConverter; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; + +public class ConverterFactoryTest +{ + @Test + @SuppressWarnings("unchecked") + public void shouldCreateReader() + { + // GIVEN + ConverterConfig config = TestConverterConfig.builder() + .length(0) + .catalog() + .name("test0") + .schema() + .id(1) + .build() + .build() + .read(true) + .build(); + LongFunction supplyCatalog = mock(LongFunction.class); + ConverterFactory factory = ConverterFactory.instantiate(); + + // WHEN + Converter reader = factory.createReader(config, supplyCatalog); + + // THEN + assertThat(reader, instanceOf(TestConverter.class)); + } + + @Test + @SuppressWarnings("unchecked") + public void shouldCreateWriter() + { + // GIVEN + ConverterConfig config = TestConverterConfig.builder() + .length(0) + .catalog() + .name("test0") + .schema() + .id(1) + .build() + .build() + .read(false) + .build(); + LongFunction supplyCatalog = mock(LongFunction.class); + ConverterFactory factory = ConverterFactory.instantiate(); + + // WHEN + Converter writer = factory.createWriter(config, supplyCatalog); + + // THEN + assertThat(writer, instanceOf(TestConverter.class)); + } +} diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/validator/config/ValidatorConfigAdapterTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/converter/config/ConverterConfigAdapterTest.java similarity index 68% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/validator/config/ValidatorConfigAdapterTest.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/converter/config/ConverterConfigAdapterTest.java index d96794dd25..75d7ce1c14 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/validator/config/ValidatorConfigAdapterTest.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/converter/config/ConverterConfigAdapterTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.internal.validator.config; +package io.aklivity.zilla.runtime.engine.internal.converter.config; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -27,18 +27,18 @@ import org.junit.Before; import org.junit.Test; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapter; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapter; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; -public class ValidatorConfigAdapterTest +public class ConverterConfigAdapterTest { private Jsonb jsonb; @Before public void initJson() { - ValidatorConfigAdapter adapter = new ValidatorConfigAdapter(); + ConverterConfigAdapter adapter = new ConverterConfigAdapter(); adapter.adaptType("test"); JsonbConfig config = new JsonbConfig() .withAdapters(adapter); @@ -46,7 +46,7 @@ public void initJson() } @Test - public void shouldReadValidator() + public void shouldReadConverter() { // GIVEN String json = @@ -55,22 +55,22 @@ public void shouldReadValidator() "}"; // WHEN - ValidatorConfig validator = jsonb.fromJson(json, ValidatorConfig.class); + ConverterConfig converter = jsonb.fromJson(json, ConverterConfig.class); // THEN - assertThat(validator, not(nullValue())); - assertThat(validator.type, equalTo("test")); + assertThat(converter, not(nullValue())); + assertThat(converter.type, equalTo("test")); } @Test - public void shouldWriteValidator() + public void shouldWriteConverter() { // GIVEN String expectedJson = "\"test\""; - ValidatorConfig validator = TestValidatorConfig.builder().build(); + ConverterConfig converter = TestConverterConfig.builder().build(); // WHEN - String json = jsonb.toJson(validator); + String json = jsonb.toJson(converter); // THEN assertThat(json, not(nullValue())); diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/validator/ValidatorFactoryTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/validator/ValidatorFactoryTest.java deleted file mode 100644 index fdc2149a2f..0000000000 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/internal/validator/ValidatorFactoryTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc. - * - * Aklivity 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. - */ -package io.aklivity.zilla.runtime.engine.internal.validator; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Mockito.mock; - -import java.util.function.LongFunction; - -import org.junit.Test; - -import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.test.internal.validator.TestValidator; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactory; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; - -public class ValidatorFactoryTest -{ - @Test - @SuppressWarnings("unchecked") - public void shouldCreateReadValidator() - { - // GIVEN - ValidatorConfig config = TestValidatorConfig.builder() - .length(0) - .catalog() - .name("test0") - .schema() - .id(1) - .build() - .build() - .read(true) - .build(); - LongFunction supplyCatalog = mock(LongFunction.class); - ValidatorFactory factory = ValidatorFactory.instantiate(); - - // WHEN - ValueValidator reader = factory.createValueReader(config, supplyCatalog); - - // THEN - assertThat(reader, instanceOf(TestValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateValueWriter() - { - // GIVEN - ValidatorConfig config = TestValidatorConfig.builder() - .length(0) - .catalog() - .name("test0") - .schema() - .id(1) - .build() - .build() - .read(false) - .build(); - LongFunction supplyCatalog = mock(LongFunction.class); - ValidatorFactory factory = ValidatorFactory.instantiate(); - - // WHEN - ValueValidator writer = factory.createValueWriter(config, supplyCatalog); - - // THEN - assertThat(writer, instanceOf(TestValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateFragmentReader() - { - // GIVEN - ValidatorConfig config = TestValidatorConfig.builder() - .length(0) - .catalog() - .name("test0") - .schema() - .id(1) - .build() - .build() - .read(false) - .build(); - LongFunction supplyCatalog = mock(LongFunction.class); - ValidatorFactory factory = ValidatorFactory.instantiate(); - - // WHEN - FragmentValidator reader = factory.createFragmentReader(config, supplyCatalog); - - // THEN - assertThat(reader, instanceOf(TestValidator.class)); - } - - @Test - @SuppressWarnings("unchecked") - public void shouldCreateFragmentWriter() - { - // GIVEN - ValidatorConfig config = TestValidatorConfig.builder() - .length(0) - .catalog() - .name("test0") - .schema() - .id(1) - .build() - .build() - .read(false) - .build(); - LongFunction supplyCatalog = mock(LongFunction.class); - ValidatorFactory factory = ValidatorFactory.instantiate(); - - // WHEN - FragmentValidator writer = factory.createFragmentWriter(config, supplyCatalog); - - // THEN - assertThat(writer, instanceOf(TestValidator.class)); - } -} diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/DecoderTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/DecoderTest.java index a9b2cb536e..85607d5277 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/DecoderTest.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/DecoderTest.java @@ -21,7 +21,7 @@ import org.junit.Test; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public class DecoderTest { diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/EncoderTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/EncoderTest.java index 9fdacd1e8f..46cbf987e9 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/EncoderTest.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/catalog/EncoderTest.java @@ -21,7 +21,7 @@ import org.junit.Test; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; public class EncoderTest { diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/TestValidator.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/TestConverter.java similarity index 64% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/TestValidator.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/TestConverter.java index fb396f8d0c..e02912ebed 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/TestValidator.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/TestConverter.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.test.internal.validator; +package io.aklivity.zilla.runtime.engine.test.internal.converter; import java.util.function.LongFunction; @@ -22,13 +22,11 @@ import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; -import io.aklivity.zilla.runtime.engine.validator.function.FragmentConsumer; -import io.aklivity.zilla.runtime.engine.validator.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.function.ValueConsumer; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; -public class TestValidator implements ValueValidator, FragmentValidator +public class TestConverter implements Converter { private final int length; private final int schemaId; @@ -36,8 +34,8 @@ public class TestValidator implements ValueValidator, FragmentValidator private final CatalogHandler handler; private final SchemaConfig schema; - public TestValidator( - TestValidatorConfig config, + public TestConverter( + TestConverterConfig config, LongFunction supplyCatalog) { this.length = config.length; @@ -60,29 +58,7 @@ public int padding( } @Override - public int validate( - DirectBuffer data, - int index, - int length, - ValueConsumer next) - { - return validateComplete(data, index, length, next); - } - - @Override - public int validate( - int flags, - DirectBuffer data, - int index, - int length, - FragmentConsumer next) - { - return (flags & FLAGS_FIN) != 0x00 - ? validateComplete(data, index, length, (b, i, l) -> next.accept(FLAGS_COMPLETE, b, i, l)) - : 0; - } - - private int validateComplete( + public int convert( DirectBuffer data, int index, int length, diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/TestValidatorFactory.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/TestConverterFactory.java similarity index 52% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/TestValidatorFactory.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/TestConverterFactory.java index 57a79a06f5..9dbee2b027 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/TestValidatorFactory.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/TestConverterFactory.java @@ -13,19 +13,18 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.test.internal.validator; +package io.aklivity.zilla.runtime.engine.test.internal.converter; import java.net.URL; import java.util.function.LongFunction; import io.aklivity.zilla.runtime.engine.catalog.CatalogHandler; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfig; -import io.aklivity.zilla.runtime.engine.validator.FragmentValidator; -import io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi; -import io.aklivity.zilla.runtime.engine.validator.ValueValidator; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.converter.Converter; +import io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi; +import io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfig; -public class TestValidatorFactory implements ValidatorFactorySpi +public class TestConverterFactory implements ConverterFactorySpi { @Override public String type() @@ -40,41 +39,25 @@ public URL schema() } @Override - public ValueValidator createValueReader( - ValidatorConfig config, + public Converter createReader( + ConverterConfig config, LongFunction supplyCatalog) { return create(config, supplyCatalog); } @Override - public ValueValidator createValueWriter( - ValidatorConfig config, + public Converter createWriter( + ConverterConfig config, LongFunction supplyCatalog) { return create(config, supplyCatalog); } - @Override - public FragmentValidator createFragmentReader( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return create(config, supplyCatalog); - } - - @Override - public FragmentValidator createFragmentWriter( - ValidatorConfig config, - LongFunction supplyCatalog) - { - return create(config, supplyCatalog); - } - - private TestValidator create( - ValidatorConfig config, + private TestConverter create( + ConverterConfig config, LongFunction supplyCatalog) { - return new TestValidator(TestValidatorConfig.class.cast(config), supplyCatalog); + return new TestConverter(TestConverterConfig.class.cast(config), supplyCatalog); } } diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfig.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfig.java similarity index 67% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfig.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfig.java index 23363bee42..35caa8b391 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfig.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfig.java @@ -13,20 +13,20 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.test.internal.validator.config; +package io.aklivity.zilla.runtime.engine.test.internal.converter.config; import java.util.List; import java.util.function.Function; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public class TestValidatorConfig extends ValidatorConfig +public class TestConverterConfig extends ConverterConfig { public final int length; public final boolean read; - public TestValidatorConfig( + public TestConverterConfig( int length, List cataloged, boolean read) @@ -36,14 +36,14 @@ public TestValidatorConfig( this.read = read; } - public static TestValidatorConfigBuilder builder( - Function mapper) + public static TestConverterConfigBuilder builder( + Function mapper) { - return new TestValidatorConfigBuilder<>(mapper); + return new TestConverterConfigBuilder<>(mapper); } - public static TestValidatorConfigBuilder builder() + public static TestConverterConfigBuilder builder() { - return new TestValidatorConfigBuilder<>(TestValidatorConfig.class::cast); + return new TestConverterConfigBuilder<>(TestConverterConfig.class::cast); } } diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfigAdapter.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfigAdapter.java similarity index 85% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfigAdapter.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfigAdapter.java index cedd07ff89..90c3e555b8 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfigAdapter.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfigAdapter.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.test.internal.validator.config; +package io.aklivity.zilla.runtime.engine.test.internal.converter.config; import java.util.LinkedList; import java.util.List; @@ -25,12 +25,12 @@ import jakarta.json.bind.adapter.JsonbAdapter; import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi; import io.aklivity.zilla.runtime.engine.config.SchemaConfig; import io.aklivity.zilla.runtime.engine.config.SchemaConfigAdapter; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi; -public class TestValidatorConfigAdapter implements ValidatorConfigAdapterSpi, JsonbAdapter +public class TestConverterConfigAdapter implements ConverterConfigAdapterSpi, JsonbAdapter { private static final String TEST = "test"; private static final String LENGTH = "length"; @@ -48,13 +48,13 @@ public String type() @Override public JsonValue adaptToJson( - ValidatorConfig config) + ConverterConfig config) { return Json.createValue(TEST); } @Override - public TestValidatorConfig adaptFromJson( + public TestConverterConfig adaptFromJson( JsonValue value) { JsonObject object = (JsonObject) value; @@ -85,6 +85,6 @@ public TestValidatorConfig adaptFromJson( } } - return new TestValidatorConfig(length, catalogs, read); + return new TestConverterConfig(length, catalogs, read); } } diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfigBuilder.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfigBuilder.java similarity index 68% rename from runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfigBuilder.java rename to runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfigBuilder.java index b9c00d1f9d..8aa3455583 100644 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/validator/config/TestValidatorConfigBuilder.java +++ b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/test/internal/converter/config/TestConverterConfigBuilder.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package io.aklivity.zilla.runtime.engine.test.internal.validator.config; +package io.aklivity.zilla.runtime.engine.test.internal.converter.config; import java.util.LinkedList; import java.util.List; @@ -22,49 +22,49 @@ import io.aklivity.zilla.runtime.engine.config.CatalogedConfig; import io.aklivity.zilla.runtime.engine.config.CatalogedConfigBuilder; import io.aklivity.zilla.runtime.engine.config.ConfigBuilder; -import io.aklivity.zilla.runtime.engine.config.ValidatorConfig; +import io.aklivity.zilla.runtime.engine.config.ConverterConfig; -public class TestValidatorConfigBuilder extends ConfigBuilder> +public class TestConverterConfigBuilder extends ConfigBuilder> { - private final Function mapper; + private final Function mapper; private int length; private boolean read; private List catalogs; - TestValidatorConfigBuilder( - Function mapper) + TestConverterConfigBuilder( + Function mapper) { this.mapper = mapper; } @Override @SuppressWarnings("unchecked") - protected Class> thisType() + protected Class> thisType() { - return (Class>) getClass(); + return (Class>) getClass(); } - public TestValidatorConfigBuilder length( + public TestConverterConfigBuilder length( int length) { this.length = length; return this; } - public TestValidatorConfigBuilder read( + public TestConverterConfigBuilder read( boolean read) { this.read = read; return this; } - public CatalogedConfigBuilder> catalog() + public CatalogedConfigBuilder> catalog() { return CatalogedConfig.builder(this::catalog); } - public TestValidatorConfigBuilder catalog( + public TestConverterConfigBuilder catalog( CatalogedConfig catalog) { if (catalogs == null) @@ -78,6 +78,6 @@ public TestValidatorConfigBuilder catalog( @Override public T build() { - return mapper.apply(new TestValidatorConfig(length, catalogs, read)); + return mapper.apply(new TestConverterConfig(length, catalogs, read)); } } diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/FragmentValidatorTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/FragmentValidatorTest.java deleted file mode 100644 index 97b2780e16..0000000000 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/FragmentValidatorTest.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc. - * - * Aklivity 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. - */ -package io.aklivity.zilla.runtime.engine.validator; - -import static org.junit.Assert.assertEquals; - -import org.agrona.concurrent.UnsafeBuffer; -import org.junit.Test; - -public class FragmentValidatorTest -{ - @Test - public void shouldCreateAndVerifyNoOpFragmentValidator() - { - FragmentValidator validator = FragmentValidator.NONE; - - assertEquals(1, validator.validate(0x01, new UnsafeBuffer(), 1, 1, (f, b, i, l) -> {})); - } -} diff --git a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/function/FragmentConsumerTest.java b/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/function/FragmentConsumerTest.java deleted file mode 100644 index 59412218c9..0000000000 --- a/runtime/engine/src/test/java/io/aklivity/zilla/runtime/engine/validator/function/FragmentConsumerTest.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-2023 Aklivity Inc. - * - * Aklivity 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. - */ -package io.aklivity.zilla.runtime.engine.validator.function; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -public class FragmentConsumerTest -{ - @Test - public void shouldDefaultOnMessageAndClose() - { - FragmentConsumer next = (flags, buffer, index, length) -> - { - assertTrue(flags >= 0); - assertNotNull(buffer); - assertTrue(index >= 0); - assertTrue(length >= 0); - }; - } - - @Test - public void shouldCreateNoOpFragmentConsumer() - { - FragmentConsumer next = FragmentConsumer.NOP; - assertNotNull(next); - } -} diff --git a/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi b/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi new file mode 100644 index 0000000000..9d9c9e5105 --- /dev/null +++ b/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ConverterConfigAdapterSpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.engine.test.internal.converter.config.TestConverterConfigAdapter diff --git a/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi b/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi deleted file mode 100644 index f41416a365..0000000000 --- a/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.config.ValidatorConfigAdapterSpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.engine.test.internal.validator.config.TestValidatorConfigAdapter diff --git a/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi b/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi new file mode 100644 index 0000000000..41b110bfd7 --- /dev/null +++ b/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.converter.ConverterFactorySpi @@ -0,0 +1 @@ +io.aklivity.zilla.runtime.engine.test.internal.converter.TestConverterFactory diff --git a/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi b/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi deleted file mode 100644 index 159cbd9dba..0000000000 --- a/runtime/engine/src/test/resources/META-INF/services/io.aklivity.zilla.runtime.engine.validator.ValidatorFactorySpi +++ /dev/null @@ -1 +0,0 @@ -io.aklivity.zilla.runtime.engine.test.internal.validator.TestValidatorFactory diff --git a/specs/binding-http.spec/src/main/scripts/io/aklivity/zilla/specs/binding/http/schema/http.schema.patch.json b/specs/binding-http.spec/src/main/scripts/io/aklivity/zilla/specs/binding/http/schema/http.schema.patch.json index e82992fe64..7025755590 100644 --- a/specs/binding-http.spec/src/main/scripts/io/aklivity/zilla/specs/binding/http/schema/http.schema.patch.json +++ b/specs/binding-http.spec/src/main/scripts/io/aklivity/zilla/specs/binding/http/schema/http.schema.patch.json @@ -280,7 +280,7 @@ { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } } }, @@ -296,7 +296,7 @@ { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } } }, @@ -307,7 +307,7 @@ { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } } } @@ -316,7 +316,7 @@ }, "content": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } }, "anyOf": diff --git a/specs/binding-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/kafka/schema/kafka.schema.patch.json b/specs/binding-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/kafka/schema/kafka.schema.patch.json index f720552f69..c619c8f33f 100644 --- a/specs/binding-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/kafka/schema/kafka.schema.patch.json +++ b/specs/binding-kafka.spec/src/main/scripts/io/aklivity/zilla/specs/binding/kafka/schema/kafka.schema.patch.json @@ -81,11 +81,11 @@ }, "key": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" }, "value": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } } } diff --git a/specs/binding-kafka.spec/src/test/java/io/aklivity/zilla/specs/binding/kafka/config/SchemaTest.java b/specs/binding-kafka.spec/src/test/java/io/aklivity/zilla/specs/binding/kafka/config/SchemaTest.java index d0ac240991..7e96d27481 100644 --- a/specs/binding-kafka.spec/src/test/java/io/aklivity/zilla/specs/binding/kafka/config/SchemaTest.java +++ b/specs/binding-kafka.spec/src/test/java/io/aklivity/zilla/specs/binding/kafka/config/SchemaTest.java @@ -32,7 +32,7 @@ public class SchemaTest public final ConfigSchemaRule schema = new ConfigSchemaRule() .schemaPatch("io/aklivity/zilla/specs/binding/kafka/schema/kafka.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json") + .schemaPatch("io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json") .configurationRoot("io/aklivity/zilla/specs/binding/kafka/config"); @Test diff --git a/specs/binding-mqtt.spec/src/main/scripts/io/aklivity/zilla/specs/binding/mqtt/schema/mqtt.schema.patch.json b/specs/binding-mqtt.spec/src/main/scripts/io/aklivity/zilla/specs/binding/mqtt/schema/mqtt.schema.patch.json index ad3ba9d81c..ceb51a89a2 100644 --- a/specs/binding-mqtt.spec/src/main/scripts/io/aklivity/zilla/specs/binding/mqtt/schema/mqtt.schema.patch.json +++ b/specs/binding-mqtt.spec/src/main/scripts/io/aklivity/zilla/specs/binding/mqtt/schema/mqtt.schema.patch.json @@ -125,7 +125,7 @@ }, "content": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } } } diff --git a/specs/binding-mqtt.spec/src/test/java/io/aklivity/zilla/specs/binding/mqtt/config/SchemaTest.java b/specs/binding-mqtt.spec/src/test/java/io/aklivity/zilla/specs/binding/mqtt/config/SchemaTest.java index 24db95d5e8..f40d1d9de6 100644 --- a/specs/binding-mqtt.spec/src/test/java/io/aklivity/zilla/specs/binding/mqtt/config/SchemaTest.java +++ b/specs/binding-mqtt.spec/src/test/java/io/aklivity/zilla/specs/binding/mqtt/config/SchemaTest.java @@ -34,7 +34,7 @@ public class SchemaTest .schemaPatch("io/aklivity/zilla/specs/binding/mqtt/schema/mqtt.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/guard/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json") + .schemaPatch("io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json") .configurationRoot("io/aklivity/zilla/specs/binding/mqtt/config"); @Ignore("TODO") diff --git a/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json b/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json index c7fdd47956..6f17793277 100644 --- a/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json +++ b/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/binding/test.schema.patch.json @@ -39,7 +39,7 @@ { "value": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/converter" } } } diff --git a/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json b/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json similarity index 98% rename from specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json rename to specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json index 2a84997694..fd49ce3977 100644 --- a/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json +++ b/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json @@ -1,12 +1,12 @@ [ { "op": "add", - "path": "/$defs/validator/types/enum/-", + "path": "/$defs/converter/types/enum/-", "value": "test" }, { "op": "add", - "path": "/$defs/validator/allOf/-", + "path": "/$defs/converter/allOf/-", "value": { "if": diff --git a/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/engine.schema.json b/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/engine.schema.json index df8fcb99ce..12c3626482 100644 --- a/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/engine.schema.json +++ b/specs/engine.spec/src/main/scripts/io/aklivity/zilla/specs/engine/schema/engine.schema.json @@ -359,14 +359,14 @@ [ ] }, - "validator": + "converter": { "type": "object", "properties": { "type": { - "$ref": "#/$defs/validator/types" + "$ref": "#/$defs/converter/types" } }, "required": diff --git a/specs/engine.spec/src/test/java/io/aklivity/zilla/specs/engine/config/SchemaTest.java b/specs/engine.spec/src/test/java/io/aklivity/zilla/specs/engine/config/SchemaTest.java index e9ab69d838..7b54774949 100644 --- a/specs/engine.spec/src/test/java/io/aklivity/zilla/specs/engine/config/SchemaTest.java +++ b/specs/engine.spec/src/test/java/io/aklivity/zilla/specs/engine/config/SchemaTest.java @@ -33,7 +33,7 @@ public class SchemaTest .schemaPatch("io/aklivity/zilla/specs/engine/schema/exporter/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/guard/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/metrics/test.schema.patch.json") - .schemaPatch("io/aklivity/zilla/specs/engine/schema/validator/test.schema.patch.json") + .schemaPatch("io/aklivity/zilla/specs/engine/schema/converter/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/vault/test.schema.patch.json") .schemaPatch("io/aklivity/zilla/specs/engine/schema/catalog/test.schema.patch.json") .configurationRoot("io/aklivity/zilla/specs/engine/config");