diff --git a/spring-integration-java-dsl/build.gradle b/spring-integration-java-dsl/build.gradle
index a10be01..e020027 100644
--- a/spring-integration-java-dsl/build.gradle
+++ b/spring-integration-java-dsl/build.gradle
@@ -28,12 +28,13 @@ ext {
apacheSshdVersion = '0.10.1'
embedMongoVersion = '1.46.0'
ftpServerVersion = '1.0.6'
+ hsqldbVersion = '2.3.2'
jacocoVersion = '0.7.1.201405082137'
jmsApiVersion = '1.1-rev-1'
mailVersion = '1.4.7'
slf4jVersion = '1.7.7'
springIntegrationVersion = '4.0.4.RELEASE'
- springBootVersion = '1.1.7.RELEASE'
+ springBootVersion = '1.1.8.RELEASE'
linkHomepage = 'https://github.com/spring-projects/spring-integration-extensions'
linkCi = 'https://build.spring.io/browse/INTEXT'
@@ -96,6 +97,7 @@ dependencies {
testRuntime "com.sun.mail:smtp:$mailVersion"
testRuntime "com.sun.mail:pop3:$mailVersion"
testRuntime "com.sun.mail:imap:$mailVersion"
+ testRuntime "org.hsqldb:hsqldb:$hsqldbVersion"
jacoco "org.jacoco:org.jacoco.agent:$jacocoVersion:runtime"
}
diff --git a/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/Adapters.java b/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/Adapters.java
index 102af56..c88f9a9 100644
--- a/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/Adapters.java
+++ b/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/Adapters.java
@@ -38,11 +38,13 @@ import org.springframework.integration.dsl.mail.MailSendingMessageHandlerSpec;
import org.springframework.integration.dsl.sftp.Sftp;
import org.springframework.integration.dsl.sftp.SftpMessageHandlerSpec;
import org.springframework.integration.dsl.sftp.SftpOutboundGatewaySpec;
+import org.springframework.integration.dsl.support.Function;
import org.springframework.integration.file.remote.RemoteFileTemplate;
import org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway;
import org.springframework.integration.file.remote.session.SessionFactory;
import org.springframework.integration.file.support.FileExistsMode;
import org.springframework.jms.core.JmsTemplate;
+import org.springframework.messaging.Message;
import com.jcraft.jsch.ChannelSftp;
@@ -67,6 +69,10 @@ public class Adapters {
return Files.outboundAdapter(directoryExpression);
}
+ public
FileWritingMessageHandlerSpec file(Function, ?> directoryFunction) {
+ return Files.outboundAdapter(directoryFunction);
+ }
+
public FileWritingMessageHandlerSpec fileGateway(File destinationDirectory) {
return Files.outboundGateway(destinationDirectory);
}
@@ -75,6 +81,10 @@ public class Adapters {
return Files.outboundGateway(directoryExpression);
}
+ public FileWritingMessageHandlerSpec fileGateway(Function, ?> directoryFunction) {
+ return Files.outboundGateway(directoryFunction);
+ }
+
public FtpMessageHandlerSpec ftp(SessionFactory sessionFactory) {
return Ftp.outboundAdapter(sessionFactory);
}
diff --git a/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/CorrelationHandlerSpec.java b/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/CorrelationHandlerSpec.java
index 16685e9..065a0a7 100644
--- a/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/CorrelationHandlerSpec.java
+++ b/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/CorrelationHandlerSpec.java
@@ -25,7 +25,10 @@ import org.springframework.integration.aggregator.ReleaseStrategy;
import org.springframework.integration.config.CorrelationStrategyFactoryBean;
import org.springframework.integration.config.ReleaseStrategyFactoryBean;
import org.springframework.integration.dsl.core.MessageHandlerSpec;
+import org.springframework.integration.dsl.support.Function;
+import org.springframework.integration.dsl.support.FunctionExpression;
import org.springframework.integration.expression.ValueExpression;
+import org.springframework.integration.store.MessageGroup;
import org.springframework.integration.store.MessageGroupStore;
import org.springframework.messaging.MessageChannel;
import org.springframework.scheduling.TaskScheduler;
@@ -76,8 +79,13 @@ public abstract class
return _this();
}
- public S groupTimeoutExpression(String expression) {
- this.groupTimeoutExpression = PARSER.parseExpression(expression);
+ public S groupTimeoutExpression(String groupTimeoutExpression) {
+ this.groupTimeoutExpression = PARSER.parseExpression(groupTimeoutExpression);
+ return _this();
+ }
+
+ public S groupTimeout(Function groupTimeoutFunction) {
+ this.groupTimeoutExpression = new FunctionExpression(groupTimeoutFunction);
return _this();
}
@@ -98,7 +106,7 @@ public abstract class
public S processor(Object target, String methodName) {
try {
- return this.correlationStrategy(new CorrelationStrategyFactoryBean(target, methodName).getObject())
+ return correlationStrategy(new CorrelationStrategyFactoryBean(target, methodName).getObject())
.releaseStrategy(new ReleaseStrategyFactoryBean(target, methodName).getObject());
}
catch (Exception e) {
@@ -107,7 +115,7 @@ public abstract class
}
public S correlationExpression(String correlationExpression) {
- return this.correlationStrategy(new ExpressionEvaluatingCorrelationStrategy(correlationExpression));
+ return correlationStrategy(new ExpressionEvaluatingCorrelationStrategy(correlationExpression));
}
public S correlationStrategy(Object target, String methodName) {
@@ -125,7 +133,7 @@ public abstract class
}
public S releaseExpression(String releaseExpression) {
- return this.releaseStrategy(new ExpressionEvaluatingReleaseStrategy(releaseExpression));
+ return releaseStrategy(new ExpressionEvaluatingReleaseStrategy(releaseExpression));
}
public S releaseStrategy(Object target, String methodName) {
diff --git a/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/EnricherSpec.java b/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/EnricherSpec.java
index 52dafba..ce0a622 100644
--- a/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/EnricherSpec.java
+++ b/spring-integration-java-dsl/src/main/java/org/springframework/integration/dsl/EnricherSpec.java
@@ -20,14 +20,16 @@ import java.util.HashMap;
import java.util.Map;
import org.springframework.expression.Expression;
-import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.dsl.core.MessageHandlerSpec;
+import org.springframework.integration.dsl.support.Function;
+import org.springframework.integration.dsl.support.FunctionExpression;
import org.springframework.integration.expression.ValueExpression;
import org.springframework.integration.transformer.ContentEnricher;
import org.springframework.integration.transformer.support.AbstractHeaderValueMessageProcessor;
import org.springframework.integration.transformer.support.ExpressionEvaluatingHeaderValueMessageProcessor;
import org.springframework.integration.transformer.support.HeaderValueMessageProcessor;
import org.springframework.integration.transformer.support.StaticHeaderValueMessageProcessor;
+import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.util.Assert;
@@ -37,13 +39,12 @@ import org.springframework.util.Assert;
*/
public class EnricherSpec extends MessageHandlerSpec {
- private final static SpelExpressionParser PARSER = new SpelExpressionParser();
-
private final ContentEnricher enricher = new ContentEnricher();
private final Map propertyExpressions = new HashMap();
- private final Map> headerExpressions = new HashMap>();
+ private final Map> headerExpressions =
+ new HashMap>();
EnricherSpec() {
}
@@ -83,6 +84,11 @@ public class EnricherSpec extends MessageHandlerSpec EnricherSpec requestPayload(Function, ?> requestPayloadFunction) {
+ this.enricher.setRequestPayloadExpression(new FunctionExpression>(requestPayloadFunction));
+ return _this();
+ }
+
public EnricherSpec shouldClonePayload(boolean shouldClonePayload) {
this.enricher.setShouldClonePayload(shouldClonePayload);
return _this();
@@ -99,6 +105,12 @@ public class EnricherSpec extends MessageHandlerSpec EnricherSpec propertyFunction(String key, Function, Object> function) {
+ Assert.notNull(key);
+ this.propertyExpressions.put(key, new FunctionExpression>(function));
+ return _this();
+ }
+
public EnricherSpec header(String name, V value) {
return this.header(name, value, null);
}
@@ -107,22 +119,36 @@ public class EnricherSpec extends MessageHandlerSpec headerValueMessageProcessor =
new StaticHeaderValueMessageProcessor(value);
headerValueMessageProcessor.setOverwrite(overwrite);
- return this.header(name, headerValueMessageProcessor);
+ return header(name, headerValueMessageProcessor);
}
public EnricherSpec headerExpression(String name, String expression) {
- return this.headerExpression(name, expression, null);
+ return headerExpression(name, expression, null);
}
public EnricherSpec headerExpression(String name, String expression, Boolean overwrite) {
+ Assert.hasText(expression);
+ return headerExpression(name, PARSER.parseExpression(expression), overwrite);
+ }
+
+ public EnricherSpec headerFunction(String name, Function, Object> function) {
+ return headerFunction(name, function, null);
+ }
+
+ public EnricherSpec headerFunction(String name, Function, Object> function, Boolean overwrite) {
+ Assert.notNull(function);
+ return headerExpression(name, new FunctionExpression>(function), overwrite);
+ }
+
+ private EnricherSpec headerExpression(String name, Expression expression, Boolean overwrite) {
AbstractHeaderValueMessageProcessor> headerValueMessageProcessor =
new ExpressionEvaluatingHeaderValueMessageProcessor