From 0cdcc46f57b152edd54600e85d713e5b1ce9b753 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 2 Dec 2020 08:47:04 +0100 Subject: [PATCH] Minor cleanup and javadocs --- .../cloudevent/CloudEventMessageBuilder.java | 14 +++++++------- .../CloudEventsFunctionExtensionConfiguration.java | 10 ++++++++-- .../CloudEventsFunctionInvocationHelper.java | 5 ++++- .../context/catalog/SimpleFunctionRegistry.java | 6 ------ .../function/core/FunctionInvocationHelper.java | 1 + 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventMessageBuilder.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventMessageBuilder.java index 0d2fba37d..75552af59 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventMessageBuilder.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventMessageBuilder.java @@ -32,6 +32,8 @@ import org.springframework.messaging.support.GenericMessage; /** * Message builder which is aware of Cloud Event semantics. + * It provides type-safe setters for v1.0 Cloud Event attributes while + * supporting any version by exposing a convenient {@link #setHeader(String, Object)} method. * * @author Oleg Zhurakousky * @since 3.1 @@ -106,11 +108,6 @@ public final class CloudEventMessageBuilder { return this; } - public CloudEventMessageBuilder copyHeaders(Map headers) { - this.headers.putAll(headers); - return this; - } - public CloudEventMessageBuilder setTime(OffsetTime time) { this.headers.put(CloudEventMessageUtils.TIME, time); return this; @@ -126,6 +123,11 @@ public final class CloudEventMessageBuilder { return this; } + public CloudEventMessageBuilder copyHeaders(Map headers) { + this.headers.putAll(headers); + return this; + } + /** * Returns a snapshot of the headers {@link Map} at the time this method is called. * The returned Map is read-only. @@ -168,8 +170,6 @@ public final class CloudEventMessageBuilder { String stringId = this.headers.get(CloudEventMessageUtils.ID).toString(); try { id = UUID.fromString(stringId); - System.out.println(stringId); - System.out.println(id.toString()); } catch (Exception e) { logger.info("Provided Cloud Event 'id' is not compatible with Message 'id' which is UUID, " diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionExtensionConfiguration.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionExtensionConfiguration.java index f595694ad..e7339f5c7 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionExtensionConfiguration.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionExtensionConfiguration.java @@ -17,12 +17,16 @@ package org.springframework.cloud.function.cloudevent; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; +import org.springframework.cloud.function.core.FunctionInvocationHelper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.lang.Nullable; +import org.springframework.messaging.Message; /** + * Configuration class with components relevant to Cloud Events support. * * @author Oleg Zhurakousky * @since 3.1 @@ -32,13 +36,15 @@ class CloudEventsFunctionExtensionConfiguration { @Bean @ConditionalOnMissingClass("io.cloudevents.CloudEvent") - public CloudEventsFunctionInvocationHelper nativeFunctionInvocationHelper(@Nullable CloudEventHeaderEnricher cloudEventHeadersProvider) { + @ConditionalOnMissingBean + public FunctionInvocationHelper> nativeFunctionInvocationHelper(@Nullable CloudEventHeaderEnricher cloudEventHeadersProvider) { return new CloudEventsFunctionInvocationHelper(cloudEventHeadersProvider); } @Bean @ConditionalOnClass(name = "io.cloudevents.CloudEvent") - public CloudEventsFunctionInvocationHelper sdkFunctionInvocationHelper() { + @ConditionalOnMissingBean + public FunctionInvocationHelper> sdkFunctionInvocationHelper() { // TODO you may need SDKs header provider return null; } diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionInvocationHelper.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionInvocationHelper.java index c45c010bf..e651fe509 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionInvocationHelper.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventsFunctionInvocationHelper.java @@ -89,7 +89,10 @@ class CloudEventsFunctionInvocationHelper implements FunctionInvocationHelper input) { - //TODO rework to actually figure out where output goes instead of relying on input + /* + * TODO rework to actually figure out where output goes instead of relying on input + * In streams we can overrode and access output binding, ect. + */ return CloudEventMessageUtils.determinePrefixToUse(input.getHeaders()); } diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java index b801e6a8d..7afc840e9 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java @@ -328,12 +328,6 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect */ private Function enhancer; -// private BiFunction, Object, Message> outputMessageHeaderEnricher; -// -// void setOutputMessageHeaderEnricher(BiFunction, Object, Message> outputMessageHeaderEnricher) { -// this.outputMessageHeaderEnricher = outputMessageHeaderEnricher; -// } - FunctionInvocationWrapper(FunctionInvocationWrapper function) { this.target = function.target; this.inputType = function.inputType; diff --git a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FunctionInvocationHelper.java b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FunctionInvocationHelper.java index b0649912a..35d49adb1 100644 --- a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FunctionInvocationHelper.java +++ b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/core/FunctionInvocationHelper.java @@ -21,6 +21,7 @@ package org.springframework.cloud.function.core; /** * * @author Oleg Zhurakousky + * @since 3.1 * */ public interface FunctionInvocationHelper {