diff --git a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpKafkaProxy.java b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpKafkaProxy.java index a6d83c25ce..f85adf48fb 100644 --- a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpKafkaProxy.java +++ b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpKafkaProxy.java @@ -38,7 +38,6 @@ import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithConfigBuilder; import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithFetchConfig; import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithFetchConfigBuilder; -import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithFetchFilterConfig; import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithFetchFilterConfigBuilder; import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithFetchMergeConfig; import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaWithProduceAsyncHeaderConfig; @@ -122,7 +121,7 @@ private BindingConfigBuilder addHttpKafkaRoute( final AsyncapiChannelView channel = AsyncapiChannelView.of(httpAsyncapi.channels, whenOperation.channel); String path = channel.address(); - if (whenOperation.bindings != null) + if (whenOperation.bindings != null && whenOperation.bindings.containsKey("http")) { String method = whenOperation.bindings.get("http").method; final List paramNames = findParams(path); @@ -298,12 +297,9 @@ private HttpKafkaWithFetchConfigBuilder injectHttpKafkaRouteFetchWith( if (!paramNames.isEmpty()) { - fetch.filters(List.of(HttpKafkaWithFetchFilterConfig.builder() - .key(String.format("${params.%s}", paramNames.get(paramNames.size() - 1))) - .build())); + fetch.filter().key(String.format("${params.%s}", paramNames.get(paramNames.size() - 1))); } - AsyncapiBinding httpKafkaBinding = httpOperation.bindings.get("x-zilla-http-kafka"); if (httpKafkaBinding != null) { diff --git a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpProtocol.java b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpProtocol.java index 602754723c..a70e7d19b4 100644 --- a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpProtocol.java +++ b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiHttpProtocol.java @@ -189,7 +189,8 @@ private HttpOptionsConfigBuilder injectHttpServerRequests( AsyncapiChannelView channel = AsyncapiChannelView.of(asyncapi.channels, operation.channel); String path = channel.address(); - if (operation.bindings != null && channel.messages() != null && !channel.messages().isEmpty() || + if (operation.bindings != null && operation.bindings.get("http") != null && + channel.messages() != null && !channel.messages().isEmpty() || channel.parameters() != null && !channel.parameters().isEmpty()) { Method method = Method.valueOf(operation.bindings.get("http").method); diff --git a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiServerNamespaceGenerator.java b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiServerNamespaceGenerator.java index 401b622686..efccf503e4 100644 --- a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiServerNamespaceGenerator.java +++ b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiServerNamespaceGenerator.java @@ -125,15 +125,18 @@ protected BindingConfigBuilder injectPlainTcpRoute( { for (AsyncapiServerView server : servers) { - final RouteConfigBuilder> routeBuilder = binding.route(); - final AsyncapiProtocol protocol = server.getAsyncapiProtocol(); - final int[] compositePorts = new int[] { server.getPort() }; - binding = routeBuilder - .when(TcpConditionConfig::builder) - .ports(compositePorts) - .build() - .exit(String.format("%s_server0", protocol.tcpRoute)) - .build(); + if (!server.getAsyncapiProtocol().isSecure()) + { + final RouteConfigBuilder> routeBuilder = binding.route(); + final AsyncapiProtocol protocol = server.getAsyncapiProtocol(); + final int[] compositePorts = new int[] { server.getPort() }; + binding = routeBuilder + .when(TcpConditionConfig::builder) + .ports(compositePorts) + .build() + .exit(String.format("%s_server0", protocol.tcpRoute)) + .build(); + } } return binding; } @@ -176,17 +179,16 @@ private NamespaceConfigBuilder injectTlsServer( BindingConfigBuilder> binding = namespace.binding(); if (isTlsEnabled) { - binding = - binding - .name("tls_server0") - .type("tls") - .kind(SERVER) - .options(TlsOptionsConfig::builder) - .keys(options.tls.keys) - .sni(options.tls.sni) - .alpn(options.tls.alpn) - .build() - .vault(String.format("%s:%s", this.namespace, vault)); + binding + .name("tls_server0") + .type("tls") + .kind(SERVER) + .options(TlsOptionsConfig::builder) + .keys(options.tls.keys) + .sni(options.tls.sni) + .alpn(options.tls.alpn) + .build() + .vault(String.format("%s:%s", this.namespace, vault)); } for (AsyncapiServerView server : servers) { @@ -202,6 +204,12 @@ private NamespaceConfigBuilder injectTlsServer( .build(); } } + + if (isTlsEnabled) + { + binding.build(); + } + return namespace; } } diff --git a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiSseProtocol.java b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiSseProtocol.java index 273952af49..b94f79f7a3 100644 --- a/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiSseProtocol.java +++ b/runtime/binding-asyncapi/src/main/java/io/aklivity/zilla/runtime/binding/asyncapi/internal/config/AsyncapiSseProtocol.java @@ -116,7 +116,7 @@ public BindingConfigBuilder injectProtocolServerRoutes( .path(path) .build() .inject(route -> injectHttpServerRouteGuarded( - route, qname, options.http, asyncapi, operation.security)) + route, options.http, asyncapi, operation.security)) .build(); } } @@ -192,7 +192,6 @@ private SsePathConfigBuilder injectValue( private RouteConfigBuilder injectHttpServerRouteGuarded( RouteConfigBuilder route, - String qname, HttpOptionsConfig options, Asyncapi asyncapi, List securities) @@ -206,7 +205,7 @@ private RouteConfigBuilder injectHttpServerRouteGuarded( { route .guarded() - .name(String.format("%s:%s", qname, options.authorization.name)) + .name(options.authorization.name) .inject(guarded -> injectGuardedRoles(guarded, security.scopes())) .build(); } diff --git a/specs/binding-asyncapi.spec/src/main/scripts/io/aklivity/zilla/specs/binding/asyncapi/config/server.http.secure.yaml b/specs/binding-asyncapi.spec/src/main/scripts/io/aklivity/zilla/specs/binding/asyncapi/config/server.http.secure.yaml index 6247c1f303..8229d2e092 100644 --- a/specs/binding-asyncapi.spec/src/main/scripts/io/aklivity/zilla/specs/binding/asyncapi/config/server.http.secure.yaml +++ b/specs/binding-asyncapi.spec/src/main/scripts/io/aklivity/zilla/specs/binding/asyncapi/config/server.http.secure.yaml @@ -125,7 +125,8 @@ bindings: keys: - localhost sni: - - http.example.net + - localhost alpn: + - http/1.1 - h2 exit: asyncapi0