From 985374ca6929f8da7c4de49a28336097fa778d5e Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 7 Nov 2012 14:52:05 -0500 Subject: [PATCH] INT-1812 eliminated package cycles --- .../config/ConsumerEndpointFactoryBean.java | 5 +++-- ...ourcePollingChannelAdapterFactoryBean.java | 3 +-- .../integration/config/xml/PollerParser.java | 7 +++---- .../context/IntegrationContextUtils.java | 13 +------------ .../{util => expression}/ExpressionUtils.java | 6 +++--- ...ressionEvaluatingRequestHandlerAdvice.java | 2 +- .../SpelExpressionRetryStateGenerator.java | 2 +- .../scheduling/PollerMetadata.java | 19 ++++++++++++++++++- ...ngTransactionSynchronizationProcessor.java | 2 +- .../config/xml/PollerParserTests.java | 6 +++--- .../HttpRequestHandlingEndpointSupport.java | 2 +- .../mongodb/inbound/MongoDbMessageSource.java | 2 +- .../MongoDbStoringMessageHandler.java | 2 +- .../inbound/RedisStoreMessageSource.java | 2 +- ...disCollectionPopulatingMessageHandler.java | 2 +- 15 files changed, 40 insertions(+), 35 deletions(-) rename spring-integration-core/src/main/java/org/springframework/integration/{util => expression}/ExpressionUtils.java (97%) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java index 8629876275..5284ec6cb3 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.config; import java.util.List; @@ -20,6 +21,7 @@ import java.util.List; import org.aopalliance.aop.Advice; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + import org.springframework.aop.framework.Advised; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.AopUtils; @@ -33,7 +35,6 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.SmartLifecycle; import org.springframework.integration.MessageChannel; -import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.context.IntegrationObjectSupport; import org.springframework.integration.core.MessageHandler; import org.springframework.integration.core.PollableChannel; @@ -216,7 +217,7 @@ public class ConsumerEndpointFactoryBean else if (channel instanceof PollableChannel) { PollingConsumer pollingConsumer = new PollingConsumer((PollableChannel) channel, this.handler); if (this.pollerMetadata == null) { - this.pollerMetadata = IntegrationContextUtils.getDefaultPollerMetadata(this.beanFactory); + this.pollerMetadata = PollerMetadata.getDefaultPollerMetadata(this.beanFactory); Assert.notNull(this.pollerMetadata, "No poller has been defined for endpoint '" + this.beanName + "', and no default poller is available within the context."); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/SourcePollingChannelAdapterFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/config/SourcePollingChannelAdapterFactoryBean.java index 3bbebc8a3d..dd1fcc4779 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/SourcePollingChannelAdapterFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/SourcePollingChannelAdapterFactoryBean.java @@ -25,7 +25,6 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.SmartLifecycle; import org.springframework.integration.MessageChannel; -import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.core.MessageSource; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; import org.springframework.integration.scheduling.PollerMetadata; @@ -127,7 +126,7 @@ public class SourcePollingChannelAdapterFactoryBean implements FactoryBean element is allowed per context.", element); } if (StringUtils.hasText(id)) { - parserContext.getRegistry().registerAlias(id, IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME); + parserContext.getRegistry().registerAlias(id, PollerMetadata.DEFAULT_POLLER_METADATA_BEAN_NAME); } else { - id = IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME; + id = PollerMetadata.DEFAULT_POLLER_METADATA_BEAN_NAME; } } else if (!StringUtils.hasText(id)) { diff --git a/spring-integration-core/src/main/java/org/springframework/integration/context/IntegrationContextUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/context/IntegrationContextUtils.java index 636660ecef..ee058ad0f4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/context/IntegrationContextUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/context/IntegrationContextUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2012 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. @@ -19,7 +19,6 @@ package org.springframework.integration.context; import org.springframework.beans.factory.BeanFactory; import org.springframework.core.convert.ConversionService; import org.springframework.integration.MessageChannel; -import org.springframework.integration.scheduling.PollerMetadata; import org.springframework.integration.store.MetadataStore; import org.springframework.scheduling.TaskScheduler; import org.springframework.util.Assert; @@ -42,8 +41,6 @@ public abstract class IntegrationContextUtils { public static final String INTEGRATION_CONVERSION_SERVICE_BEAN_NAME = "integrationConversionService"; - public static final String DEFAULT_POLLER_METADATA_BEAN_NAME = "org.springframework.integration.context.defaultPollerMetadata"; - /** * Return the {@link MetadataStore} bean whose name is "metadataStore". @@ -80,14 +77,6 @@ public abstract class IntegrationContextUtils { return taskScheduler; } - /** - * Return the default {@link PollerMetadata} bean if available. - * @param beanFactory BeanFactory for lookup, must not be null. - */ - public static PollerMetadata getDefaultPollerMetadata(BeanFactory beanFactory) { - return getBeanOfType(beanFactory, DEFAULT_POLLER_METADATA_BEAN_NAME, PollerMetadata.class); - } - /** * Return the {@link ConversionService} bean whose name is "integrationConversionService" if available. * @param beanFactory BeanFactory for lookup, must not be null. diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/ExpressionUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java similarity index 97% rename from spring-integration-core/src/main/java/org/springframework/integration/util/ExpressionUtils.java rename to spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java index d3d35f6445..15ca78ac85 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/ExpressionUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/expression/ExpressionUtils.java @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.integration.util; + +package org.springframework.integration.expression; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -32,9 +33,8 @@ import org.springframework.integration.context.IntegrationContextUtils; * @author Gary Russell * @author Oleg Zhurakousky * @since 2.2 - * */ -public class ExpressionUtils { +public abstract class ExpressionUtils { /** * Create a {@link StandardEvaluationContext} with a {@link MapAccessor} in its diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/ExpressionEvaluatingRequestHandlerAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/ExpressionEvaluatingRequestHandlerAdvice.java index 3435dfe32c..56ab4a0329 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/ExpressionEvaluatingRequestHandlerAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/ExpressionEvaluatingRequestHandlerAdvice.java @@ -26,9 +26,9 @@ import org.springframework.integration.MessageHeaders; import org.springframework.integration.MessagingException; import org.springframework.integration.core.MessageHandler; import org.springframework.integration.core.MessagingTemplate; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.message.AdviceMessage; import org.springframework.integration.message.ErrorMessage; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.util.Assert; /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/SpelExpressionRetryStateGenerator.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/SpelExpressionRetryStateGenerator.java index 6d7f08dbd5..5b291a4dd0 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/SpelExpressionRetryStateGenerator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/advice/SpelExpressionRetryStateGenerator.java @@ -24,7 +24,7 @@ import org.springframework.expression.Expression; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.integration.Message; -import org.springframework.integration.util.ExpressionUtils; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.retry.RetryState; import org.springframework.retry.support.DefaultRetryState; import org.springframework.util.Assert; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java index 9a4ae731f4..0c9feeb870 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java @@ -20,7 +20,7 @@ import java.util.List; import java.util.concurrent.Executor; import org.aopalliance.aop.Advice; - +import org.springframework.beans.factory.BeanFactory; import org.springframework.integration.transaction.TransactionSynchronizationFactory; import org.springframework.scheduling.Trigger; import org.springframework.util.Assert; @@ -35,6 +35,9 @@ public class PollerMetadata { public static final int MAX_MESSAGES_UNBOUNDED = Integer.MIN_VALUE; + public static final String DEFAULT_POLLER_METADATA_BEAN_NAME = + "org.springframework.integration.context.defaultPollerMetadata"; + private volatile Trigger trigger; private volatile long maxMessagesPerPoll = MAX_MESSAGES_UNBOUNDED; @@ -51,6 +54,7 @@ public class PollerMetadata { private volatile TransactionSynchronizationFactory transactionSynchronizationFactory; + public void setTransactionSynchronizationFactory( TransactionSynchronizationFactory transactionSynchronizationFactory) { Assert.notNull(transactionSynchronizationFactory, "'transactionSynchronizationFactory' must not be null"); @@ -126,4 +130,17 @@ public class PollerMetadata { this.sendTimeout = sendTimeout; } + + /** + * Return the default {@link PollerMetadata} bean if available. + * @param beanFactory BeanFactory for lookup, must not be null. + */ + public static PollerMetadata getDefaultPollerMetadata(BeanFactory beanFactory) { + Assert.notNull(beanFactory, "BeanFactory must not be null"); + if (!beanFactory.containsBean(DEFAULT_POLLER_METADATA_BEAN_NAME)) { + return null; + } + return beanFactory.getBean(DEFAULT_POLLER_METADATA_BEAN_NAME, PollerMetadata.class); + } + } 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 4f10bf2c70..a0ec5bafb7 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 @@ -20,8 +20,8 @@ import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.integration.Message; import org.springframework.integration.MessageChannel; import org.springframework.integration.context.IntegrationObjectSupport; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.support.MessageBuilder; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.util.Assert; /** diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java index 38dd1ee712..4535c1e438 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java @@ -26,11 +26,11 @@ import java.util.concurrent.TimeUnit; import org.aopalliance.aop.Advice; import org.junit.Test; + import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.config.TestTrigger; -import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.scheduling.PollerMetadata; import org.springframework.integration.test.util.TestUtils; import org.springframework.scheduling.support.PeriodicTrigger; @@ -51,7 +51,7 @@ public class PollerParserTests { "defaultPollerWithId.xml", PollerParserTests.class); Object poller = context.getBean("defaultPollerWithId"); assertNotNull(poller); - Object defaultPoller = context.getBean(IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME); + Object defaultPoller = context.getBean(PollerMetadata.DEFAULT_POLLER_METADATA_BEAN_NAME); assertNotNull(defaultPoller); assertEquals(defaultPoller, context.getBean("defaultPollerWithId")); } @@ -60,7 +60,7 @@ public class PollerParserTests { public void defaultPollerWithoutId() { ApplicationContext context = new ClassPathXmlApplicationContext( "defaultPollerWithoutId.xml", PollerParserTests.class); - Object defaultPoller = context.getBean(IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME); + Object defaultPoller = context.getBean(PollerMetadata.DEFAULT_POLLER_METADATA_BEAN_NAME); assertNotNull(defaultPoller); } diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingEndpointSupport.java b/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingEndpointSupport.java index cb56788819..7e9d2325e3 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingEndpointSupport.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingEndpointSupport.java @@ -51,6 +51,7 @@ import org.springframework.integration.Message; import org.springframework.integration.MessageHeaders; import org.springframework.integration.MessagingException; import org.springframework.integration.context.OrderlyShutdownCapable; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.gateway.MessagingGatewaySupport; import org.springframework.integration.http.converter.MultipartAwareFormHttpMessageConverter; import org.springframework.integration.http.converter.SerializingHttpMessageConverter; @@ -58,7 +59,6 @@ import org.springframework.integration.http.multipart.MultipartHttpInputMessage; import org.springframework.integration.http.support.DefaultHttpHeaderMapper; import org.springframework.integration.mapping.HeaderMapper; import org.springframework.integration.support.MessageBuilder; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.util.AntPathMatcher; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/inbound/MongoDbMessageSource.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/inbound/MongoDbMessageSource.java index 0501e397c6..9e82689671 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/inbound/MongoDbMessageSource.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/inbound/MongoDbMessageSource.java @@ -29,10 +29,10 @@ import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.integration.Message; import org.springframework.integration.context.IntegrationObjectSupport; import org.springframework.integration.core.MessageSource; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.mongodb.support.MongoHeaders; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.transaction.IntegrationResourceHolder; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/outbound/MongoDbStoringMessageHandler.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/outbound/MongoDbStoringMessageHandler.java index b55130da3a..32b99b5b89 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/outbound/MongoDbStoringMessageHandler.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/outbound/MongoDbStoringMessageHandler.java @@ -24,8 +24,8 @@ import org.springframework.expression.common.LiteralExpression; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.integration.Message; import org.springframework.integration.core.MessageHandler; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.handler.AbstractMessageHandler; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.util.Assert; /** * Implementation of {@link MessageHandler} which writes Message payload into a MongoDb collection diff --git a/spring-integration-redis/src/main/java/org/springframework/integration/redis/inbound/RedisStoreMessageSource.java b/spring-integration-redis/src/main/java/org/springframework/integration/redis/inbound/RedisStoreMessageSource.java index ebd15e3c89..c1beb4644e 100644 --- a/spring-integration-redis/src/main/java/org/springframework/integration/redis/inbound/RedisStoreMessageSource.java +++ b/spring-integration-redis/src/main/java/org/springframework/integration/redis/inbound/RedisStoreMessageSource.java @@ -31,9 +31,9 @@ import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.integration.Message; import org.springframework.integration.context.IntegrationObjectSupport; import org.springframework.integration.core.MessageSource; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.transaction.IntegrationResourceHolder; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.util.Assert; /** diff --git a/spring-integration-redis/src/main/java/org/springframework/integration/redis/outbound/RedisCollectionPopulatingMessageHandler.java b/spring-integration-redis/src/main/java/org/springframework/integration/redis/outbound/RedisCollectionPopulatingMessageHandler.java index 5f17ae0c5a..51afb94269 100644 --- a/spring-integration-redis/src/main/java/org/springframework/integration/redis/outbound/RedisCollectionPopulatingMessageHandler.java +++ b/spring-integration-redis/src/main/java/org/springframework/integration/redis/outbound/RedisCollectionPopulatingMessageHandler.java @@ -44,9 +44,9 @@ import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.integration.Message; import org.springframework.integration.MessageHandlingException; import org.springframework.integration.core.MessageHandler; +import org.springframework.integration.expression.ExpressionUtils; import org.springframework.integration.handler.AbstractMessageHandler; import org.springframework.integration.redis.support.RedisHeaders; -import org.springframework.integration.util.ExpressionUtils; import org.springframework.util.Assert; import org.springframework.util.NumberUtils;