diff --git a/applications/processor/groovy-transform-processor/README.adoc b/applications/processor/groovy-transform-processor/README.adoc new file mode 100644 index 00000000..9cf31b29 --- /dev/null +++ b/applications/processor/groovy-transform-processor/README.adoc @@ -0,0 +1,13 @@ +//tag::ref-doc[] += Groovy Transform Processor + +A Processor that transforms messages using a Groovy script. + +== Options + +The **$$groovy-transform$$** $$processor$$ has the following options: + +//tag::configuration-properties[] +//end::configuration-properties[] + +//end::ref-doc[] diff --git a/applications/processor/groovy-transform-processor/pom.xml b/applications/processor/groovy-transform-processor/pom.xml new file mode 100644 index 00000000..68e86116 --- /dev/null +++ b/applications/processor/groovy-transform-processor/pom.xml @@ -0,0 +1,130 @@ + + + 4.0.0 + groovy-transform-processor + groovy-transform-processor + groovy-transform processor apps + 3.0.0-SNAPSHOT + + + org.springframework.cloud.stream.app + stream-applications-core + 3.0.0-SNAPSHOT + + + + + 2.4.0 + + + + + + org.springframework.integration + spring-integration-groovy + + + org.codehaus.groovy + groovy-json + + + org.codehaus.groovy + groovy-nio + + + org.codehaus.groovy + groovy-templates + + + org.codehaus.groovy + groovy-xml + + + org.codehaus.groovy + groovy-dateutil + + + org.codehaus.groovy + groovy-datetime + + + org.codehaus.groovy + groovy-jaxb + + + org.apache.ivy + ivy + ${apache-ivy.version} + + + org.springframework.cloud.fn + payload-converter-function + 1.0.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + + + + org.springframework.cloud + spring-cloud-app-starter-doc-maven-plugin + + + org.springframework.cloud.stream.app.plugin + spring-cloud-stream-app-maven-plugin + + + groovy-transform + processor + ${project.version} + + org.springframework.cloud.stream.app.groovy.transform.processor.GroovyTransformProcessorConfiguration.class + + byteArrayTextToString|groovyTransformFunction + + + + + org.springframework.cloud.stream.app + groovy-transform-processor + ${project.version} + + + + + + + + + + + true + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + + + false + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + + diff --git a/applications/processor/groovy-transform-processor/src/main/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorConfiguration.java b/applications/processor/groovy-transform-processor/src/main/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorConfiguration.java new file mode 100644 index 00000000..b77cc1dd --- /dev/null +++ b/applications/processor/groovy-transform-processor/src/main/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorConfiguration.java @@ -0,0 +1,75 @@ +/* + * Copyright 2015-2020 the original author or authors. + * + * Licensed 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 + * + * https://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 org.springframework.cloud.stream.app.groovy.transform.processor; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.support.PropertiesLoaderUtils; +import org.springframework.integration.groovy.GroovyScriptExecutingMessageProcessor; +import org.springframework.integration.handler.MessageProcessor; +import org.springframework.integration.scripting.DefaultScriptVariableGenerator; +import org.springframework.integration.scripting.ScriptVariableGenerator; +import org.springframework.messaging.Message; +import org.springframework.scripting.support.ResourceScriptSource; +import org.springframework.util.CollectionUtils; + +/** + * A Processor app that transforms messages using a Groovy script. + * + * @author Eric Bottard + * @author Mark Fisher + * @author Marius Bogoevici + * @author Gary Russell + * @author Christian Tzolov + * @author Soby Chacko + */ +@Configuration +@EnableConfigurationProperties(GroovyTransformProcessorProperties.class) +public class GroovyTransformProcessorConfiguration { + + @Autowired + private GroovyTransformProcessorProperties properties; + + @Bean + public Function, Object> groovyTransformFunction(ScriptVariableGenerator scriptVariableGenerator) { + return message -> transformer(scriptVariableGenerator).processMessage(message); + } + + @Bean + public MessageProcessor transformer(ScriptVariableGenerator scriptVariableGenerator) { + return new GroovyScriptExecutingMessageProcessor( + new ResourceScriptSource(properties.getScript()), scriptVariableGenerator); + } + + @Bean(name = "variableGenerator") + public ScriptVariableGenerator scriptVariableGenerator() throws IOException { + Map variables = new HashMap<>(); + CollectionUtils.mergePropertiesIntoMap(properties.getVariables(), variables); + if (properties.getVariablesLocation() != null) { + CollectionUtils.mergePropertiesIntoMap( + PropertiesLoaderUtils.loadProperties(properties.getVariablesLocation()), variables); + } + return new DefaultScriptVariableGenerator(variables); + } +} diff --git a/applications/processor/groovy-transform-processor/src/main/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorProperties.java b/applications/processor/groovy-transform-processor/src/main/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorProperties.java new file mode 100644 index 00000000..dca234cc --- /dev/null +++ b/applications/processor/groovy-transform-processor/src/main/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorProperties.java @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2016 the original author or authors. + * + * Licensed 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 + * + * https://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 org.springframework.cloud.stream.app.groovy.transform.processor; + +import java.util.Properties; + +import javax.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.core.io.Resource; +import org.springframework.validation.annotation.Validated; + +/** + * Configuration properties for the Groovy Transform Processor module. + * + * @author Eric Bottard + */ +@ConfigurationProperties("groovy-transformer") +@Validated +public class GroovyTransformProcessorProperties { + + /** + * Reference to a script used to process messages. + */ + private Resource script; + + /** + * Variable bindings as a new line delimited string of name-value pairs, e.g. 'foo=bar\n baz=car'. + */ + private Properties variables; + + /** + * The location of a properties file containing custom script variable bindings. + */ + private Resource variablesLocation; + + @NotNull + public Resource getScript() { + return script; + } + + public void setScript(Resource script) { + this.script = script; + } + + + public Properties getVariables() { + return variables; + } + + public void setVariables(Properties variables) { + this.variables = variables; + } + + public Resource getVariablesLocation() { + return variablesLocation; + } + + public void setVariablesLocation(Resource variablesLocation) { + this.variablesLocation = variablesLocation; + } +} diff --git a/applications/processor/groovy-transform-processor/src/main/resources/META-INF/dataflow-configuration-metadata-whitelist.properties b/applications/processor/groovy-transform-processor/src/main/resources/META-INF/dataflow-configuration-metadata-whitelist.properties new file mode 100644 index 00000000..93da2b6c --- /dev/null +++ b/applications/processor/groovy-transform-processor/src/main/resources/META-INF/dataflow-configuration-metadata-whitelist.properties @@ -0,0 +1,3 @@ +configuration-properties.classes=org.springframework.cloud.stream.app.groovy.transform.processor.GroovyTransformProcessorProperties + + diff --git a/applications/processor/groovy-transform-processor/src/test/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorIntegrationTests.java b/applications/processor/groovy-transform-processor/src/test/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorIntegrationTests.java new file mode 100644 index 00000000..f5136fdb --- /dev/null +++ b/applications/processor/groovy-transform-processor/src/test/java/org/springframework/cloud/stream/app/groovy/transform/processor/GroovyTransformProcessorIntegrationTests.java @@ -0,0 +1,80 @@ +/* + * Copyright 2015-2020 the original author or authors. + * + * Licensed 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 + * + * https://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 org.springframework.cloud.stream.app.groovy.transform.processor; + +import java.nio.charset.StandardCharsets; + +import org.junit.jupiter.api.Test; + +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.stream.binder.test.InputDestination; +import org.springframework.cloud.stream.binder.test.OutputDestination; +import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Import; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.GenericMessage; + +import static org.assertj.core.api.Assertions.assertThat; + +public class GroovyTransformProcessorIntegrationTests { + + @Test + public void testGroovyTransformerWithScript() { + try (ConfigurableApplicationContext context = new SpringApplicationBuilder( + TestChannelBinderConfiguration.getCompleteConfiguration(GroovyTransformTestAppConfiguration.class)) + .web(WebApplicationType.NONE) + .run("--spring.cloud.function.definition=byteArrayTextToString|groovyTransformFunction", + "--groovy-transformer.script=script.groovy", + "--groovy-transformer.variables=limit=5\n foo=\\\40WORLD")) { + + InputDestination processorInput = context.getBean(InputDestination.class); + OutputDestination processorOutput = context.getBean(OutputDestination.class); + + String inMessage = "hello world"; + processorInput.send(new GenericMessage<>(inMessage.getBytes(StandardCharsets.UTF_8))); + Message sourceMessage = processorOutput.receive(10000); + assertThat(new String(sourceMessage.getPayload())).isEqualTo("hello WORLD"); + } + } + + @Test + public void testGroovyTransformerWithGrab() { + try (ConfigurableApplicationContext context = new SpringApplicationBuilder( + TestChannelBinderConfiguration.getCompleteConfiguration(GroovyTransformTestAppConfiguration.class)) + .web(WebApplicationType.NONE) + .run("--spring.cloud.function.definition=byteArrayTextToString|groovyTransformFunction", + "--groovy-transformer.script=script-with-grab.groovy")) { + + InputDestination processorInput = context.getBean(InputDestination.class); + OutputDestination processorOutput = context.getBean(OutputDestination.class); + + String inMessage = "def foo=bar"; + processorInput.send(new GenericMessage<>(inMessage.getBytes(StandardCharsets.UTF_8))); + Message sourceMessage = processorOutput.receive(10000); + assertThat(new String(sourceMessage.getPayload())).isEqualTo("var foo = bar;" + System.lineSeparator()); + } + } + + + @EnableAutoConfiguration + @Import({GroovyTransformProcessorConfiguration.class}) + public static class GroovyTransformTestAppConfiguration { + } +} diff --git a/applications/processor/groovy-transform-processor/src/test/resources/script-with-grab.groovy b/applications/processor/groovy-transform-processor/src/test/resources/script-with-grab.groovy new file mode 100644 index 00000000..6ccec178 --- /dev/null +++ b/applications/processor/groovy-transform-processor/src/test/resources/script-with-grab.groovy @@ -0,0 +1,6 @@ +@Grab('org.grooscript:grooscript:1.3.0') +import org.grooscript.GrooScript +@Grab('org.grooscript:grooscript:1.3.0') +import org.grooscript.GrooScript + +GrooScript.convert(new String(payload)) \ No newline at end of file diff --git a/applications/processor/groovy-transform-processor/src/test/resources/script.groovy b/applications/processor/groovy-transform-processor/src/test/resources/script.groovy new file mode 100644 index 00000000..df9dfa04 --- /dev/null +++ b/applications/processor/groovy-transform-processor/src/test/resources/script.groovy @@ -0,0 +1 @@ +payload.substring(0, limit as int) + foo \ No newline at end of file diff --git a/applications/processor/pom.xml b/applications/processor/pom.xml index 8501a12c..9c424e0e 100644 --- a/applications/processor/pom.xml +++ b/applications/processor/pom.xml @@ -11,6 +11,7 @@ bridge-processor + groovy-transform-processor header-enricher-processor splitter-processor filter-processor diff --git a/applications/stream-applications-build/stream-applications-descriptor/pom.xml b/applications/stream-applications-build/stream-applications-descriptor/pom.xml index cfb58123..fc9b5875 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/pom.xml +++ b/applications/stream-applications-build/stream-applications-descriptor/pom.xml @@ -14,17 +14,23 @@ 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT + 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT + 3.0.0-SNAPSHOT + 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT + 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT + 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT 3.0.0-SNAPSHOT + 3.0.0-SNAPSHOT @@ -64,6 +70,8 @@ "${cassandra-sink.version}".contains('SNAPSHOT') ? 'latest' : "${cassandra-sink.version}"; pom.properties['counter-sink-docker.tag']= "${counter-sink.version}".contains('SNAPSHOT') ? 'latest' : "${counter-sink.version}"; + pom.properties['file-sink-docker.tag']= + "${file-sink.version}".contains('SNAPSHOT') ? 'latest' : "${file-sink.version}"; pom.properties['jdbc-sink-docker.tag']= "${jdbc-sink.version}".contains('SNAPSHOT') ? 'latest' : "${jdbc-sink.version}"; pom.properties['log-sink-docker.tag']= @@ -72,6 +80,10 @@ "${mongodb-sink.version}".contains('SNAPSHOT') ? 'latest' : "${mongodb-sink.version}"; pom.properties['rabbit-sink-docker.tag']= "${rabbit-sink.version}".contains('SNAPSHOT') ? 'latest' : "${rabbit-sink.version}"; + pom.properties['redis-sink-docker.tag']= + "${redis-sink.version}".contains('SNAPSHOT') ? 'latest' : "${redis-sink.version}"; + pom.properties['file-source-docker.tag']= + "${file-source.version}".contains('SNAPSHOT') ? 'latest' : "${file-source.version}"; pom.properties['http-source-docker.tag']= "${http-source.version}".contains('SNAPSHOT') ? 'latest' : "${http-source.version}"; pom.properties['jdbc-source-docker.tag']= @@ -80,8 +92,14 @@ "${mongodb-source.version}".contains('SNAPSHOT') ? 'latest' : "${mongodb-source.version}"; pom.properties['time-source-docker.tag']= "${time-source.version}".contains('SNAPSHOT') ? 'latest' : "${time-source.version}"; + pom.properties['bridge-processor-docker.tag']= + "${bridge-processor.version}".contains('SNAPSHOT') ? 'latest' : "${bridge-processor.version}"; pom.properties['filter-processor-docker.tag']= "${filter-processor.version}".contains('SNAPSHOT') ? 'latest' : "${filter-processor.version}"; + pom.properties['groovy-transform-processor-docker.tag']= + "${groovy-transform-processor.version}".contains('SNAPSHOT') ? 'latest' : "${groovy-transform-processor.version}"; + pom.properties['header-enricher-processor-docker.tag']= + "${header-enricher-processor.version}".contains('SNAPSHOT') ? 'latest' : "${header-enricher-processor.version}"; pom.properties['splitter-processor-docker.tag']= "${splitter-processor.version}".contains('SNAPSHOT') ? 'latest' : "${splitter-processor.version}"; pom.properties['transform-processor-docker.tag']= diff --git a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-docker.properties b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-docker.properties index ceeef29d..80dcf579 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-docker.properties +++ b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-docker.properties @@ -1,13 +1,19 @@ sink.cassandra=docker:springcloudstream/cassandra-sink-kafka:@cassandra-sink-docker.tag@ sink.counter=docker:springcloudstream/counter-sink-kafka:@counter-sink-docker.tag@ +sink.file=docker:springcloudstream/file-sink-kafka:@file-sink-docker.tag@ sink.jdbc=docker:springcloudstream/jdbc-sink-kafka:@jdbc-sink-docker.tag@ sink.log=docker:springcloudstream/log-sink-kafka:@log-sink-docker.tag@ sink.mongodb=docker:springcloudstream/mongodb-sink-kafka:@mongodb-sink-docker.tag@ sink.rabbit=docker:springcloudstream/rabbit-sink-kafka:@rabbit-sink-docker.tag@ +sink.redis=docker:springcloudstream/redis-sink-kafka:@redis-sink-docker.tag@ +source.file=docker:springcloudstream/file-source-kafka:@file-source-docker.tag@ source.http=docker:springcloudstream/http-source-kafka:@http-source-docker.tag@ source.jdbc=docker:springcloudstream/jdbc-source-kafka:@jdbc-source-docker.tag@ source.mongodb=docker:springcloudstream/mongodb-source-kafka:@mongodb-source-docker.tag@ source.time=docker:springcloudstream/time-source-kafka:@time-source-docker.tag@ +processor.bridge=docker:springcloudstream/bridge-processor-kafka:@bridge-processor-docker.tag@ processor.filter=docker:springcloudstream/filter-processor-kafka:@filter-processor-docker.tag@ +processor.groovy-transform=docker:springcloudstream/groovy-transform-processor-kafka:@groovy-transform-processor-docker.tag@ +processor.header-enricher=docker:springcloudstream/header-enricher-processor-kafka:@header-enricher-processor-docker.tag@ processor.splitter=docker:springcloudstream/splitter-processor-kafka:@splitter-processor-docker.tag@ processor.transform=docker:springcloudstream/transform-processor-kafka:@transform-processor-docker.tag@ diff --git a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven-repo-url.properties b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven-repo-url.properties index 140d9a87..c11d16bd 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven-repo-url.properties +++ b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven-repo-url.properties @@ -2,6 +2,8 @@ sink.cassandra=https://@repo-spring-io@/org/springframework/cloud/stream/app/cas sink.cassandra.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/cassandra-sink-kafka/@cassandra-sink.version@/cassandra-sink-kafka-@cassandra-sink.version@-metadata.jar sink.counter=https://@repo-spring-io@/org/springframework/cloud/stream/app/counter-sink-kafka/@counter-sink.version@/counter-sink-kafka-@counter-sink.version@.jar sink.counter.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/counter-sink-kafka/@counter-sink.version@/counter-sink-kafka-@counter-sink.version@-metadata.jar +sink.file=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-sink-kafka/@file-sink.version@/file-sink-kafka-@file-sink.version@.jar +sink.file.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-sink-kafka/@file-sink.version@/file-sink-kafka-@file-sink.version@-metadata.jar sink.jdbc=https://@repo-spring-io@/org/springframework/cloud/stream/app/jdbc-sink-kafka/@jdbc-sink.version@/jdbc-sink-kafka-@jdbc-sink.version@.jar sink.jdbc.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/jdbc-sink-kafka/@jdbc-sink.version@/jdbc-sink-kafka-@jdbc-sink.version@-metadata.jar sink.log=https://@repo-spring-io@/org/springframework/cloud/stream/app/log-sink-kafka/@log-sink.version@/log-sink-kafka-@log-sink.version@.jar @@ -10,6 +12,10 @@ sink.mongodb=https://@repo-spring-io@/org/springframework/cloud/stream/app/mongo sink.mongodb.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/mongodb-sink-kafka/@mongodb-sink.version@/mongodb-sink-kafka-@mongodb-sink.version@-metadata.jar sink.rabbit=https://@repo-spring-io@/org/springframework/cloud/stream/app/rabbit-sink-kafka/@rabbit-sink.version@/rabbit-sink-kafka-@rabbit-sink.version@.jar sink.rabbit.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/rabbit-sink-kafka/@rabbit-sink.version@/rabbit-sink-kafka-@rabbit-sink.version@-metadata.jar +sink.redis=https://@repo-spring-io@/org/springframework/cloud/stream/app/redis-sink-kafka/@redis-sink.version@/redis-sink-kafka-@redis-sink.version@.jar +sink.redis.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/redis-sink-kafka/@redis-sink.version@/redis-sink-kafka-@redis-sink.version@-metadata.jar +source.file=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-source-kafka/@file-source.version@/file-source-kafka-@file-source.version@.jar +source.file.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-source-kafka/@file-source.version@/file-source-kafka-@file-source.version@-metadata.jar source.http=https://@repo-spring-io@/org/springframework/cloud/stream/app/http-source-kafka/@http-source.version@/http-source-kafka-@http-source.version@.jar source.http.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/http-source-kafka/@http-source.version@/http-source-kafka-@http-source.version@-metadata.jar source.jdbc=https://@repo-spring-io@/org/springframework/cloud/stream/app/jdbc-source-kafka/@jdb-source.version@/jdbc-source-kafka-@jdbc-source.version@.jar @@ -18,8 +24,14 @@ source.mongodb=https://@repo-spring-io@/org/springframework/cloud/stream/app/mon source.mongodb.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/mongodb-source-kafka/@mongodb-source.version@/mongodb-source-kafka-@mongodb-source.version@-metadata.jar source.time=https://@repo-spring-io@/org/springframework/cloud/stream/app/time-source-kafka/@time-source.version@/time-source-kafka-@time-source.version@.jar source.time.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/time-source-kafka/@time-source.version@/time-source-kafka-@time-source.version@-metadata.jar +processor.bridge=https://@repo-spring-io@/org/springframework/cloud/stream/app/bridge-processor-kafka/@bridge-processor.version@/bridge-processor-kafka-@bridge-processor.version@.jar +processor.bridge.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/bridge-processor-kafka/@bridge-processor.version@/bridge-processor-kafka-@bridge-processor.version@-metadata.jar processor.filter=https://@repo-spring-io@/org/springframework/cloud/stream/app/filter-processor-kafka/@filter-processor.version@/filter-processor-kafka-@filter-processor.version@.jar processor.filter.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/filter-processor-kafka/@filter-processor.version@/filter-processor-kafka-@filter-processor.version@-metadata.jar +processor.groovy-transform=https://@repo-spring-io@/org/springframework/cloud/stream/app/groovy-transform-processor-kafka/@groovy-transform-processor.version@/groovy-transform-processor-kafka-@groovy-transform-processor.version@.jar +processor.groovy-transform.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/groovy-transform-processor-kafka/@groovy-transform-processor.version@/groovy-transform-processor-kafka-@groovy-transform-processor.version@-metadata.jar +processor.header-enricher=https://@repo-spring-io@/org/springframework/cloud/stream/app/header-enricher-processor-kafka/@header-enricher-processor.version@/header-enricher-processor-kafka-@header-enricher-processor.version@.jar +processor.header-enricher.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/header-enricher-processor-kafka/@header-enricher-processor.version@/header-enricher-processor-kafka-@header-enricher-processor.version@-metadata.jar processor.splitter=https://@repo-spring-io@/org/springframework/cloud/stream/app/splitter-processor-kafka/@splitter-processor.version@/splitter-processor-kafka-@splitter-processor.version@.jar processor.splitter.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/splitter-processor-kafka/@splitter-processor.version@/splitter-processor-kafka-@splitter-processor.version@-metadata.jar processor.transform=https://@repo-spring-io@/org/springframework/cloud/stream/app/transform-processor-kafka/@transform-processor.version@/transform-processor-kafka-@transform-processor.version@.jar diff --git a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven.properties b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven.properties index 8655eac1..8e57b35e 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven.properties +++ b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/kafka-apps-maven.properties @@ -2,6 +2,8 @@ sink.cassandra=maven://org.springframework.cloud.stream.app:cassandra-sink-kafka sink.cassandra.metadata=maven://org.springframework.cloud.stream.app:cassandra-sink-kafka:jar:metadata:@cassandra-sink.version@ sink.counter=maven://org.springframework.cloud.stream.app:counter-sink-kafka:@counter-sink.version@ sink.counter.metadata=maven://org.springframework.cloud.stream.app:counter-sink-kafka:jar:metadata:@counter-sink.version@ +sink.file=maven://org.springframework.cloud.stream.app:file-sink-kafka:@file-sink.version@ +sink.file.metadata=maven://org.springframework.cloud.stream.app:file-sink-kafka:jar:metadata:@file-sink.version@ sink.jdbc=maven://org.springframework.cloud.stream.app:jdbc-sink-kafka:@jdbc-sink.version@ sink.jdbc.metadata=maven://org.springframework.cloud.stream.app:jdbc-sink-kafka:jar:metadata:@jdbc-sink.version@ sink.log=maven://org.springframework.cloud.stream.app:log-sink-kafka:@log-sink.version@ @@ -10,6 +12,10 @@ sink.mongodb=maven://org.springframework.cloud.stream.app:mongodb-sink-kafka:@mo sink.mongodb.metadata=maven://org.springframework.cloud.stream.app:mongodb-sink-kafka:jar:metadata:@mongodb-sink.version@ sink.rabbit=maven://org.springframework.cloud.stream.app:rabbit-sink-kafka:@rabbit-sink.version@ sink.rabbit.metadata=maven://org.springframework.cloud.stream.app:rabbit-sink-kafka:jar:metadata:@rabbit-sink.version@ +sink.redis=maven://org.springframework.cloud.stream.app:redis-sink-kafka:@redis-sink.version@ +sink.redis.metadata=maven://org.springframework.cloud.stream.app:redis-sink-kafka:jar:metadata:@redis-sink.version@ +source.file=maven://org.springframework.cloud.stream.app:file-source-kafka:@file-source.version@ +source.file.metadata=maven://org.springframework.cloud.stream.app:file-source-kafka:jar:metadata:@file-source.version@ source.http=maven://org.springframework.cloud.stream.app:http-source-kafka:@http-source.version@ source.http.metadata=maven://org.springframework.cloud.stream.app:http-source-kafka:jar:metadata:@http-source.version@ source.jdbc=maven://org.springframework.cloud.stream.app:jdbc-source-kafka:@jdbc-source.version@ @@ -18,8 +24,14 @@ source.mongodb=maven://org.springframework.cloud.stream.app:mongodb-source-kafka source.mongodb.metadata=maven://org.springframework.cloud.stream.app:mongodb-source-kafka:jar:metadata:@mongodb-source.version@ source.time=maven://org.springframework.cloud.stream.app:time-source-kafka:@time-source.version@ source.time.metadata=maven://org.springframework.cloud.stream.app:time-source-kafka:jar:metadata:@time-source.version@ +processor.bridge=maven://org.springframework.cloud.stream.app:bridge-processor-kafka:@bridge-processor.version@ +processor.bridge.metadata=maven://org.springframework.cloud.stream.app:bridge-processor-kafka:jar:metadata:@bridge-processor.version@ processor.filter=maven://org.springframework.cloud.stream.app:filter-processor-kafka:@filter-processor.version@ processor.filter.metadata=maven://org.springframework.cloud.stream.app:filter-processor-kafka:jar:metadata:@filter-processor.version@ +processor.groovy-transform=maven://org.springframework.cloud.stream.app:groovy-transform-processor-kafka:@groovy-transform-processor.version@ +processor.groovy-transform.metadata=maven://org.springframework.cloud.stream.app:groovy-transform-processor-kafka:jar:metadata:@groovy-transform-processor.version@ +processor.header-enricher=maven://org.springframework.cloud.stream.app:header-enricher-processor-kafka:@header-enricher-processor.version@ +processor.header-enricher.metadata=maven://org.springframework.cloud.stream.app:header-enricher-processor-kafka:jar:metadata:@header-enricher-processor.version@ processor.splitter=maven://org.springframework.cloud.stream.app:splitter-processor-kafka:@splitter-processor.version@ processor.splitter.metadata=maven://org.springframework.cloud.stream.app:splitter-processor-kafka:jar:metadata:@splitter-processor.version@ processor.transform=maven://org.springframework.cloud.stream.app:transform-processor-kafka:@transform-processor.version@ diff --git a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-docker.properties b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-docker.properties index 5af47680..ed4bceb6 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-docker.properties +++ b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-docker.properties @@ -1,13 +1,19 @@ sink.cassandra=docker:springcloudstream/cassandra-sink-rabbit:@cassandra-sink-docker.tag@ sink.counter=docker:springcloudstream/counter-sink-rabbit:@counter-sink-docker.tag@ +sink.file=docker:springcloudstream/file-sink-rabbit:@file-sink-docker.tag@ sink.jdbc=docker:springcloudstream/jdbc-sink-rabbit:@jdbc-sink-docker.tag@ sink.log=docker:springcloudstream/log-sink-rabbit:@log-sink-docker.tag@ sink.mongodb=docker:springcloudstream/mongodb-sink-rabbit:@mongodb-sink-docker.tag@ sink.rabbit=docker:springcloudstream/rabbit-sink-rabbit:@rabbit-sink-docker.tag@ +sink.redis=docker:springcloudstream/redis-sink-rabbit:@redis-sink-docker.tag@ +source.file=docker:springcloudstream/file-source-rabbit:@file-source-docker.tag@ source.http=docker:springcloudstream/http-source-rabbit:@http-source-docker.tag@ source.jdbc=docker:springcloudstream/jdbc-source-rabbit:@jdbc-source-docker.tag@ source.mongodb=docker:springcloudstream/mongodb-source-rabbit:@mongodb-source-docker.tag@ source.time=docker:springcloudstream/time-source-rabbit:@time-source-docker.tag@ +processor.bridge=docker:springcloudstream/bridge-processor-rabbit:@bridge-processor-docker.tag@ processor.filter=docker:springcloudstream/filter-processor-rabbit:@filter-processor-docker.tag@ +processor.groovy-transform=docker:springcloudstream/groovy-transform-processor-rabbit:@groovy-transform-processor-docker.tag@ +processor.header-enricher=docker:springcloudstream/header-enricher-processor-rabbit:@header-enricher-processor-docker.tag@ processor.splitter=docker:springcloudstream/splitter-processor-rabbit:@splitter-processor-docker.tag@ processor.transform=docker:springcloudstream/transform-processor-rabbit:@transform-processor-docker.tag@ diff --git a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven-repo-url.properties b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven-repo-url.properties index b67e0dd8..8c5eff13 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven-repo-url.properties +++ b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven-repo-url.properties @@ -2,6 +2,8 @@ sink.cassandra=https://@repo-spring-io@/org/springframework/cloud/stream/app/cas sink.cassandra.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/cassandra-sink-rabbit/@cassandra-sink.version@/cassandra-sink-rabbit-@cassandra-sink.version@-metadata.jar sink.counter=https://@repo-spring-io@/org/springframework/cloud/stream/app/counter-sink-rabbit/@counter-sink.version@/counter-sink-rabbit-@counter-sink.version@.jar sink.counter.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/counter-sink-rabbit/@counter-sink.version@/counter-sink-rabbit-@counter-sink.version@-metadata.jar +sink.file=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-sink-rabbit/@file-sink.version@/file-sink-rabbit-@file-sink.version@.jar +sink.file.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-sink-rabbit/@file-sink.version@/file-sink-rabbit-@file-sink.version@-metadata.jar sink.jdbc=https://@repo-spring-io@/org/springframework/cloud/stream/app/jdbc-sink-rabbit/@jdbc-sink.version@/jdbc-sink-rabbit-@jdbc-sink.version@.jar sink.jdbc.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/jdbc-sink-rabbit/@jdbc-sink.version@/jdbc-sink-rabbit-@jdbc-sink.version@-metadata.jar sink.log=https://@repo-spring-io@/org/springframework/cloud/stream/app/log-sink-rabbit/@log-sink.version@/log-sink-rabbit-@log-sink.version@.jar @@ -10,6 +12,10 @@ sink.mongodb=https://@repo-spring-io@/org/springframework/cloud/stream/app/mongo sink.mongodb.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/mongodb-sink-rabbit/@mongodb-sink.version@/mongodb-sink-rabbit-@mongodb-sink.version@-metadata.jar sink.rabbit=https://@repo-spring-io@/org/springframework/cloud/stream/app/rabbit-sink-rabbit/@rabbit-sink.version@/rabbit-sink-rabbit-@rabbit-sink.version@.jar sink.rabbit.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/rabbit-sink-rabbit/@rabbit-sink.version@/rabbit-sink-rabbit-@rabbit-sink.version@-metadata.jar +sink.redis=https://@repo-spring-io@/org/springframework/cloud/stream/app/redis-sink-rabbit/@redis-sink.version@/redis-sink-rabbit-@redis-sink.version@.jar +sink.redis.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/redis-sink-rabbit/@redis-sink.version@/redis-sink-rabbit-@redis-sink.version@-metadata.jar +source.file=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-source-rabbit/@file-source.version@/file-source-rabbit-@file-source.version@.jar +source.file.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/file-source-rabbit/@file-source.version@/file-source-rabbit-@file-source.version@-metadata.jar source.http=https://@repo-spring-io@/org/springframework/cloud/stream/app/http-source-rabbit/@http-source.version@/http-source-rabbit-@http-source.version@.jar source.http.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/http-source-rabbit/@http-source.version@/http-source-rabbit-@http-source.version@-metadata.jar source.jdbc=https://@repo-spring-io@/org/springframework/cloud/stream/app/jdbc-source-rabbit/@jdb-source.version@/jdbc-source-rabbit-@jdbc-source.version@.jar @@ -18,8 +24,14 @@ source.mongodb=https://@repo-spring-io@/org/springframework/cloud/stream/app/mon source.mongodb.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/mongodb-source-rabbit/@mongodb-source.version@/mongodb-source-rabbit-@mongodb-source.version@-metadata.jar source.time=https://@repo-spring-io@/org/springframework/cloud/stream/app/time-source-rabbit/@time-source.version@/time-source-rabbit-@time-source.version@.jar source.time.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/time-source-rabbit/@time-source.version@/time-source-rabbit-@time-source.version@-metadata.jar +processor.bridge=https://@repo-spring-io@/org/springframework/cloud/stream/app/bridge-processor-rabbit/@bridge-processor.version@/bridge-processor-rabbit-@bridge-processor.version@.jar +processor.bridge.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/bridge-processor-rabbit/@bridge-processor.version@/bridge-processor-rabbit-@bridge-processor.version@-metadata.jar processor.filter=https://@repo-spring-io@/org/springframework/cloud/stream/app/filter-processor-rabbit/@filter-processor.version@/filter-processor-rabbit-@filter-processor.version@.jar processor.filter.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/filter-processor-rabbit/@filter-processor.version@/filter-processor-rabbit-@filter-processor.version@-metadata.jar +processor.groovy-transform=https://@repo-spring-io@/org/springframework/cloud/stream/app/groovy-transform-processor-rabbit/@groovy-transform-processor.version@/groovy-transform-processor-rabbit-@groovy-transform-processor.version@.jar +processor.groovy-transform.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/groovy-transform-processor-rabbit/@groovy-transform-processor.version@/groovy-transform-processor-rabbit-@groovy-transform-processor.version@-metadata.jar +processor.header-enricher=https://@repo-spring-io@/org/springframework/cloud/stream/app/header-enricher-processor-rabbit/@header-enricher-processor.version@/header-enricher-processor-rabbit-@header-enricher-processor.version@.jar +processor.header-enricher.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/header-enricher-processor-rabbit/@header-enricher-processor.version@/header-enricher-processor-rabbit-@header-enricher-processor.version@-metadata.jar processor.splitter=https://@repo-spring-io@/org/springframework/cloud/stream/app/splitter-processor-rabbit/@splitter-processor.version@/splitter-processor-rabbit-@splitter-processor.version@.jar processor.splitter.metadata=https://@repo-spring-io@/org/springframework/cloud/stream/app/splitter-processor-rabbit/@splitter-processor.version@/splitter-processor-rabbit-@splitter-processor.version@-metadata.jar processor.transform=https://@repo-spring-io@/org/springframework/cloud/stream/app/transform-processor-rabbit/@transform-processor.version@/transform-processor-rabbit-@transform-processor.version@.jar diff --git a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven.properties b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven.properties index f6bfaa8b..db2eb199 100644 --- a/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven.properties +++ b/applications/stream-applications-build/stream-applications-descriptor/src/main/resources/META-INF/rabbit-apps-maven.properties @@ -2,6 +2,8 @@ sink.cassandra=maven://org.springframework.cloud.stream.app:cassandra-sink-rabbi sink.cassandra.metadata=maven://org.springframework.cloud.stream.app:cassandra-sink-rabbit:jar:metadata:@cassandra-sink.version@ sink.counter=maven://org.springframework.cloud.stream.app:counter-sink-rabbit:@counter-sink.version@ sink.counter.metadata=maven://org.springframework.cloud.stream.app:counter-sink-rabbit:jar:metadata:@counter-sink.version@ +sink.file=maven://org.springframework.cloud.stream.app:file-sink-rabbit:@file-sink.version@ +sink.file.metadata=maven://org.springframework.cloud.stream.app:file-sink-rabbit:jar:metadata:@file-sink.version@ sink.jdbc=maven://org.springframework.cloud.stream.app:jdbc-sink-rabbit:@jdbc-sink.version@ sink.jdbc.metadata=maven://org.springframework.cloud.stream.app:jdbc-sink-rabbit:jar:metadata:@jdbc-sink.version@ sink.log=maven://org.springframework.cloud.stream.app:log-sink-rabbit:@log-sink.version@ @@ -10,6 +12,10 @@ sink.mongodb=maven://org.springframework.cloud.stream.app:mongodb-sink-rabbit:@m sink.mongodb.metadata=maven://org.springframework.cloud.stream.app:mongodb-sink-rabbit:jar:metadata:@mongodb-sink.version@ sink.rabbit=maven://org.springframework.cloud.stream.app:rabbit-sink-rabbit:@rabbit-sink.version@ sink.rabbit.metadata=maven://org.springframework.cloud.stream.app:rabbit-sink-rabbit:jar:metadata:@rabbit-sink.version@ +sink.redis=maven://org.springframework.cloud.stream.app:redis-sink-rabbit:@redis-sink.version@ +sink.redis.metadata=maven://org.springframework.cloud.stream.app:redis-sink-rabbit:jar:metadata:@redis-sink.version@ +source.file=maven://org.springframework.cloud.stream.app:file-source-rabbit:@file-source.version@ +source.file.metadata=maven://org.springframework.cloud.stream.app:file-source-rabbit:jar:metadata:@file-source.version@ source.http=maven://org.springframework.cloud.stream.app:http-source-rabbit:@http-source.version@ source.http.metadata=maven://org.springframework.cloud.stream.app:http-source-rabbit:jar:metadata:@http-source.version@ source.jdbc=maven://org.springframework.cloud.stream.app:jdbc-source-rabbit:@jdbc-source.version@ @@ -18,8 +24,14 @@ source.mongodb=maven://org.springframework.cloud.stream.app:mongodb-source-rabbi source.mongodb.metadata=maven://org.springframework.cloud.stream.app:mongodb-source-rabbit:jar:metadata:@mongodb-source.version@ source.time=maven://org.springframework.cloud.stream.app:time-source-rabbit:@time-source.version@ source.time.metadata=maven://org.springframework.cloud.stream.app:time-source-rabbit:jar:metadata:@time-source.version@ +processor.bridge=maven://org.springframework.cloud.stream.app:bridge-processor-rabbit:@bridge-processor.version@ +processor.bridge.metadata=maven://org.springframework.cloud.stream.app:bridge-processor-rabbit:jar:metadata:@bridge-processor.version@ processor.filter=maven://org.springframework.cloud.stream.app:filter-processor-rabbit:@filter-processor.version@ processor.filter.metadata=maven://org.springframework.cloud.stream.app:filter-processor-rabbit:jar:metadata:@filter-processor.version@ +processor.groovy-transform=maven://org.springframework.cloud.stream.app:groovy-transform-processor-rabbit:@groovy-transform-processor.version@ +processor.groovy-transform.metadata=maven://org.springframework.cloud.stream.app:groovy-transform-processor-rabbit:jar:metadata:@groovy-transform-processor.version@ +processor.header-enricher=maven://org.springframework.cloud.stream.app:header-enricher-processor-rabbit:@header-enricher-processor.version@ +processor.header-enricher.metadata=maven://org.springframework.cloud.stream.app:header-enricher-processor-rabbit:jar:metadata:@header-enricher-processor.version@ processor.splitter=maven://org.springframework.cloud.stream.app:splitter-processor-rabbit:@splitter-processor.version@ processor.splitter.metadata=maven://org.springframework.cloud.stream.app:splitter-processor-rabbit:jar:metadata:@splitter-processor.version@ processor.transform=maven://org.springframework.cloud.stream.app:transform-processor-rabbit:@transform-processor.version@ diff --git a/applications/stream-applications-build/stream-applications-docs/pom.xml b/applications/stream-applications-build/stream-applications-docs/pom.xml index 0d32cc12..e1093abd 100644 --- a/applications/stream-applications-build/stream-applications-docs/pom.xml +++ b/applications/stream-applications-build/stream-applications-docs/pom.xml @@ -32,16 +32,31 @@ spel-function ${java-functions.version} + + org.springframework.cloud.fn + header-enricher-function + ${java-functions.version} + org.springframework.cloud.fn counter-consumer ${java-functions.version} + + org.springframework.cloud.fn + file-consumer + ${java-functions.version} + org.springframework.cloud.fn jdbc-consumer ${java-functions.version} + + org.springframework.cloud.fn + redis-consumer + ${java-functions.version} + org.springframework.cloud.fn mongodb-consumer @@ -67,6 +82,11 @@ time-supplier ${java-functions.version} + + org.springframework.cloud.fn + file-supplier + ${java-functions.version} + org.springframework.cloud.fn jdbc-supplier @@ -82,6 +102,16 @@ mongodb-supplier ${java-functions.version} + + org.springframework.cloud.stream.app + bridge-processor + 3.0.0-SNAPSHOT + + + org.springframework.cloud.stream.app + groovy-transform-processor + 3.0.0-SNAPSHOT + diff --git a/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/processors.adoc b/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/processors.adoc index 0d2920c0..c0f5a3fa 100644 --- a/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/processors.adoc +++ b/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/processors.adoc @@ -3,8 +3,14 @@ :leveloffset: +2 +[[spring-cloud-stream-modules-bridge]] +include::{stream-apps-root}/{branch}/applications/processor/bridge-processor/README.adoc[tags=ref-doc] [[spring-cloud-stream-modules-filter]] include::{stream-apps-root}/{branch}/applications/processor/filter-processor/README.adoc[tags=ref-doc] +[[spring-cloud-stream-modules-groovy-transform]] +include::{stream-apps-root}/{branch}/applications/processor/groovy-transform-processor/README.adoc[tags=ref-doc] +[[spring-cloud-stream-modules-header-enricher]] +include::{stream-apps-root}/{branch}/applications/processor/header-enricher-processor/README.adoc[tags=ref-doc] [[spring-cloud-stream-modules-splitter]] include::{stream-apps-root}/{branch}/applications/processor/splitter-processor/README.adoc[tags=ref-doc] [[spring-cloud-stream-modules-transform]] diff --git a/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/sinks.adoc b/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/sinks.adoc index eede9bef..56d0c775 100644 --- a/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/sinks.adoc +++ b/applications/stream-applications-build/stream-applications-docs/src/main/asciidoc/sinks.adoc @@ -15,5 +15,7 @@ include::{stream-apps-root}/{branch}/applications/sink/log-sink/README.adoc[tags include::{stream-apps-root}/{branch}/applications/sink/mongodb-sink/README.adoc[tags=ref-doc] [[spring-cloud-stream-modules-rabbit-sink]] include::{stream-apps-root}/{branch}/applications/sink/rabbit-sink/README.adoc[tags=ref-doc] +[[spring-cloud-stream-modules-redis-sink]] +include::{stream-apps-root}/{branch}/applications/sink/redis-sink/README.adoc[tags=ref-doc] :leveloffset: -2