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