diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aot/CoreRuntimeHints.java b/spring-integration-core/src/main/java/org/springframework/integration/aot/CoreRuntimeHints.java index c590d44c21..2b3bc6750b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aot/CoreRuntimeHints.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aot/CoreRuntimeHints.java @@ -39,14 +39,15 @@ import org.springframework.context.SmartLifecycle; import org.springframework.integration.aggregator.MessageGroupProcessor; import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.context.IntegrationProperties; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.core.GenericSelector; +import org.springframework.integration.core.GenericTransformer; import org.springframework.integration.core.MessageSource; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.gateway.MethodArgsHolder; import org.springframework.integration.gateway.RequestReplyExchanger; import org.springframework.integration.handler.AbstractReplyProducingMessageHandler; import org.springframework.integration.handler.DelayHandler; -import org.springframework.integration.handler.GenericHandler; import org.springframework.integration.history.MessageHistory; import org.springframework.integration.json.JsonPathUtils; import org.springframework.integration.message.AdviceMessage; @@ -56,7 +57,6 @@ import org.springframework.integration.store.MessageHolder; import org.springframework.integration.store.MessageMetadata; import org.springframework.integration.support.MutableMessage; import org.springframework.integration.support.MutableMessageHeaders; -import org.springframework.integration.transformer.GenericTransformer; import org.springframework.messaging.MessageHandler; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.PollableChannel; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/AbstractMethodAnnotationPostProcessor.java similarity index 99% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/AbstractMethodAnnotationPostProcessor.java index f9bb263020..0d21bc1d0a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/AbstractMethodAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -73,10 +73,7 @@ import org.springframework.integration.annotation.Reactive; import org.springframework.integration.annotation.Role; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.MessagePublishingErrorHandler; -import org.springframework.integration.config.AbstractSimpleMessageHandlerFactoryBean; -import org.springframework.integration.config.ConsumerEndpointFactoryBean; -import org.springframework.integration.config.IntegrationConfigUtils; -import org.springframework.integration.config.RouterFactoryBean; +import org.springframework.integration.config.annotation.MethodAnnotationPostProcessor; import org.springframework.integration.context.IntegrationObjectSupport; import org.springframework.integration.context.Orderable; import org.springframework.integration.endpoint.AbstractEndpoint; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AggregatorAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/AggregatorAnnotationPostProcessor.java similarity index 98% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AggregatorAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/AggregatorAnnotationPostProcessor.java index f2ff210f04..a975e0c6dd 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AggregatorAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/AggregatorAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/BridgeFromAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/BridgeFromAnnotationPostProcessor.java similarity index 97% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/BridgeFromAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/BridgeFromAnnotationPostProcessor.java index 8e782e0f2a..fd21cd5002 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/BridgeFromAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/BridgeFromAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/BridgeToAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/BridgeToAnnotationPostProcessor.java similarity index 96% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/BridgeToAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/BridgeToAnnotationPostProcessor.java index f8238a2da8..9fc1646283 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/BridgeToAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/BridgeToAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -30,7 +30,6 @@ import org.springframework.core.ResolvableType; import org.springframework.core.annotation.MergedAnnotations; import org.springframework.integration.annotation.BridgeFrom; import org.springframework.integration.annotation.BridgeTo; -import org.springframework.integration.config.ConsumerEndpointFactoryBean; import org.springframework.integration.endpoint.AbstractEndpoint; import org.springframework.integration.handler.BridgeHandler; import org.springframework.integration.util.MessagingAnnotationUtils; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/FilterAnnotationPostProcessor.java similarity index 97% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/FilterAnnotationPostProcessor.java index f2006ac2bf..1f62e13632 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/FilterAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -28,7 +28,6 @@ import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.core.ResolvableType; import org.springframework.integration.annotation.Filter; -import org.springframework.integration.config.FilterFactoryBean; import org.springframework.integration.core.MessageSelector; import org.springframework.integration.filter.MessageFilter; import org.springframework.integration.filter.MethodInvokingSelector; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/InboundChannelAdapterAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/InboundChannelAdapterAnnotationPostProcessor.java similarity index 96% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/InboundChannelAdapterAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/InboundChannelAdapterAnnotationPostProcessor.java index 5dc0e16ebf..c2d8a742eb 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/InboundChannelAdapterAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/InboundChannelAdapterAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -31,8 +31,6 @@ import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.MergedAnnotations; import org.springframework.integration.annotation.InboundChannelAdapter; import org.springframework.integration.annotation.Poller; -import org.springframework.integration.config.IntegrationConfigUtils; -import org.springframework.integration.config.SourcePollingChannelAdapterFactoryBean; import org.springframework.integration.core.MessageSource; import org.springframework.integration.endpoint.MethodInvokingMessageSource; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; 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 d790b6773d..ee2b977659 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 @@ -22,7 +22,6 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.ApplicationContextException; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.type.AnnotationMetadata; -import org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor; import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/MessagingAnnotationPostProcessor.java similarity index 99% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/MessagingAnnotationPostProcessor.java index 7b8a3d4f2b..e25fb7c64b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/MessagingAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -60,6 +60,7 @@ import org.springframework.integration.annotation.Router; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.annotation.Splitter; import org.springframework.integration.annotation.Transformer; +import org.springframework.integration.config.annotation.MethodAnnotationPostProcessor; import org.springframework.integration.endpoint.AbstractEndpoint; import org.springframework.integration.util.MessagingAnnotationUtils; import org.springframework.util.Assert; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/RouterAnnotationPostProcessor.java similarity index 98% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/RouterAnnotationPostProcessor.java index 23eb8df0ef..3dc3f2e79f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/RouterAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -33,7 +33,6 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.core.ResolvableType; import org.springframework.core.convert.TypeDescriptor; import org.springframework.integration.annotation.Router; -import org.springframework.integration.config.RouterFactoryBean; import org.springframework.integration.router.AbstractMessageRouter; import org.springframework.integration.router.MethodInvokingRouter; import org.springframework.integration.util.MessagingAnnotationUtils; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessor.java similarity index 96% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessor.java index c7314446c9..a3bc86fd6d 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/ServiceActivatorAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -28,7 +28,6 @@ import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.core.ResolvableType; import org.springframework.integration.annotation.ServiceActivator; -import org.springframework.integration.config.ServiceActivatorFactoryBean; import org.springframework.integration.handler.AbstractReplyProducingMessageHandler; import org.springframework.integration.handler.ServiceActivatingHandler; import org.springframework.integration.util.MessagingAnnotationUtils; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/SplitterAnnotationPostProcessor.java similarity index 96% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/SplitterAnnotationPostProcessor.java index 8769ba5cba..21b3ec1d83 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/SplitterAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -28,7 +28,6 @@ import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.core.ResolvableType; import org.springframework.integration.annotation.Splitter; -import org.springframework.integration.config.SplitterFactoryBean; import org.springframework.integration.splitter.AbstractMessageSplitter; import org.springframework.integration.splitter.MethodInvokingSplitter; import org.springframework.integration.util.MessagingAnnotationUtils; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/TransformerAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/TransformerAnnotationPostProcessor.java similarity index 95% rename from spring-integration-core/src/main/java/org/springframework/integration/config/annotation/TransformerAnnotationPostProcessor.java rename to spring-integration-core/src/main/java/org/springframework/integration/config/TransformerAnnotationPostProcessor.java index c8f77e00da..e854e25b8f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/TransformerAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/TransformerAnnotationPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.config.annotation; +package org.springframework.integration.config; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -27,7 +27,6 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.core.ResolvableType; -import org.springframework.integration.config.TransformerFactoryBean; import org.springframework.integration.transformer.MessageTransformingHandler; import org.springframework.integration.transformer.MethodInvokingTransformer; import org.springframework.integration.transformer.Transformer; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/GenericHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/core/GenericHandler.java similarity index 91% rename from spring-integration-core/src/main/java/org/springframework/integration/handler/GenericHandler.java rename to spring-integration-core/src/main/java/org/springframework/integration/core/GenericHandler.java index 5cb9e90496..78ddf9550a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/GenericHandler.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/core/GenericHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 the original author or authors. + * Copyright 2016-2022 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.handler; +package org.springframework.integration.core; import org.springframework.messaging.MessageHeaders; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/GenericTransformer.java b/spring-integration-core/src/main/java/org/springframework/integration/core/GenericTransformer.java similarity index 88% rename from spring-integration-core/src/main/java/org/springframework/integration/transformer/GenericTransformer.java rename to spring-integration-core/src/main/java/org/springframework/integration/core/GenericTransformer.java index 380b7c2ba0..53b25a3893 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/GenericTransformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/core/GenericTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.transformer; +package org.springframework.integration.core; /** * Generic (lambda) strategy interface for transformer. diff --git a/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java b/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java index 0a8c49ff7d..9eb635003a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java @@ -43,7 +43,9 @@ import org.springframework.integration.channel.interceptor.WireTap; import org.springframework.integration.config.ConsumerEndpointFactoryBean; import org.springframework.integration.config.SourcePollingChannelAdapterFactoryBean; import org.springframework.integration.context.IntegrationContextUtils; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.core.GenericSelector; +import org.springframework.integration.core.GenericTransformer; import org.springframework.integration.core.MessageProducer; import org.springframework.integration.core.MessageSelector; import org.springframework.integration.dsl.support.FixedSubscriberChannelPrototype; @@ -58,7 +60,6 @@ import org.springframework.integration.handler.BeanNameMessageProcessor; import org.springframework.integration.handler.BridgeHandler; import org.springframework.integration.handler.DelayHandler; import org.springframework.integration.handler.ExpressionCommandMessageProcessor; -import org.springframework.integration.handler.GenericHandler; import org.springframework.integration.handler.LambdaMessageProcessor; import org.springframework.integration.handler.LoggingHandler; import org.springframework.integration.handler.MessageProcessor; @@ -79,7 +80,6 @@ import org.springframework.integration.support.MapBuilder; import org.springframework.integration.transformer.ClaimCheckInTransformer; import org.springframework.integration.transformer.ClaimCheckOutTransformer; import org.springframework.integration.transformer.ExpressionEvaluatingTransformer; -import org.springframework.integration.transformer.GenericTransformer; import org.springframework.integration.transformer.HeaderFilter; import org.springframework.integration.transformer.MessageTransformingHandler; import org.springframework.integration.transformer.MethodInvokingTransformer; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationFlowDefinition.java b/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationFlowDefinition.java index 346bc31c99..c1ab2e05a9 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationFlowDefinition.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationFlowDefinition.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2020 the original author or authors. + * Copyright 2016-2022 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,12 +19,12 @@ package org.springframework.integration.dsl; import java.util.function.Consumer; import java.util.function.Function; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.core.GenericSelector; -import org.springframework.integration.handler.GenericHandler; +import org.springframework.integration.core.GenericTransformer; import org.springframework.integration.handler.ServiceActivatingHandler; import org.springframework.integration.router.MethodInvokingRouter; import org.springframework.integration.splitter.MethodInvokingSplitter; -import org.springframework.integration.transformer.GenericTransformer; import org.springframework.integration.transformer.MessageTransformingHandler; /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java index ff74f83dba..beb2ac353a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java @@ -32,8 +32,9 @@ import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.core.MethodIntrospector; import org.springframework.core.log.LogMessage; import org.springframework.integration.context.IntegrationContextUtils; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.core.GenericSelector; -import org.springframework.integration.transformer.GenericTransformer; +import org.springframework.integration.core.GenericTransformer; import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/transformer/Transformer.java b/spring-integration-core/src/main/java/org/springframework/integration/transformer/Transformer.java index 2dd2408a71..58462aa988 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/transformer/Transformer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/transformer/Transformer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 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,6 +16,7 @@ package org.springframework.integration.transformer; +import org.springframework.integration.core.GenericTransformer; import org.springframework.messaging.Message; /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/ClassUtils.java b/spring-integration-core/src/main/java/org/springframework/integration/util/ClassUtils.java index bd65e25194..dfe48ab894 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/ClassUtils.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/util/ClassUtils.java @@ -60,12 +60,12 @@ public abstract class ClassUtils { public static final Method SELECTOR_ACCEPT_METHOD; /** - * The {@code org.springframework.integration.transformer.GenericTransformer#transform(Object)} method object. + * The {@code org.springframework.integration.core.GenericTransformer#transform(Object)} method object. */ public static final Method TRANSFORMER_TRANSFORM_METHOD; /** - * The {@code org.springframework.integration.handler.GenericHandler#handle(Object, Map)} method object. + * The {@code org.springframework.integration.core.GenericHandler#handle(Object, Map)} method object. */ public static final Method HANDLER_HANDLE_METHOD; @@ -117,7 +117,7 @@ public abstract class ClassUtils { try { genericTransformerClass = org.springframework.util.ClassUtils.forName( - "org.springframework.integration.transformer.GenericTransformer", defaultClassLoader); + "org.springframework.integration.core.GenericTransformer", defaultClassLoader); } catch (ClassNotFoundException e) { ReflectionUtils.rethrowRuntimeException(e); @@ -130,7 +130,7 @@ public abstract class ClassUtils { try { genericHandlerClass = org.springframework.util.ClassUtils.forName( - "org.springframework.integration.handler.GenericHandler", defaultClassLoader); + "org.springframework.integration.core.GenericHandler", defaultClassLoader); } catch (ClassNotFoundException e) { ReflectionUtils.rethrowRuntimeException(e); diff --git a/spring-integration-core/src/main/kotlin/org/springframework/integration/dsl/KotlinIntegrationFlowDefinition.kt b/spring-integration-core/src/main/kotlin/org/springframework/integration/dsl/KotlinIntegrationFlowDefinition.kt index f044296a87..517f837c9c 100644 --- a/spring-integration-core/src/main/kotlin/org/springframework/integration/dsl/KotlinIntegrationFlowDefinition.kt +++ b/spring-integration-core/src/main/kotlin/org/springframework/integration/dsl/KotlinIntegrationFlowDefinition.kt @@ -28,7 +28,7 @@ import org.springframework.integration.filter.MessageFilter import org.springframework.integration.filter.MethodInvokingSelector import org.springframework.integration.handler.BridgeHandler import org.springframework.integration.handler.DelayHandler -import org.springframework.integration.handler.GenericHandler +import org.springframework.integration.core.GenericHandler import org.springframework.integration.handler.LoggingHandler import org.springframework.integration.handler.MessageProcessor import org.springframework.integration.handler.MessageTriggerAction diff --git a/spring-integration-core/src/test/java/org/springframework/integration/bus/DirectChannelSubscriptionTests.java b/spring-integration-core/src/test/java/org/springframework/integration/bus/DirectChannelSubscriptionTests.java index b183b5e4c0..7cf2da06a4 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/bus/DirectChannelSubscriptionTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/bus/DirectChannelSubscriptionTests.java @@ -28,7 +28,7 @@ import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.QueueChannel; -import org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.endpoint.EventDrivenConsumer; import org.springframework.integration.handler.AbstractReplyProducingMessageHandler; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessorTests.java index 49c1459f2c..44e4509e68 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/ServiceActivatorAnnotationPostProcessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 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. @@ -21,13 +21,12 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; -import org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor; import org.springframework.integration.test.util.TestUtils; import org.springframework.integration.test.util.TestUtils.TestApplicationContext; import org.springframework.messaging.MessageChannel; @@ -42,32 +41,31 @@ public class ServiceActivatorAnnotationPostProcessorTests { @Test public void testAnnotatedMethod() throws InterruptedException { CountDownLatch latch = new CountDownLatch(1); - TestApplicationContext context = TestUtils.createTestApplicationContext(); - RootBeanDefinition postProcessorDef = new RootBeanDefinition(MessagingAnnotationPostProcessor.class); - context.registerBeanDefinition("postProcessor", postProcessorDef); - context.registerBeanDefinition("testChannel", new RootBeanDefinition(DirectChannel.class)); - RootBeanDefinition beanDefinition = new RootBeanDefinition(SimpleServiceActivatorAnnotationTestBean.class); - beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(latch); - context.registerBeanDefinition("testBean", beanDefinition); - context.refresh(); - SimpleServiceActivatorAnnotationTestBean testBean = - context.getBean("testBean", SimpleServiceActivatorAnnotationTestBean.class); - assertThat(latch.getCount()).isEqualTo(1); - assertThat(testBean.getMessageText()).isNull(); - MessageChannel testChannel = (MessageChannel) context.getBean("testChannel"); - testChannel.send(new GenericMessage<>("test-123")); - latch.await(1000, TimeUnit.MILLISECONDS); - assertThat(latch.getCount()).isEqualTo(0); - assertThat(testBean.getMessageText()).isEqualTo("test-123"); - context.close(); + try (TestApplicationContext context = TestUtils.createTestApplicationContext()) { + RootBeanDefinition postProcessorDef = new RootBeanDefinition(MessagingAnnotationPostProcessor.class); + context.registerBeanDefinition("postProcessor", postProcessorDef); + context.registerBeanDefinition("testChannel", new RootBeanDefinition(DirectChannel.class)); + RootBeanDefinition beanDefinition = new RootBeanDefinition(SimpleServiceActivatorAnnotationTestBean.class); + beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(latch); + context.registerBeanDefinition("testBean", beanDefinition); + context.refresh(); + SimpleServiceActivatorAnnotationTestBean testBean = + context.getBean("testBean", SimpleServiceActivatorAnnotationTestBean.class); + assertThat(latch.getCount()).isEqualTo(1); + assertThat(testBean.getMessageText()).isNull(); + MessageChannel testChannel = (MessageChannel) context.getBean("testChannel"); + testChannel.send(new GenericMessage<>("test-123")); + assertThat(latch.await(1000, TimeUnit.MILLISECONDS)).isTrue(); + assertThat(testBean.getMessageText()).isEqualTo("test-123"); + } } public static class AbstractServiceActivatorAnnotationTestBean { - protected String messageText; + private final CountDownLatch latch; - private CountDownLatch latch; + protected String messageText; public AbstractServiceActivatorAnnotationTestBean(CountDownLatch latch) { this.latch = latch; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/CustomMessagingAnnotationTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/CustomMessagingAnnotationTests.java index 12c34ed446..6338ef8cca 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/CustomMessagingAnnotationTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/CustomMessagingAnnotationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2017-2020 the original author or authors. + * Copyright 2017-2022 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. @@ -43,7 +43,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.log.LogAccessor; +import org.springframework.integration.config.AbstractMethodAnnotationPostProcessor; import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.expression.FunctionExpression; import org.springframework.integration.handler.LoggingHandler; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessorTests.java index 41e9caa0e4..45150a0cc8 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/FilterAnnotationPostProcessorTests.java @@ -31,6 +31,7 @@ import org.springframework.integration.annotation.Filter; import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.endpoint.EventDrivenConsumer; import org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice; import org.springframework.integration.test.util.TestUtils; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java index eb68bc6d81..b730e522ad 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/MessagingAnnotationPostProcessorTests.java @@ -38,6 +38,7 @@ import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.annotation.Transformer; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.endpoint.AbstractEndpoint; import org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice; import org.springframework.integration.support.MessageBuilder; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessorTests.java index 200bc5a7b7..5ff98a78ec 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/RouterAnnotationPostProcessorTests.java @@ -30,6 +30,7 @@ import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.annotation.Router; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.test.util.TestUtils; import org.springframework.integration.test.util.TestUtils.TestApplicationContext; import org.springframework.messaging.Message; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessorTests.java index 55817f3cfd..0946e178fa 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SplitterAnnotationPostProcessorTests.java @@ -28,6 +28,7 @@ import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.annotation.Splitter; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.QueueChannel; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.endpoint.AbstractEndpoint; import org.springframework.integration.test.util.TestUtils; import org.springframework.integration.test.util.TestUtils.TestApplicationContext; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SubscriberOrderTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SubscriberOrderTests.java index e3915e010f..b571932289 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SubscriberOrderTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/annotation/SubscriberOrderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 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. @@ -21,7 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.RootBeanDefinition; @@ -31,6 +31,7 @@ import org.springframework.integration.MessageRejectedException; import org.springframework.integration.annotation.MessageEndpoint; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.MessagingAnnotationPostProcessor; import org.springframework.integration.dispatcher.RoundRobinLoadBalancingStrategy; import org.springframework.integration.test.util.TestUtils; import org.springframework.messaging.Message; @@ -45,99 +46,103 @@ public class SubscriberOrderTests { @Test public void directChannelAndFailoverDispatcherWithSingleCallPerMethod() { - GenericApplicationContext context = TestUtils.createTestApplicationContext(); - context.registerBeanDefinition("postProcessor", new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); - RootBeanDefinition channelDefinition = new RootBeanDefinition(DirectChannel.class); - context.registerBeanDefinition("input", channelDefinition); - RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); - testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(1); - context.registerBeanDefinition("testBean", testBeanDefinition); - context.refresh(); - TestBean testBean = (TestBean) context.getBean("testBean"); - MessageChannel channel = (MessageChannel) context.getBean("input"); - channel.send(new GenericMessage("test-1")); - channel.send(new GenericMessage("test-2")); - channel.send(new GenericMessage("test-3")); - channel.send(new GenericMessage("test-4")); - channel.send(new GenericMessage("test-5")); - List calls = testBean.calls; - assertThat(calls.size()).isEqualTo(5); - assertThat(calls.get(0).intValue()).isEqualTo(1); - assertThat(calls.get(1).intValue()).isEqualTo(2); - assertThat(calls.get(2).intValue()).isEqualTo(3); - assertThat(calls.get(3).intValue()).isEqualTo(4); - assertThat(calls.get(4).intValue()).isEqualTo(5); - context.close(); + try (GenericApplicationContext context = TestUtils.createTestApplicationContext()) { + context.registerBeanDefinition("postProcessor", + new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); + RootBeanDefinition channelDefinition = new RootBeanDefinition(DirectChannel.class); + context.registerBeanDefinition("input", channelDefinition); + RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); + testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(1); + context.registerBeanDefinition("testBean", testBeanDefinition); + context.refresh(); + TestBean testBean = (TestBean) context.getBean("testBean"); + MessageChannel channel = (MessageChannel) context.getBean("input"); + channel.send(new GenericMessage<>("test-1")); + channel.send(new GenericMessage<>("test-2")); + channel.send(new GenericMessage<>("test-3")); + channel.send(new GenericMessage<>("test-4")); + channel.send(new GenericMessage<>("test-5")); + List calls = testBean.calls; + assertThat(calls.size()).isEqualTo(5); + assertThat(calls.get(0).intValue()).isEqualTo(1); + assertThat(calls.get(1).intValue()).isEqualTo(2); + assertThat(calls.get(2).intValue()).isEqualTo(3); + assertThat(calls.get(3).intValue()).isEqualTo(4); + assertThat(calls.get(4).intValue()).isEqualTo(5); + } } @Test public void directChannelAndFailoverDispatcherWithMultipleCallsPerMethod() { - GenericApplicationContext context = TestUtils.createTestApplicationContext(); - context.registerBeanDefinition("postProcessor", new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); - BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.rootBeanDefinition(DirectChannel.class); - channelBuilder.addConstructorArgValue(null); - RootBeanDefinition channelDefinition = (RootBeanDefinition) channelBuilder.getBeanDefinition(); - context.registerBeanDefinition("input", channelDefinition); - RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); - testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(2); - context.registerBeanDefinition("testBean", testBeanDefinition); - context.refresh(); - TestBean testBean = (TestBean) context.getBean("testBean"); - MessageChannel channel = (MessageChannel) context.getBean("input"); - channel.send(new GenericMessage("test-1")); - channel.send(new GenericMessage("test-2")); - channel.send(new GenericMessage("test-3")); - channel.send(new GenericMessage("test-4")); - channel.send(new GenericMessage("test-5")); - channel.send(new GenericMessage("test-6")); - channel.send(new GenericMessage("test-7")); - channel.send(new GenericMessage("test-8")); - channel.send(new GenericMessage("test-9")); - channel.send(new GenericMessage("test-10")); - assertThat(testBean.calls.size()).isEqualTo(10); - assertThat(testBean.calls.get(0).intValue()).isEqualTo(1); - assertThat(testBean.calls.get(1).intValue()).isEqualTo(1); - assertThat(testBean.calls.get(2).intValue()).isEqualTo(2); - assertThat(testBean.calls.get(3).intValue()).isEqualTo(2); - assertThat(testBean.calls.get(4).intValue()).isEqualTo(3); - assertThat(testBean.calls.get(5).intValue()).isEqualTo(3); - assertThat(testBean.calls.get(6).intValue()).isEqualTo(4); - assertThat(testBean.calls.get(7).intValue()).isEqualTo(4); - assertThat(testBean.calls.get(8).intValue()).isEqualTo(5); - assertThat(testBean.calls.get(9).intValue()).isEqualTo(5); - testBean.reset(); - channel.send(new GenericMessage("test-11")); - assertThat(testBean.calls.size()).isEqualTo(1); - assertThat(testBean.calls.get(0).intValue()).isEqualTo(1); - context.close(); + try (GenericApplicationContext context = TestUtils.createTestApplicationContext()) { + context.registerBeanDefinition("postProcessor", + new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); + BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.rootBeanDefinition(DirectChannel.class); + channelBuilder.addConstructorArgValue(null); + RootBeanDefinition channelDefinition = (RootBeanDefinition) channelBuilder.getBeanDefinition(); + context.registerBeanDefinition("input", channelDefinition); + RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); + testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(2); + context.registerBeanDefinition("testBean", testBeanDefinition); + context.refresh(); + TestBean testBean = (TestBean) context.getBean("testBean"); + MessageChannel channel = (MessageChannel) context.getBean("input"); + channel.send(new GenericMessage<>("test-1")); + channel.send(new GenericMessage<>("test-2")); + channel.send(new GenericMessage<>("test-3")); + channel.send(new GenericMessage<>("test-4")); + channel.send(new GenericMessage<>("test-5")); + channel.send(new GenericMessage<>("test-6")); + channel.send(new GenericMessage<>("test-7")); + channel.send(new GenericMessage<>("test-8")); + channel.send(new GenericMessage<>("test-9")); + channel.send(new GenericMessage<>("test-10")); + assertThat(testBean.calls.size()).isEqualTo(10); + assertThat(testBean.calls.get(0).intValue()).isEqualTo(1); + assertThat(testBean.calls.get(1).intValue()).isEqualTo(1); + assertThat(testBean.calls.get(2).intValue()).isEqualTo(2); + assertThat(testBean.calls.get(3).intValue()).isEqualTo(2); + assertThat(testBean.calls.get(4).intValue()).isEqualTo(3); + assertThat(testBean.calls.get(5).intValue()).isEqualTo(3); + assertThat(testBean.calls.get(6).intValue()).isEqualTo(4); + assertThat(testBean.calls.get(7).intValue()).isEqualTo(4); + assertThat(testBean.calls.get(8).intValue()).isEqualTo(5); + assertThat(testBean.calls.get(9).intValue()).isEqualTo(5); + testBean.reset(); + channel.send(new GenericMessage<>("test-11")); + assertThat(testBean.calls.size()).isEqualTo(1); + assertThat(testBean.calls.get(0).intValue()).isEqualTo(1); + } } @Test public void directChannelAndRoundRobinDispatcher() { - GenericApplicationContext context = TestUtils.createTestApplicationContext(); - context.registerBeanDefinition("postProcessor", new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); - RootBeanDefinition channelDefinition = new RootBeanDefinition(DirectChannel.class); - channelDefinition.getConstructorArgumentValues().addGenericArgumentValue(new RoundRobinLoadBalancingStrategy()); - context.registerBeanDefinition("input", channelDefinition); - RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); - testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(1000); - context.registerBeanDefinition("testBean", testBeanDefinition); - context.refresh(); - TestBean testBean = (TestBean) context.getBean("testBean"); - MessageChannel channel = (MessageChannel) context.getBean("input"); - channel.send(new GenericMessage("test-1")); - channel.send(new GenericMessage("test-2")); - channel.send(new GenericMessage("test-3")); - channel.send(new GenericMessage("test-4")); - channel.send(new GenericMessage("test-5")); - List calls = testBean.calls; - assertThat(calls.size()).isEqualTo(5); - assertThat(calls.get(0).intValue()).isEqualTo(1); - assertThat(calls.get(1).intValue()).isEqualTo(2); - assertThat(calls.get(2).intValue()).isEqualTo(3); - assertThat(calls.get(3).intValue()).isEqualTo(4); - assertThat(calls.get(4).intValue()).isEqualTo(5); - context.close(); + try (GenericApplicationContext context = TestUtils.createTestApplicationContext()) { + context.registerBeanDefinition("postProcessor", + new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); + RootBeanDefinition channelDefinition = new RootBeanDefinition(DirectChannel.class); + channelDefinition.getConstructorArgumentValues() + .addGenericArgumentValue(new RoundRobinLoadBalancingStrategy()); + context.registerBeanDefinition("input", channelDefinition); + RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); + testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(1000); + context.registerBeanDefinition("testBean", testBeanDefinition); + context.refresh(); + TestBean testBean = (TestBean) context.getBean("testBean"); + MessageChannel channel = (MessageChannel) context.getBean("input"); + channel.send(new GenericMessage<>("test-1")); + channel.send(new GenericMessage<>("test-2")); + channel.send(new GenericMessage<>("test-3")); + channel.send(new GenericMessage<>("test-4")); + channel.send(new GenericMessage<>("test-5")); + List calls = testBean.calls; + assertThat(calls.size()).isEqualTo(5); + assertThat(calls.get(0).intValue()).isEqualTo(1); + assertThat(calls.get(1).intValue()).isEqualTo(2); + assertThat(calls.get(2).intValue()).isEqualTo(3); + assertThat(calls.get(3).intValue()).isEqualTo(4); + assertThat(calls.get(4).intValue()).isEqualTo(5); + } } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/dsl/LambdaMessageProcessorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/dsl/LambdaMessageProcessorTests.java index 55d4783255..6c5e7f287b 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/dsl/LambdaMessageProcessorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/dsl/LambdaMessageProcessorTests.java @@ -32,10 +32,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import org.springframework.integration.config.EnableIntegration; import org.springframework.integration.config.IntegrationConverter; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.core.GenericSelector; -import org.springframework.integration.handler.GenericHandler; +import org.springframework.integration.core.GenericTransformer; import org.springframework.integration.handler.LambdaMessageProcessor; -import org.springframework.integration.transformer.GenericTransformer; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/dsl/flows/IntegrationFlowTests.java b/spring-integration-core/src/test/java/org/springframework/integration/dsl/flows/IntegrationFlowTests.java index 6d2580f420..fd924b8c24 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/dsl/flows/IntegrationFlowTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/dsl/flows/IntegrationFlowTests.java @@ -59,6 +59,7 @@ import org.springframework.integration.channel.NullChannel; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; import org.springframework.integration.context.IntegrationContextUtils; +import org.springframework.integration.core.GenericTransformer; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.dsl.MessageChannels; import org.springframework.integration.dsl.Pollers; @@ -77,7 +78,6 @@ import org.springframework.integration.store.MessageStore; import org.springframework.integration.store.SimpleMessageStore; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.support.MutableMessageBuilder; -import org.springframework.integration.transformer.GenericTransformer; import org.springframework.integration.transformer.PayloadSerializingTransformer; import org.springframework.integration.util.NoBeansOverrideAnnotationConfigContextLoader; import org.springframework.messaging.Message; @@ -602,7 +602,7 @@ public class IntegrationFlowTests { @Bean public IntegrationFlow supplierFlow2() { return IntegrationFlow.fromSupplier(() -> "foo", - c -> c.poller(Pollers.fixedDelay(100).maxMessagesPerPoll(1))) + c -> c.poller(Pollers.fixedDelay(100).maxMessagesPerPoll(1))) .transform(String::toUpperCase) .channel("suppliedChannel2") .get(); @@ -948,7 +948,7 @@ public class IntegrationFlowTests { @Bean public IntegrationFlow globalErrorChannelResolutionFlow(@Qualifier("taskScheduler") TaskExecutor taskExecutor) { return IntegrationFlow.from(Consumer.class, - (gateway) -> gateway.beanName("globalErrorChannelResolutionFunction")) + (gateway) -> gateway.beanName("globalErrorChannelResolutionFunction")) .channel(c -> c.executor(taskExecutor)) .handle((p, h) -> { throw new RuntimeException("intentional"); @@ -1047,4 +1047,3 @@ public class IntegrationFlowTests { } } - diff --git a/spring-integration-core/src/test/java/org/springframework/integration/handler/support/MessagingMethodInvocableHelperTests.java b/spring-integration-core/src/test/java/org/springframework/integration/handler/support/MessagingMethodInvocableHelperTests.java index 58741a9a32..51011acc73 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/handler/support/MessagingMethodInvocableHelperTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/handler/support/MessagingMethodInvocableHelperTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2019 the original author or authors. + * Copyright 2019-2022 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,8 +28,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.dsl.IntegrationFlow; -import org.springframework.integration.handler.GenericHandler; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.support.GenericMessage; @@ -79,6 +79,7 @@ public class MessagingMethodInvocableHelperTests { public String handle(Map mapPayload, MessageHeaders messageHeaders) { return "Hello " + mapPayload.get("key"); } + } public static class StringHandler implements GenericHandler { @@ -87,6 +88,7 @@ public class MessagingMethodInvocableHelperTests { public String handle(String stringPayload, MessageHeaders messageHeaders) { return stringPayload + " World!"; } + } } diff --git a/spring-integration-event/src/test/java/org/springframework/integration/event/dsl/IntegrationFlowEventsTests.java b/spring-integration-event/src/test/java/org/springframework/integration/event/dsl/IntegrationFlowEventsTests.java index c7dc197c01..d92b123554 100644 --- a/spring-integration-event/src/test/java/org/springframework/integration/event/dsl/IntegrationFlowEventsTests.java +++ b/spring-integration-event/src/test/java/org/springframework/integration/event/dsl/IntegrationFlowEventsTests.java @@ -20,9 +20,8 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.concurrent.atomic.AtomicReference; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -33,12 +32,12 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.core.GenericHandler; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.dsl.MessageChannels; import org.springframework.integration.event.core.MessagingEvent; import org.springframework.integration.event.inbound.ApplicationEventListeningMessageProducer; import org.springframework.integration.event.outbound.ApplicationEventPublishingMessageHandler; -import org.springframework.integration.handler.GenericHandler; import org.springframework.integration.store.MessageGroupStore; import org.springframework.integration.store.SimpleMessageStore; import org.springframework.messaging.Message; @@ -47,22 +46,22 @@ import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.PollableChannel; import org.springframework.messaging.support.GenericMessage; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; /** * @author Artem Bilan * * @since 5.0 */ -@RunWith(SpringRunner.class) +@SpringJUnitConfig @DirtiesContext public class IntegrationFlowEventsTests { - private static MessageGroupStore messageGroupStore = new SimpleMessageStore(); + private static final MessageGroupStore messageGroupStore = new SimpleMessageStore(); - private static String GROUP_ID = "testGroup"; + private static final String GROUP_ID = "testGroup"; - @BeforeClass + @BeforeAll public static void setup() { messageGroupStore.addMessageToGroup(GROUP_ID, new GenericMessage<>("foo")); } diff --git a/src/reference/asciidoc/changes-5.0-5.1.adoc b/src/reference/asciidoc/changes-5.0-5.1.adoc index b630a5b848..a016a9d759 100644 --- a/src/reference/asciidoc/changes-5.0-5.1.adoc +++ b/src/reference/asciidoc/changes-5.0-5.1.adoc @@ -50,7 +50,7 @@ The following changes have been made in version 5.1: The `IntegrationFlowContext` is now an interface and `IntegrationFlowRegistration` is an inner interface of `IntegrationFlowContext`. A new `logAndReply()` operator has been introduced for convenience when you wish to log at the end of a flow for request-reply configurations. -This avoid confusion with `log()` which is treated as a one-way end flow component. +This avoids confusion with `log()` which is treated as a one-way end flow component. A generated bean name for any `NamedComponent` within an integration flow is now based on the component type for better readability from visual tools, logs analyzers and metrics collectors. diff --git a/src/reference/asciidoc/dsl.adoc b/src/reference/asciidoc/dsl.adoc index cc5ea01aec..6a50748ece 100644 --- a/src/reference/asciidoc/dsl.adoc +++ b/src/reference/asciidoc/dsl.adoc @@ -91,7 +91,7 @@ public IntegrationFlow integerFlow() { ==== The `transform` method accepts a lambda as an endpoint argument to operate on the message payload. -The real argument of this method is `GenericTransformer`. +The real argument of this method is a `GenericTransformer` instance. Consequently, any of the provided transformers (`ObjectToJsonTransformer`, `FileToStringTransformer`, and other) can be used here. Under the covers, `IntegrationFlowBuilder` recognizes the `MessageHandler` and the endpoint for it, with `MessageTransformingHandler` and `ConsumerEndpointFactoryBean`, respectively. @@ -1300,7 +1300,7 @@ With Java 8, you can even create an integration gateway with the `java.util.func @Bean public IntegrationFlow errorRecovererFlow() { return IntegrationFlow.from(Function.class, (gateway) -> gateway.beanName("errorRecovererFunction")) - .handle((GenericHandler) (p, h) -> { + .handle((p, h) -> { throw new RuntimeException("intentional"); }, e -> e.advice(retryAdvice())) .get(); @@ -1432,4 +1432,4 @@ IntegrationFlow otherFlow() { The composition in the middle of the flow is simply achievable with an existing `gateway(IntegrationFlow)` EIP-method. This way we can build flows with any complexity by composing them from simpler, reusable logical blocks. -For example, you may add a library of `IntegrationFlow` beans as a dependency and it is just enough to have their configuration classes imported to the final project and autowired for your `IntegrationFlow` definitions. \ No newline at end of file +For example, you may add a library of `IntegrationFlow` beans as a dependency and it is just enough to have their configuration classes imported to the final project and autowired for your `IntegrationFlow` definitions. diff --git a/src/reference/asciidoc/handler-advice.adoc b/src/reference/asciidoc/handler-advice.adoc index b24e2b377c..9bbab137be 100644 --- a/src/reference/asciidoc/handler-advice.adoc +++ b/src/reference/asciidoc/handler-advice.adoc @@ -433,7 +433,7 @@ public class EerhaApplication { @Bean public IntegrationFlow advised() { - return f -> f.handle((GenericHandler) (payload, headers) -> { + return f -> f.handle((payload, headers) -> { if (payload.equals("good")) { return null; }