This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
The following commit(s) were added to refs/heads/master by this push: new 474cff0 knative: refactor knative environment definition #453 474cff0 is described below commit 474cff09f990d44ba503dc906acd5f8b31872e09 Author: Luca Burgazzoli <lburgazz...@gmail.com> AuthorDate: Wed Sep 23 12:49:06 2020 +0200 knative: refactor knative environment definition #453 --- .../java/org/apache/camel/k/main/RuntimeTest.java | 2 +- .../knative/deployment/DeploymentProcessor.java | 2 +- .../KnativeSinkBindingContextCustomizer.java | 2 +- .../KnativeSinkBindingCustomizerTest.java | 4 +- .../knative/KnativeSourceRoutesLoaderTest.java | 2 +- components/camel-knative/camel-knative-api/pom.xml | 4 - .../component/knative/spi/KnativeEnvironment.java | 100 +++++++++++---------- .../component/knative/spi/KnativeTransport.java | 4 +- .../knative/spi/KnativeEnvironmentTest.java | 19 ++-- .../camel-knative/camel-knative-http/pom.xml | 4 - .../knative/http/KnativeHttpConsumer.java | 4 +- .../knative/http/KnativeHttpProducer.java | 24 ++--- .../component/knative/http/KnativeHttpSupport.java | 2 +- .../knative/http/KnativeHttpTransport.java | 4 +- .../component/knative/http/KnativeHttpTest.java | 74 ++++++--------- .../knative/http/KnativeHttpTestSupport.java | 4 +- .../http/assertions/HttpServerRequestAssert.java | 2 - .../knative/test/KnativeEnvironmentSupport.java | 38 ++++---- .../camel/component/knative/KnativeEndpoint.java | 23 +++-- .../knative/ce/AbstractCloudEventProcessor.java | 4 +- .../component/knative/ce/CloudEventProcessor.java | 4 +- .../component/knative/ce/CloudEventProcessors.java | 4 +- .../component/knative/KnativeComponentTest.java | 22 +++-- .../component/knative/KnativeTransportNoop.java | 4 +- .../src/test/resources/environment.json | 11 +-- .../{environment.json => environment_classic.json} | 9 +- 26 files changed, 176 insertions(+), 200 deletions(-) diff --git a/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java b/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java index bbb649a..4e275c3 100644 --- a/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java +++ b/camel-k-main/camel-k-runtime-main/src/test/java/org/apache/camel/k/main/RuntimeTest.java @@ -167,7 +167,7 @@ public class RuntimeTest { public void testLoadJavaSourceWrap() throws Exception { KnativeComponent component = new KnativeComponent(); component.setEnvironment(KnativeEnvironment.on( - KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.sink, "sink", "localhost", AvailablePortFinder.getNextAvailable()) + KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.sink, "sink", "http://localhost:" + AvailablePortFinder.getNextAvailable()) )); PlatformHttpServiceContextCustomizer phsc = new PlatformHttpServiceContextCustomizer(); diff --git a/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java b/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java index a17d85d..877e5b0 100644 --- a/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java +++ b/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java @@ -46,7 +46,7 @@ public class DeploymentProcessor { List<ReflectiveClassBuildItem> reflectiveClasses() { return List.of( new ReflectiveClassBuildItem(true, false, KnativeEnvironment.class), - new ReflectiveClassBuildItem(true, false, KnativeEnvironment.KnativeServiceDefinition.class) + new ReflectiveClassBuildItem(true, false, KnativeEnvironment.KnativeResource.class) ); } diff --git a/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java b/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java index 5ef35ca..f409956 100644 --- a/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java +++ b/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingContextCustomizer.java @@ -51,7 +51,7 @@ public class KnativeSinkBindingContextCustomizer implements ContextCustomizer { }); } - private Optional<KnativeEnvironment.KnativeServiceDefinition> createSyntheticDefinition( + private Optional<KnativeEnvironment.KnativeResource> createSyntheticDefinition( CamelContext camelContext, String sinkName) { diff --git a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingCustomizerTest.java b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingCustomizerTest.java index c92199b..fc870be 100644 --- a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingCustomizerTest.java +++ b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/knative/customizer/KnativeSinkBindingCustomizerTest.java @@ -70,7 +70,7 @@ public class KnativeSinkBindingCustomizerTest { assertThat(sc.getKind()).isEqualTo("InMemoryChannel"); }); - var svc = runtime.getRegistry().lookupByNameAndType("mychannel", KnativeEnvironment.KnativeServiceDefinition.class); + var svc = runtime.getRegistry().lookupByNameAndType("mychannel", KnativeEnvironment.KnativeResource.class); assertThat(svc).isNotNull(); assertThat(svc.getUrl()).isEqualTo("http://theurl"); assertThat(svc.getName()).isEqualTo("mychannel"); @@ -123,7 +123,7 @@ public class KnativeSinkBindingCustomizerTest { }); context.start(); - var services = context.getRegistry().findByType(KnativeEnvironment.KnativeServiceDefinition.class); + var services = context.getRegistry().findByType(KnativeEnvironment.KnativeResource.class); assertThat(services).hasSize(1); assertThat(services).first().hasFieldOrPropertyWithValue("name", "mySynk"); diff --git a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java index 2b7d4ff..ceda4f6 100644 --- a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java +++ b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java @@ -73,7 +73,7 @@ public class KnativeSourceRoutesLoaderTest { KnativeComponent component = new KnativeComponent(); component.setEnvironment(KnativeEnvironment.on( - KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.sink, "sink", "localhost", runtime.port) + KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.sink, "sink", "http://localhost:" + runtime.port) )); CamelContext context = runtime.getCamelContext(); diff --git a/components/camel-knative/camel-knative-api/pom.xml b/components/camel-knative/camel-knative-api/pom.xml index e995913..3941b4e 100644 --- a/components/camel-knative/camel-knative-api/pom.xml +++ b/components/camel-knative/camel-knative-api/pom.xml @@ -39,10 +39,6 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-core-engine</artifactId> </dependency> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-cloud</artifactId> - </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java index a84f604..7e88425 100644 --- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java +++ b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java @@ -23,7 +23,7 @@ import java.io.StringReader; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,30 +31,37 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.camel.CamelContext; -import org.apache.camel.impl.cloud.DefaultServiceDefinition; import org.apache.camel.support.ResourceHelper; /* * Assuming it is loaded from a json for now */ public class KnativeEnvironment { - private final List<KnativeServiceDefinition> services; + private final List<KnativeResource> resources; - @JsonCreator - public KnativeEnvironment( - @JsonProperty(value = "services", required = true) List<KnativeServiceDefinition> services) { + public KnativeEnvironment() { + this.resources = new ArrayList<>(); + } + + public KnativeEnvironment(Collection<KnativeResource> resources) { + this.resources = new ArrayList<>(resources); + } - this.services = new ArrayList<>(services); + @JsonAlias("services") + @JsonProperty(value = "resources", required = true) + public List<KnativeResource> getResources() { + return resources; } - public Stream<KnativeServiceDefinition> stream() { - return services.stream(); + public Stream<KnativeResource> stream() { + return resources.stream(); } - public Stream<KnativeServiceDefinition> lookup(Knative.Type type, String name) { + public Stream<KnativeResource> lookup(Knative.Type type, String name) { return stream().filter(definition -> definition.matches(type, name)); } @@ -80,8 +87,7 @@ public class KnativeEnvironment { // { // "type": "channel|endpoint|event", // "name": "", - // "host": "", - // "port": "", + // "url": "", // "metadata": { // "service.path": "", // "filter.header": "value", @@ -100,8 +106,13 @@ public class KnativeEnvironment { } } - public static KnativeEnvironment on(KnativeServiceDefinition... definitions) { - return new KnativeEnvironment(Arrays.asList(definitions)); + public static KnativeEnvironment on(KnativeResource... definitions) { + KnativeEnvironment env = new KnativeEnvironment(); + for (KnativeResource definition : definitions) { + env.getResources().add(definition); + } + + return env; } public static KnativeServiceBuilder serviceBuilder(Knative.Type type, String name) { @@ -114,12 +125,10 @@ public class KnativeEnvironment { // // ************************ - public static final class KnativeServiceBuilder { private final Knative.Type type; private final String name; - private String host; - private Integer port; + private String url; private Map<String, String> metadata; public KnativeServiceBuilder(Knative.Type type, String name) { @@ -127,13 +136,8 @@ public class KnativeEnvironment { this.name = name; } - public KnativeServiceBuilder withHost(String host) { - this.host = host; - return this; - } - - public KnativeServiceBuilder withPort(Integer port) { - this.port = port; + public KnativeServiceBuilder withUrl(String url) { + this.url = url; return this; } @@ -170,47 +174,49 @@ public class KnativeEnvironment { return this; } - public KnativeServiceDefinition build() { - return new KnativeServiceDefinition(type, name, host, port, metadata); + public KnativeResource build() { + return new KnativeResource(type, name, url, metadata); } } - public static final class KnativeServiceDefinition extends DefaultServiceDefinition { + public static final class KnativeResource { + private final String name; + private final String url; + private final Map<String, String> meta; + @JsonCreator - public KnativeServiceDefinition( + public KnativeResource( @JsonProperty(value = "type", required = true) Knative.Type type, @JsonProperty(value = "name", required = true) String name, - @JsonProperty(value = "host", required = false) String host, - @JsonProperty(value = "port", required = false) Integer port, + @JsonProperty(value = "url", required = false) String url, @JsonProperty(value = "metadata", required = false) Map<String, String> metadata) { - super( - name, - host, - port == null ? -1 : port, - KnativeSupport.mergeMaps( - metadata, - Map.of( - Knative.KNATIVE_TYPE, type.name()) - ) + this.name = name; + this.url = url; + this.meta = KnativeSupport.mergeMaps( + metadata, + Map.of( + Knative.KNATIVE_TYPE, type.name()) ); } - @Override + public String getName() { + return this.name; + } + public String getHost() { String urlAsString = getUrl(); if (urlAsString != null) { try { return new URL(urlAsString).getHost(); } catch (MalformedURLException ignored) { - // ignored + // ignore } } - return super.getHost(); + return null; } - @Override public int getPort() { String urlAsString = getUrl(); if (urlAsString != null) { @@ -221,7 +227,11 @@ public class KnativeEnvironment { } } - return super.getPort(); + return -1; + } + + public Map<String, String> getMetadata() { + return this.meta; } public Knative.Type getType() { @@ -254,7 +264,7 @@ public class KnativeEnvironment { } public String getUrl() { - return getMetadata(Knative.SERVICE_META_URL); + return this.url != null ? this.url : getMetadata(Knative.SERVICE_META_URL); } public String getMetadata(String key) { diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransport.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransport.java index 6b0cb55..40ce794 100644 --- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransport.java +++ b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransport.java @@ -34,7 +34,7 @@ public interface KnativeTransport extends Service { Producer createProducer( Endpoint endpoint, KnativeTransportConfiguration configuration, - KnativeEnvironment.KnativeServiceDefinition service); + KnativeEnvironment.KnativeResource service); /** * Create a camel {@link Consumer} in place of the original endpoint for a specific protocol. @@ -47,5 +47,5 @@ public interface KnativeTransport extends Service { Consumer createConsumer( Endpoint endpoint, KnativeTransportConfiguration configuration, - KnativeEnvironment.KnativeServiceDefinition service, Processor processor); + KnativeEnvironment.KnativeResource service, Processor processor); } diff --git a/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java b/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java index 93b898c..6586964 100644 --- a/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java +++ b/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java @@ -18,23 +18,26 @@ package org.apache.camel.component.knative.spi; import org.apache.camel.CamelContext; import org.apache.camel.impl.DefaultCamelContext; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; public class KnativeEnvironmentTest { - @Test - public void testKnativeEnvironmentDeserializationFromString() throws Exception { - CamelContext context = new DefaultCamelContext(); - KnativeEnvironment env = KnativeEnvironment.mandatoryLoadFromSerializedString( - context, - "{\"services\":[{\"type\":\"endpoint\",\"name\":\"knative3\",\"metadata\":{\"camel.endpoint.kind\":\"source\",\"knative.apiVersion\":\"serving.knative.dev/v1\",\"knative.kind\":\"Service\",\"service.path\":\"/\"}}]}" - ); + @ParameterizedTest + @ValueSource(strings = { + "{\"services\":[{\"type\":\"endpoint\",\"name\":\"knative3\",\"metadata\":{\"camel.endpoint.kind\":\"source\",\"knative.apiVersion\":\"serving.knative.dev/v1\",\"knative.kind\":\"Service\",\"service.path\":\"/\"}}]}", + "{\"resources\":[{\"type\":\"endpoint\",\"name\":\"knative3\",\"metadata\":{\"camel.endpoint.kind\":\"source\",\"knative.apiVersion\":\"serving.knative.dev/v1\",\"knative.kind\":\"Service\",\"service.path\":\"/\"}}]}" + }) + public void testKnativeEnvironmentDeserializationFromString(String content) throws Exception { + CamelContext context = new DefaultCamelContext(); + KnativeEnvironment env = KnativeEnvironment.mandatoryLoadFromSerializedString(context, content); assertThat(env.lookup(Knative.Type.endpoint, "knative3")) .first() + .hasFieldOrPropertyWithValue("url", null) .hasFieldOrPropertyWithValue("port", -1) .hasFieldOrPropertyWithValue("host", null); } diff --git a/components/camel-knative/camel-knative-http/pom.xml b/components/camel-knative/camel-knative-http/pom.xml index f118982..d5b1901 100644 --- a/components/camel-knative/camel-knative-http/pom.xml +++ b/components/camel-knative/camel-knative-http/pom.xml @@ -39,10 +39,6 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-core-engine</artifactId> </dependency> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-cloud</artifactId> - </dependency> <dependency> <groupId>org.apache.camel.k</groupId> diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java index fb60431..ecd1dc7 100644 --- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java +++ b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java @@ -51,7 +51,7 @@ public class KnativeHttpConsumer extends DefaultConsumer { private final KnativeTransportConfiguration configuration; private final Predicate<HttpServerRequest> filter; - private final KnativeEnvironment.KnativeServiceDefinition serviceDefinition; + private final KnativeEnvironment.KnativeResource serviceDefinition; private final VertxPlatformHttpRouter router; private final HeaderFilterStrategy headerFilterStrategy; @@ -61,7 +61,7 @@ public class KnativeHttpConsumer extends DefaultConsumer { public KnativeHttpConsumer( KnativeTransportConfiguration configuration, Endpoint endpoint, - KnativeEnvironment.KnativeServiceDefinition serviceDefinition, + KnativeEnvironment.KnativeResource serviceDefinition, VertxPlatformHttpRouter router, Processor processor) { diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java index 69a602a..a4e7923 100644 --- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java +++ b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java @@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory; public class KnativeHttpProducer extends DefaultAsyncProducer { private static final Logger LOGGER = LoggerFactory.getLogger(KnativeHttpProducer.class); - private final KnativeEnvironment.KnativeServiceDefinition serviceDefinition; + private final KnativeEnvironment.KnativeResource serviceDefinition; private final Vertx vertx; private final WebClientOptions clientOptions; private final HeaderFilterStrategy headerFilterStrategy; @@ -57,7 +57,7 @@ public class KnativeHttpProducer extends DefaultAsyncProducer { public KnativeHttpProducer( Endpoint endpoint, - KnativeEnvironment.KnativeServiceDefinition serviceDefinition, + KnativeEnvironment.KnativeResource serviceDefinition, Vertx vertx, WebClientOptions clientOptions) { super(endpoint); @@ -92,6 +92,13 @@ public class KnativeHttpProducer extends DefaultAsyncProducer { final Message message = exchange.getMessage(); final String host = getHost(serviceDefinition); + if (ObjectHelper.isEmpty(host)) { + exchange.setException(new CamelException("HTTP operation failed because host is not defined")); + callback.done(true); + + return true; + } + MultiMap headers = MultiMap.caseInsensitiveMultiMap(); headers.add(HttpHeaders.CONTENT_LENGTH, Integer.toString(payload.length)); headers.add(HttpHeaders.HOST, host); @@ -107,13 +114,6 @@ public class KnativeHttpProducer extends DefaultAsyncProducer { } } - if (ObjectHelper.isEmpty(host)) { - exchange.setException(new CamelException("HTTP operation failed because host is not defined")); - callback.done(true); - - return true; - } - client.postAbs(this.uri.get()) .putHeaders(headers) .sendBuffer(Buffer.buffer(payload), response -> { @@ -180,7 +180,7 @@ public class KnativeHttpProducer extends DefaultAsyncProducer { } } - private String computeUrl(KnativeEnvironment.KnativeServiceDefinition definition) { + private String computeUrl(KnativeEnvironment.KnativeResource definition) { String url = definition.getUrl(); if (url == null) { int port = definition.getPortOrDefault(KnativeHttpTransport.DEFAULT_PORT); @@ -196,7 +196,7 @@ public class KnativeHttpProducer extends DefaultAsyncProducer { return getEndpoint().getCamelContext().resolvePropertyPlaceholders(url); } - private String getHost(KnativeEnvironment.KnativeServiceDefinition definition) { + private String getHost(KnativeEnvironment.KnativeResource definition) { if (definition.getHost() != null) { return serviceDefinition.getHost(); } @@ -212,7 +212,7 @@ public class KnativeHttpProducer extends DefaultAsyncProducer { } } - throw new IllegalStateException("Unable to determine the Host value"); + return null; } } diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java index 83995a9..cf68524 100644 --- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java +++ b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java @@ -51,7 +51,7 @@ public final class KnativeHttpSupport { headers.put(key, value); } - public static Predicate<HttpServerRequest> createFilter(KnativeEnvironment.KnativeServiceDefinition serviceDefinition) { + public static Predicate<HttpServerRequest> createFilter(KnativeEnvironment.KnativeResource serviceDefinition) { Map<String, String> filters = serviceDefinition.getMetadata().entrySet().stream() .filter(e -> e.getKey().startsWith(Knative.KNATIVE_FILTER_PREFIX)) .collect(Collectors.toMap( diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java index fc51004..213f2e3 100644 --- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java +++ b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java @@ -88,12 +88,12 @@ public class KnativeHttpTransport extends ServiceSupport implements CamelContext // ***************************** @Override - public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeEnvironment.KnativeServiceDefinition service) { + public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeEnvironment.KnativeResource service) { return new KnativeHttpProducer(endpoint, service, this.router.vertx(), vertxHttpClientOptions); } @Override - public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeEnvironment.KnativeServiceDefinition service, Processor processor) { + public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeEnvironment.KnativeResource service, Processor processor) { return new KnativeHttpConsumer(config, endpoint, service, this.router, processor); } diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java index b61418f..6accb64 100644 --- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java +++ b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java @@ -208,10 +208,8 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "myEndpoint", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d/a/path", platformHttpHost, platformHttpPort), Map.of( - Knative.SERVICE_META_PATH, "/a/path", Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" )) @@ -250,8 +248,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "myEndpoint", - "none", - -1, + null, Map.of( Knative.SERVICE_META_PATH, "/does/not/exist", Knative.SERVICE_META_URL, String.format("http://localhost:%d/a/path", platformHttpPort), @@ -697,8 +694,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "to", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event.to", Knative.CONTENT_TYPE, "text/plain" @@ -744,8 +740,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "to", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -785,8 +780,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "test", - "", - platformHttpPort, + null, Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -817,8 +811,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "test", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -837,7 +830,7 @@ public class KnativeHttpTest { Exchange exchange = template.request("direct:start", e -> e.getMessage().setBody("")); assertThat(exchange.isFailed()).isTrue(); assertThat(exchange.getException()).isInstanceOf(CamelException.class); - assertThat(exchange.getException()).hasMessageStartingWith("HTTP operation failed invoking http://localhost:" + platformHttpPort + "/"); + assertThat(exchange.getException()).hasMessageStartingWith("HTTP operation failed invoking http://localhost:" + platformHttpPort); } @ParameterizedTest @@ -953,8 +946,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -991,8 +983,7 @@ public class KnativeHttpTest { event( Knative.EndpointKind.sink, "default", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1037,8 +1028,7 @@ public class KnativeHttpTest { event( Knative.EndpointKind.sink, "default", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain", @@ -1174,8 +1164,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "myEndpoint", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1210,7 +1199,6 @@ public class KnativeHttpTest { Knative.EndpointKind.source, "messages", null, - -1, Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1218,8 +1206,7 @@ public class KnativeHttpTest { channel( Knative.EndpointKind.sink, "messages", - platformHttpHost, - platformHttpPort, + String.format("http://%s:%d", platformHttpHost, platformHttpPort), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1227,8 +1214,7 @@ public class KnativeHttpTest { channel( Knative.EndpointKind.sink, "words", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1368,7 +1354,7 @@ public class KnativeHttpTest { @ParameterizedTest @EnumSource(CloudEvents.class) void testOrdering(CloudEvent ce) throws Exception { - List<KnativeEnvironment.KnativeServiceDefinition> hops = new Random() + List<KnativeEnvironment.KnativeResource> hops = new Random() .ints(0, 100) .distinct() .limit(10) @@ -1385,7 +1371,7 @@ public class KnativeHttpTest { .toF("http://localhost:%d", platformHttpPort) .convertBodyTo(String.class); - for (KnativeEnvironment.KnativeServiceDefinition definition : hops) { + for (KnativeEnvironment.KnativeResource definition : hops) { b.fromF("knative:endpoint/%s", definition.getName()) .routeId(definition.getName()) .setBody().constant(definition.getName()); @@ -1395,7 +1381,7 @@ public class KnativeHttpTest { context.start(); List<String> hopsDone = new ArrayList<>(); - for (KnativeEnvironment.KnativeServiceDefinition definition : hops) { + for (KnativeEnvironment.KnativeResource definition : hops) { hopsDone.add(definition.getName()); Exchange result = template.request( @@ -1422,8 +1408,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1476,8 +1461,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1522,8 +1506,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain", @@ -1569,8 +1552,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1616,8 +1598,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1662,8 +1643,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1704,8 +1684,7 @@ public class KnativeHttpTest { endpoint( Knative.EndpointKind.sink, "ep", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event", Knative.CONTENT_TYPE, "text/plain" @@ -1747,8 +1726,7 @@ public class KnativeHttpTest { event( Knative.EndpointKind.sink, "event.sink", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.CONTENT_TYPE, "text/plain" )), @@ -1794,7 +1772,6 @@ public class KnativeHttpTest { @ParameterizedTest @EnumSource(CloudEvents.class) void testDynamicEventBridge(CloudEvent ce) throws Exception { - final int port = AvailablePortFinder.getNextAvailable(); final KnativeHttpServer server = new KnativeHttpServer(context); configureKnativeComponent( @@ -1803,8 +1780,7 @@ public class KnativeHttpTest { event( Knative.EndpointKind.sink, "default", - server.getHost(), - server.getPort(), + String.format("http://%s:%d", server.getHost(), server.getPort()), Map.of( Knative.CONTENT_TYPE, "text/plain" )), diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java index bbe209d..f0eff45 100644 --- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java +++ b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java @@ -28,11 +28,11 @@ public final class KnativeHttpTestSupport { private KnativeHttpTestSupport() { } - public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, KnativeEnvironment.KnativeServiceDefinition... definitions) { + public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, KnativeEnvironment.KnativeResource... definitions) { return configureKnativeComponent(context, ce, Arrays.asList(definitions)); } - public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, List<KnativeEnvironment.KnativeServiceDefinition> definitions) { + public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, List<KnativeEnvironment.KnativeResource> definitions) { KnativeComponent component = context.getComponent("knative", KnativeComponent.class); component.setCloudEventsSpecVersion(ce.version()); component.setEnvironment(new KnativeEnvironment(definitions)); diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java index 19250b4..3666e5e 100644 --- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java +++ b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java @@ -32,7 +32,6 @@ public class HttpServerRequestAssert extends AbstractAssert<HttpServerRequestAss return new HttpServerRequestAssert(actual); } - public AbstractStringAssert<?> header(String name) { isNotNull(); @@ -43,7 +42,6 @@ public class HttpServerRequestAssert extends AbstractAssert<HttpServerRequestAss isNotNull(); if (Objects.isNull(actual.getHeader(name))) { - //failWithMessage("Expected header name to be <%s> but was <%s>", name, actual.getName()); failWithMessage("Expected header %s not present", name); } diff --git a/components/camel-knative/camel-knative-test/src/main/java/org/apache/camel/component/knative/test/KnativeEnvironmentSupport.java b/components/camel-knative/camel-knative-test/src/main/java/org/apache/camel/component/knative/test/KnativeEnvironmentSupport.java index e775b9d..b00ccf1 100644 --- a/components/camel-knative/camel-knative-test/src/main/java/org/apache/camel/component/knative/test/KnativeEnvironmentSupport.java +++ b/components/camel-knative/camel-knative-test/src/main/java/org/apache/camel/component/knative/test/KnativeEnvironmentSupport.java @@ -25,79 +25,73 @@ public final class KnativeEnvironmentSupport { private KnativeEnvironmentSupport() { } - public static KnativeEnvironment.KnativeServiceDefinition endpoint(Knative.EndpointKind endpointKind, String name, String host, int port) { + public static KnativeEnvironment.KnativeResource endpoint(Knative.EndpointKind endpointKind, String name, String url) { return KnativeEnvironment.serviceBuilder(Knative.Type.endpoint, name) - .withHost(host) - .withPort(port) + .withUrl(url) .withMeta(Knative.CAMEL_ENDPOINT_KIND, endpointKind) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition endpoint(Knative.EndpointKind endpointKind, String name, String host, int port, Map<String, String> metadata) { + public static KnativeEnvironment.KnativeResource endpoint(Knative.EndpointKind endpointKind, String name, String url, Map<String, String> metadata) { return KnativeEnvironment.serviceBuilder(Knative.Type.endpoint, name) - .withHost(host) - .withPort(port) + .withUrl(url) .withMeta(metadata) .withMeta(Knative.CAMEL_ENDPOINT_KIND, endpointKind) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition sourceEndpoint(String name, Map<String, String> metadata) { + public static KnativeEnvironment.KnativeResource sourceEndpoint(String name, Map<String, String> metadata) { return KnativeEnvironment.serviceBuilder(Knative.Type.endpoint, name) .withMeta(metadata) .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.source.name()) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition channel(Knative.EndpointKind endpointKind, String name, String host, int port) { + public static KnativeEnvironment.KnativeResource channel(Knative.EndpointKind endpointKind, String name, String url) { return KnativeEnvironment.serviceBuilder(Knative.Type.channel, name) - .withHost(host) - .withPort(port) + .withUrl(url) .withMeta(Knative.CAMEL_ENDPOINT_KIND, endpointKind) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition channel(Knative.EndpointKind endpointKind, String name, String host, int port, Map<String, String> metadata) { + public static KnativeEnvironment.KnativeResource channel(Knative.EndpointKind endpointKind, String name, String url, Map<String, String> metadata) { return KnativeEnvironment.serviceBuilder(Knative.Type.channel, name) - .withHost(host) - .withPort(port) + .withUrl(url) .withMeta(metadata) .withMeta(Knative.CAMEL_ENDPOINT_KIND, endpointKind) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition sourceChannel(String name, Map<String, String> metadata) { + public static KnativeEnvironment.KnativeResource sourceChannel(String name, Map<String, String> metadata) { return KnativeEnvironment.serviceBuilder(Knative.Type.channel, name) .withMeta(metadata) .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.source) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition event(Knative.EndpointKind endpointKind, String name, String host, int port) { + public static KnativeEnvironment.KnativeResource event(Knative.EndpointKind endpointKind, String name, String url) { return KnativeEnvironment.serviceBuilder(Knative.Type.event, name) - .withHost(host) - .withPort(port) + .withUrl(url) .withMeta(Knative.CAMEL_ENDPOINT_KIND, endpointKind) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition sourceEvent(String name) { + public static KnativeEnvironment.KnativeResource sourceEvent(String name) { return KnativeEnvironment.serviceBuilder(Knative.Type.event, name) .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.source) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition sourceEvent(String name, Map<String, String> metadata) { + public static KnativeEnvironment.KnativeResource sourceEvent(String name, Map<String, String> metadata) { return KnativeEnvironment.serviceBuilder(Knative.Type.event, name) .withMeta(metadata) .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.source) .build(); } - public static KnativeEnvironment.KnativeServiceDefinition event(Knative.EndpointKind endpointKind, String name, String host, int port, Map<String, String> metadata) { + public static KnativeEnvironment.KnativeResource event(Knative.EndpointKind endpointKind, String name, String url, Map<String, String> metadata) { return KnativeEnvironment.serviceBuilder(Knative.Type.event, name) - .withHost(host) - .withPort(port) + .withUrl(url) .withMeta(metadata) .withMeta(Knative.CAMEL_ENDPOINT_KIND, endpointKind) .build(); diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java index 9cac875..0d0f69e 100644 --- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java +++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java @@ -74,7 +74,7 @@ public class KnativeEndpoint extends DefaultEndpoint { @Override public Producer createProducer() throws Exception { - final KnativeEnvironment.KnativeServiceDefinition service = lookupServiceDefinition(Knative.EndpointKind.sink); + final KnativeEnvironment.KnativeResource service = lookupServiceDefinition(Knative.EndpointKind.sink); final Processor ceProcessor = cloudEvent.producer(this, service); final Producer producer = getComponent().getTransport().createProducer(this, createTransportConfiguration(service), service); @@ -90,7 +90,7 @@ public class KnativeEndpoint extends DefaultEndpoint { @Override public Consumer createConsumer(Processor processor) throws Exception { - final KnativeEnvironment.KnativeServiceDefinition service = lookupServiceDefinition(Knative.EndpointKind.source); + final KnativeEnvironment.KnativeResource service = lookupServiceDefinition(Knative.EndpointKind.source); final Processor ceProcessor = cloudEvent.consumer(this, service); final Processor replyProcessor = configuration.isReplyWithCloudEvent() ? cloudEvent.producer(this, service) : null; final Processor pipeline = Pipeline.newInstance(getCamelContext(), ceProcessor, processor, replyProcessor); @@ -136,7 +136,7 @@ public class KnativeEndpoint extends DefaultEndpoint { } } - KnativeEnvironment.KnativeServiceDefinition lookupServiceDefinition(Knative.EndpointKind endpointKind) { + KnativeEnvironment.KnativeResource lookupServiceDefinition(Knative.EndpointKind endpointKind) { String serviceName = configuration.getServiceName(); // @@ -145,7 +145,7 @@ public class KnativeEndpoint extends DefaultEndpoint { // the endpoint uri but for events it is not possible so default should always be there for events // unless the service name is define as an endpoint option. // - KnativeEnvironment.KnativeServiceDefinition service = lookupServiceDefinition(serviceName, endpointKind) + KnativeEnvironment.KnativeResource service = lookupServiceDefinition(serviceName, endpointKind) .or(() -> lookupServiceDefinition("default", endpointKind)) .orElseThrow(() -> new IllegalArgumentException(String.format("Unable to find a service definition for %s/%s/%s", type, endpointKind, serviceName))); @@ -182,23 +182,22 @@ public class KnativeEndpoint extends DefaultEndpoint { metadata.put(Knative.KNATIVE_FILTER_PREFIX + cloudEvent.cloudEvent().mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), serviceName); } - return new KnativeEnvironment.KnativeServiceDefinition( + return new KnativeEnvironment.KnativeResource( service.getType(), service.getName(), - service.getHost(), - service.getPort(), + service.getUrl(), metadata ); } - Optional<KnativeEnvironment.KnativeServiceDefinition> lookupServiceDefinition(String name, Knative.EndpointKind endpointKind) { + Optional<KnativeEnvironment.KnativeResource> lookupServiceDefinition(String name, Knative.EndpointKind endpointKind) { return servicesDefinitions() .filter(definition -> definition.matches(this.type, name)) .filter(serviceFilter(endpointKind)) .findFirst(); } - private KnativeTransportConfiguration createTransportConfiguration(KnativeEnvironment.KnativeServiceDefinition definition) { + private KnativeTransportConfiguration createTransportConfiguration(KnativeEnvironment.KnativeResource definition) { return new KnativeTransportConfiguration( this.cloudEvent.cloudEvent(), !this.configuration.isReplyWithCloudEvent(), @@ -209,14 +208,14 @@ public class KnativeEndpoint extends DefaultEndpoint { ); } - private Stream<KnativeEnvironment.KnativeServiceDefinition> servicesDefinitions() { + private Stream<KnativeEnvironment.KnativeResource> servicesDefinitions() { return Stream.concat( - getCamelContext().getRegistry().findByType(KnativeEnvironment.KnativeServiceDefinition.class).stream(), + getCamelContext().getRegistry().findByType(KnativeEnvironment.KnativeResource.class).stream(), this.configuration.getEnvironment().stream() ); } - private Predicate<KnativeEnvironment.KnativeServiceDefinition> serviceFilter(Knative.EndpointKind endpointKind) { + private Predicate<KnativeEnvironment.KnativeResource> serviceFilter(Knative.EndpointKind endpointKind) { return s -> { final String type = s.getMetadata(Knative.CAMEL_ENDPOINT_KIND); if (!Objects.equals(endpointKind.name(), type)) { diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java index 8c9be63..b24bfcb 100644 --- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java +++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java @@ -48,7 +48,7 @@ abstract class AbstractCloudEventProcessor implements CloudEventProcessor { @SuppressWarnings("unchecked") @Override - public Processor consumer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeServiceDefinition service) { + public Processor consumer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeResource service) { return exchange -> { if (Objects.equals(exchange.getIn().getHeader(Exchange.CONTENT_TYPE), Knative.MIME_BATCH_CONTENT_MODE)) { throw new UnsupportedOperationException("Batched CloudEvents are not yet supported"); @@ -75,7 +75,7 @@ abstract class AbstractCloudEventProcessor implements CloudEventProcessor { protected abstract void decodeStructuredContent(Exchange exchange, Map<String, Object> content); @Override - public Processor producer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeServiceDefinition service) { + public Processor producer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeResource service) { final CloudEvent ce = cloudEvent(); final Logger logger = LoggerFactory.getLogger(getClass()); diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java index 4c76029..4e39295 100644 --- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java +++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java @@ -23,6 +23,6 @@ import org.apache.camel.component.knative.spi.KnativeEnvironment; public interface CloudEventProcessor { CloudEvent cloudEvent(); - Processor consumer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeServiceDefinition service); - Processor producer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeServiceDefinition service); + Processor consumer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeResource service); + Processor producer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeResource service); } diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java index fe13c02..5d3b558 100644 --- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java +++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java @@ -159,12 +159,12 @@ public enum CloudEventProcessors implements CloudEventProcessor { } @Override - public Processor consumer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeServiceDefinition service) { + public Processor consumer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeResource service) { return instance.consumer(endpoint, service); } @Override - public Processor producer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeServiceDefinition service) { + public Processor producer(KnativeEndpoint endpoint, KnativeEnvironment.KnativeResource service) { return instance.producer(endpoint, service); } diff --git a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java b/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java index 74272c5..dafe66a 100644 --- a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java +++ b/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java @@ -23,7 +23,8 @@ import org.apache.camel.component.knative.test.KnativeEnvironmentSupport; import org.apache.camel.impl.DefaultCamelContext; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.apache.camel.component.knative.spi.KnativeEnvironment.mandatoryLoadFromResource; import static org.assertj.core.api.Assertions.assertThat; @@ -56,9 +57,10 @@ public class KnativeComponentTest { // // ************************** - @Test - void testLoadEnvironment() throws Exception { - KnativeEnvironment env = mandatoryLoadFromResource(context, "classpath:/environment.json"); + @ParameterizedTest + @ValueSource(strings = { "classpath:/environment.json", "classpath:/environment_classic.json"}) + void testLoadEnvironment(String resource) throws Exception { + KnativeEnvironment env = mandatoryLoadFromResource(context, resource); assertThat(env.stream()).hasSize(3); assertThat(env.stream()).anyMatch(s -> s.getType() == Knative.Type.channel); @@ -68,8 +70,8 @@ public class KnativeComponentTest { component.setEnvironment(env); component.setTransport(new KnativeTransportNoop()); - context.getRegistry().bind("ereg", KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.source, "ereg", null, -1)); - context.getRegistry().bind("creg", KnativeEnvironmentSupport.channel(Knative.EndpointKind.source, "creg", null, -1)); + context.getRegistry().bind("ereg", KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.source, "ereg", null)); + context.getRegistry().bind("creg", KnativeEnvironmentSupport.channel(Knative.EndpointKind.source, "creg", null)); context.addComponent("knative", component); // @@ -79,6 +81,10 @@ public class KnativeComponentTest { KnativeEndpoint endpoint = context.getEndpoint("knative:channel/c1", KnativeEndpoint.class); assertThat(endpoint.lookupServiceDefinition("c1", Knative.EndpointKind.source)).isPresent(); assertThat(endpoint.lookupServiceDefinition("e1", Knative.EndpointKind.source)).isNotPresent(); + assertThat(endpoint.lookupServiceDefinition("c1", Knative.EndpointKind.source)).isPresent().get() + .hasFieldOrPropertyWithValue("url", "http://localhost:8081") + .hasFieldOrPropertyWithValue("host", "localhost") + .hasFieldOrPropertyWithValue("port", 8081); } { KnativeEndpoint endpoint = context.getEndpoint("knative:channel/creg", KnativeEndpoint.class); @@ -92,6 +98,10 @@ public class KnativeComponentTest { KnativeEndpoint endpoint = context.getEndpoint("knative:endpoint/e1", KnativeEndpoint.class); assertThat(endpoint.lookupServiceDefinition("e1", Knative.EndpointKind.source)).isPresent(); assertThat(endpoint.lookupServiceDefinition("c1", Knative.EndpointKind.source)).isNotPresent(); + assertThat(endpoint.lookupServiceDefinition("e1", Knative.EndpointKind.source)).isPresent().get() + .hasFieldOrPropertyWithValue("url", "http://localhost:9001") + .hasFieldOrPropertyWithValue("host", "localhost") + .hasFieldOrPropertyWithValue("port", 9001); } { KnativeEndpoint endpoint = context.getEndpoint("knative:endpoint/ereg", KnativeEndpoint.class); diff --git a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java b/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java index 784ad7d..e508a64 100644 --- a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java +++ b/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java @@ -37,7 +37,7 @@ public class KnativeTransportNoop implements KnativeTransport { } @Override - public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration configuration, KnativeEnvironment.KnativeServiceDefinition service) { + public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration configuration, KnativeEnvironment.KnativeResource service) { return new DefaultProducer(endpoint) { @Override public void process(Exchange exchange) throws Exception { @@ -46,7 +46,7 @@ public class KnativeTransportNoop implements KnativeTransport { } @Override - public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration configuration, KnativeEnvironment.KnativeServiceDefinition service, Processor processor) { + public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration configuration, KnativeEnvironment.KnativeResource service, Processor processor) { return new DefaultConsumer(endpoint, processor); } } diff --git a/components/camel-knative/camel-knative/src/test/resources/environment.json b/components/camel-knative/camel-knative/src/test/resources/environment.json index 0c6a571..2c634e4 100644 --- a/components/camel-knative/camel-knative/src/test/resources/environment.json +++ b/components/camel-knative/camel-knative/src/test/resources/environment.json @@ -1,10 +1,9 @@ { - "services": [ + "resources": [ { "type": "channel", "name": "c1", - "host": "localhost", - "port": "8001", + "url": "http://localhost:8081", "metadata": { "service.path": "", "knative.event.type": "", @@ -14,8 +13,7 @@ { "type": "endpoint", "name": "e1", - "host": "localhost", - "port": "9001", + "url": "http://localhost:9001", "metadata": { "service.path": "", "knative.event.type": "", @@ -25,8 +23,7 @@ { "type": "endpoint", "name": "default", - "host": "0.0.0.0", - "port": "8080", + "url": "http://0.0.0.0:8080", "metadata": { "service.path": "", "knative.event.type": "", diff --git a/components/camel-knative/camel-knative/src/test/resources/environment.json b/components/camel-knative/camel-knative/src/test/resources/environment_classic.json similarity index 80% copy from components/camel-knative/camel-knative/src/test/resources/environment.json copy to components/camel-knative/camel-knative/src/test/resources/environment_classic.json index 0c6a571..683df58 100644 --- a/components/camel-knative/camel-knative/src/test/resources/environment.json +++ b/components/camel-knative/camel-knative/src/test/resources/environment_classic.json @@ -3,8 +3,7 @@ { "type": "channel", "name": "c1", - "host": "localhost", - "port": "8001", + "url": "http://localhost:8081", "metadata": { "service.path": "", "knative.event.type": "", @@ -14,8 +13,7 @@ { "type": "endpoint", "name": "e1", - "host": "localhost", - "port": "9001", + "url": "http://localhost:9001", "metadata": { "service.path": "", "knative.event.type": "", @@ -25,8 +23,7 @@ { "type": "endpoint", "name": "default", - "host": "0.0.0.0", - "port": "8080", + "url": "http://0.0.0.0:8080", "metadata": { "service.path": "", "knative.event.type": "",