diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java
index 45babced22..1b99e4868e 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java
@@ -24,10 +24,6 @@ import java.util.UUID;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock;
-import org.aopalliance.aop.Advice;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
@@ -38,7 +34,7 @@ import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.integration.IntegrationMessageHeaderAccessor;
import org.springframework.integration.channel.NullChannel;
-import org.springframework.integration.expression.IntegrationEvaluationContextAware;
+import org.springframework.integration.expression.ExpressionUtils;
import org.springframework.integration.handler.AbstractMessageProducingHandler;
import org.springframework.integration.store.MessageGroup;
import org.springframework.integration.store.MessageGroupStore;
@@ -56,6 +52,10 @@ import org.springframework.scheduling.TaskScheduler;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
+import org.aopalliance.aop.Advice;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
* Abstract Message handler that holds a buffer of correlated messages in a
* {@link MessageStore}. This class takes care of correlated groups of messages
@@ -82,7 +82,7 @@ import org.springframework.util.CollectionUtils;
* @since 2.0
*/
public abstract class AbstractCorrelatingMessageHandler extends AbstractMessageProducingHandler
- implements DisposableBean, IntegrationEvaluationContextAware, ApplicationEventPublisherAware {
+ implements DisposableBean, ApplicationEventPublisherAware {
private static final Log logger = LogFactory.getLog(AbstractCorrelatingMessageHandler.class);
@@ -185,11 +185,6 @@ public abstract class AbstractCorrelatingMessageHandler extends AbstractMessageP
this.forceReleaseAdviceChain = forceReleaseAdviceChain;
}
- @Override
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.evaluationContext = evaluationContext;
- }
-
@Override
public void setTaskScheduler(TaskScheduler taskScheduler) {
super.setTaskScheduler(taskScheduler);
@@ -229,6 +224,8 @@ public abstract class AbstractCorrelatingMessageHandler extends AbstractMessageP
((SequenceSizeReleaseStrategy) this.releaseStrategy).setReleasePartialSequences(releasePartialSequences);
}
+ this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
+
/*
* Disallow any further changes to the lock registry
* (checked in the setter).
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationRegistrar.java b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationRegistrar.java
index 11fb7235b5..03804109ed 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationRegistrar.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationRegistrar.java
@@ -23,9 +23,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import org.springframework.beans.factory.BeanClassLoaderAware;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.config.BeanDefinition;
@@ -47,12 +44,14 @@ import org.springframework.integration.channel.DefaultHeaderChannelRegistry;
import org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor;
import org.springframework.integration.context.IntegrationContextUtils;
import org.springframework.integration.context.IntegrationProperties;
-import org.springframework.integration.expression.IntegrationEvaluationContextAwareBeanPostProcessor;
import org.springframework.integration.support.DefaultMessageBuilderFactory;
import org.springframework.integration.support.converter.DefaultDatatypeChannelMessageConverter;
import org.springframework.integration.support.utils.IntegrationUtils;
import org.springframework.util.ClassUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
* {@link ImportBeanDefinitionRegistrar} implementation that configures integration infrastructure.
*
@@ -87,9 +86,11 @@ public class IntegrationRegistrar implements ImportBeanDefinitionRegistrar, Bean
* to register the messaging annotation post processors (for {@code }).
*/
@Override
+ @SuppressWarnings("deprecation")
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
this.registerImplicitChannelCreator(registry);
this.registerIntegrationConfigurationBeanFactoryPostProcessor(registry);
+ //TODO remove this line in the 4.3
this.registerIntegrationEvaluationContext(registry);
this.registerIntegrationProperties(registry);
this.registerHeaderChannelRegistry(registry);
@@ -174,9 +175,14 @@ public class IntegrationRegistrar implements ImportBeanDefinitionRegistrar, Bean
/**
* Register {@link IntegrationEvaluationContextFactoryBean} bean
- * and {@link IntegrationEvaluationContextAwareBeanPostProcessor}, if necessary.
+ * and {@code IntegrationEvaluationContextAwareBeanPostProcessor}, if necessary.
* @param registry The {@link BeanDefinitionRegistry} to register additional {@link BeanDefinition}s.
+ * @deprecated since 4.2 in favor of {@link IntegrationContextUtils#getEvaluationContext}
+ * direct usage from the {@code afterPropertiesSet} implementation.
+ * Will be removed in the next release.
*/
+ @Deprecated
+ @SuppressWarnings("deprecation")
private void registerIntegrationEvaluationContext(BeanDefinitionRegistry registry) {
if (!registry.containsBeanDefinition(IntegrationContextUtils.INTEGRATION_EVALUATION_CONTEXT_BEAN_NAME)) {
BeanDefinitionBuilder integrationEvaluationContextBuilder = BeanDefinitionBuilder
@@ -191,7 +197,7 @@ public class IntegrationRegistrar implements ImportBeanDefinitionRegistrar, Bean
registry);
RootBeanDefinition integrationEvalContextBPP =
- new RootBeanDefinition(IntegrationEvaluationContextAwareBeanPostProcessor.class);
+ new RootBeanDefinition(org.springframework.integration.expression.IntegrationEvaluationContextAwareBeanPostProcessor.class);
BeanDefinitionReaderUtils.registerWithGeneratedName(integrationEvalContextBPP, registry);
}
}
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/ExpressionMessageProducerSupport.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/ExpressionMessageProducerSupport.java
index 0f221c6c40..86a5000a66 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/ExpressionMessageProducerSupport.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/ExpressionMessageProducerSupport.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2002-2015 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
@@ -10,13 +10,13 @@
* 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.integration.endpoint;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.expression.ExpressionUtils;
-import org.springframework.integration.expression.IntegrationEvaluationContextAware;
import org.springframework.util.Assert;
/**
@@ -29,7 +29,7 @@ import org.springframework.util.Assert;
* @since 2.1
*
*/
-public abstract class ExpressionMessageProducerSupport extends MessageProducerSupport implements IntegrationEvaluationContextAware {
+public abstract class ExpressionMessageProducerSupport extends MessageProducerSupport {
private static final SpelExpressionParser PARSER = new SpelExpressionParser();
@@ -56,17 +56,10 @@ public abstract class ExpressionMessageProducerSupport extends MessageProducerSu
this.payloadExpression = payloadExpression;
}
- @Override
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.evaluationContext = evaluationContext;
- }
-
@Override
protected void onInit() {
super.onInit();
- if (this.evaluationContext == null) {
- this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(this.getBeanFactory());
- }
+ this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
}
protected Object evaluatePayloadExpression(Object payload){
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java
index 0d74e960da..add534915f 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -16,9 +16,6 @@
package org.springframework.integration.expression;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.expression.BeanFactoryResolver;
import org.springframework.context.expression.MapAccessor;
@@ -28,6 +25,9 @@ import org.springframework.expression.spel.support.StandardTypeConverter;
import org.springframework.integration.context.IntegrationContextUtils;
import org.springframework.integration.support.utils.IntegrationUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
* Utility class with static methods for helping with establishing environments for
* SpEL expressions.
@@ -76,7 +76,7 @@ public abstract class ExpressionUtils {
*/
public static StandardEvaluationContext createStandardEvaluationContext(BeanFactory beanFactory) {
if (beanFactory == null) {
- logger.warn("Creating EvaluationContext with no beanFactory", new RuntimeException("No beanfactory"));
+ logger.warn("Creating EvaluationContext with no beanFactory", new RuntimeException("No beanFactory"));
}
return doCreateContext(beanFactory);
}
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAware.java b/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAware.java
index df6e693450..815c233109 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAware.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAware.java
@@ -17,6 +17,7 @@
package org.springframework.integration.expression;
import org.springframework.expression.EvaluationContext;
+import org.springframework.integration.context.IntegrationContextUtils;
/**
* Interface to be implemented by beans that wish to be aware of their
@@ -24,7 +25,7 @@ import org.springframework.expression.EvaluationContext;
* {@link org.springframework.integration.config.IntegrationEvaluationContextFactoryBean}
*
* The {@link #setIntegrationEvaluationContext} is invoked from
- * the {@link IntegrationEvaluationContextAwareBeanPostProcessor#afterSingletonsInstantiated()},
+ * the {@code IntegrationEvaluationContextAwareBeanPostProcessor#afterSingletonsInstantiated()},
* not during standard {@code postProcessBefore(After)Initialization} to avoid any
* {@code BeanFactory} early access during integration {@link EvaluationContext} retrieval.
* Therefore, if it is necessary to use {@link EvaluationContext} in the {@code afterPropertiesSet()},
@@ -33,8 +34,11 @@ import org.springframework.expression.EvaluationContext;
*
* @author Artem Bilan
* @since 3.0
- * @see IntegrationEvaluationContextAwareBeanPostProcessor
+ * @deprecated since 4.2 in favor of {@link IntegrationContextUtils#getEvaluationContext}
+ * direct usage from the {@code afterPropertiesSet} implementation.
+ * Will be removed in the next release.
*/
+@Deprecated
public interface IntegrationEvaluationContextAware {
void setIntegrationEvaluationContext(EvaluationContext evaluationContext);
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAwareBeanPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAwareBeanPostProcessor.java
index f7026e475d..2e118e1c29 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAwareBeanPostProcessor.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/expression/IntegrationEvaluationContextAwareBeanPostProcessor.java
@@ -32,7 +32,12 @@ import org.springframework.integration.context.IntegrationContextUtils;
* @author Artem Bilan
* @author Gary Russell
* @since 3.0
+ * @deprecated since 4.2 in favor of {@link IntegrationContextUtils#getEvaluationContext}
+ * direct usage from the {@code afterPropertiesSet} implementation.
+ * Will be removed in the next release.
*/
+@Deprecated
+@SuppressWarnings("deprecation")
public class IntegrationEvaluationContextAwareBeanPostProcessor
implements BeanPostProcessor, Ordered, BeanFactoryAware, SmartInitializingSingleton {
@@ -71,5 +76,5 @@ public class IntegrationEvaluationContextAwareBeanPostProcessor
public int getOrder() {
return LOWEST_PRECEDENCE;
}
-
+
}
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java
index 05fb2baf65..edf823ed80 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2014-2015 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.
@@ -16,11 +16,15 @@
package org.springframework.integration.routingslip;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+import org.springframework.beans.factory.InitializingBean;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
-import org.springframework.integration.expression.IntegrationEvaluationContextAware;
+import org.springframework.integration.expression.ExpressionUtils;
import org.springframework.messaging.Message;
/**
@@ -57,7 +61,7 @@ import org.springframework.messaging.Message;
* @since 4.1
*/
public class ExpressionEvaluatingRoutingSlipRouteStrategy
- implements RoutingSlipRouteStrategy, IntegrationEvaluationContextAware {
+ implements RoutingSlipRouteStrategy, BeanFactoryAware, InitializingBean {
private static final ExpressionParser PARSER = new SpelExpressionParser();
@@ -65,6 +69,8 @@ public class ExpressionEvaluatingRoutingSlipRouteStrategy
private EvaluationContext evaluationContext;
+ private BeanFactory beanFactory;
+
public ExpressionEvaluatingRoutingSlipRouteStrategy(String expression) {
this(PARSER.parseExpression(expression));
}
@@ -74,8 +80,13 @@ public class ExpressionEvaluatingRoutingSlipRouteStrategy
}
@Override
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.evaluationContext = evaluationContext;
+ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
+ this.beanFactory = beanFactory;
+ }
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(this.beanFactory);
}
@Override
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transaction/ExpressionEvaluatingTransactionSynchronizationProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/transaction/ExpressionEvaluatingTransactionSynchronizationProcessor.java
index 4a9f111b2c..7776e0c559 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/transaction/ExpressionEvaluatingTransactionSynchronizationProcessor.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/transaction/ExpressionEvaluatingTransactionSynchronizationProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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
@@ -24,7 +24,6 @@ import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.integration.channel.NullChannel;
import org.springframework.integration.context.IntegrationObjectSupport;
import org.springframework.integration.expression.ExpressionUtils;
-import org.springframework.integration.expression.IntegrationEvaluationContextAware;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.transaction.support.TransactionSynchronization;
@@ -56,7 +55,7 @@ import org.springframework.util.Assert;
*
*/
public class ExpressionEvaluatingTransactionSynchronizationProcessor extends IntegrationObjectSupport
- implements TransactionSynchronizationProcessor, IntegrationEvaluationContextAware {
+ implements TransactionSynchronizationProcessor {
private volatile EvaluationContext evaluationContext;
@@ -72,11 +71,6 @@ public class ExpressionEvaluatingTransactionSynchronizationProcessor extends Int
private volatile MessageChannel afterRollbackChannel = new NullChannel();
- @Override
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.evaluationContext = evaluationContext;
- }
-
public void setBeforeCommitChannel(MessageChannel beforeCommitChannel) {
Assert.notNull(beforeCommitChannel, "'beforeCommitChannel' must not be null");
this.beforeCommitChannel = beforeCommitChannel;
@@ -107,6 +101,12 @@ public class ExpressionEvaluatingTransactionSynchronizationProcessor extends Int
this.afterRollbackExpression = afterRollbackExpression;
}
+ @Override
+ protected void onInit() throws Exception {
+ super.onInit();
+ this.evaluationContext = createEvaluationContext();
+ }
+
public void processBeforeCommit(IntegrationResourceHolder holder) {
this.doProcess(holder, this.beforeCommitExpression, this.beforeCommitChannel, "beforeCommit");
}
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/ContentEnricher.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/ContentEnricher.java
index 646ed18418..5495ebec60 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/ContentEnricher.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/ContentEnricher.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -28,7 +28,6 @@ import org.springframework.expression.spel.SpelParserConfiguration;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.integration.expression.ExpressionUtils;
-import org.springframework.integration.expression.IntegrationEvaluationContextAware;
import org.springframework.integration.gateway.MessagingGatewaySupport;
import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
import org.springframework.integration.transformer.support.HeaderValueMessageProcessor;
@@ -53,7 +52,7 @@ import org.springframework.util.ReflectionUtils;
* @since 2.1
*/
public class ContentEnricher extends AbstractReplyProducingMessageHandler
- implements Lifecycle, IntegrationEvaluationContextAware {
+ implements Lifecycle {
private final SpelExpressionParser parser = new SpelExpressionParser(new SpelParserConfiguration(true, true));
@@ -245,11 +244,6 @@ public class ContentEnricher extends AbstractReplyProducingMessageHandler
this.shouldClonePayload = shouldClonePayload;
}
- @Override
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.sourceEvaluationContext = evaluationContext;
- }
-
@Override
public String getComponentType() {
return "enricher";
@@ -309,9 +303,7 @@ public class ContentEnricher extends AbstractReplyProducingMessageHandler
this.gateway.afterPropertiesSet();
}
- if (this.sourceEvaluationContext == null) {
- this.sourceEvaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
- }
+ this.sourceEvaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
StandardEvaluationContext targetContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
// bean resolution is NOT allowed for the target of the enrichment
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/support/RoutingSlipHeaderValueMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/support/RoutingSlipHeaderValueMessageProcessor.java
index 1069dbce34..d5005a6490 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/support/RoutingSlipHeaderValueMessageProcessor.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/support/RoutingSlipHeaderValueMessageProcessor.java
@@ -25,8 +25,6 @@ import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.expression.EvaluationContext;
-import org.springframework.integration.context.IntegrationContextUtils;
import org.springframework.integration.routingslip.ExpressionEvaluatingRoutingSlipRouteStrategy;
import org.springframework.integration.routingslip.RoutingSlipRouteStrategy;
import org.springframework.messaging.Message;
@@ -51,8 +49,6 @@ public class RoutingSlipHeaderValueMessageProcessor
private final List