@@ -538,12 +538,18 @@ public B controlBus(@Nullable Consumer<GenericEndpointSpec<ServiceActivatingHand
538538 /**
539539 * Populate the {@code Transformer} EI Pattern specific {@link MessageHandler} implementation
540540 * for the SpEL {@link Expression}.
541+ * Shortcut for:
542+ * <pre class="code">
543+ * {@code
544+ * .transformWith((transformerSpec) -> transformerSpec.expression(expression))
545+ * }
546+ * </pre>
541547 * @param expression the {@code Transformer} {@link Expression}.
542548 * @return the current {@link BaseIntegrationFlowDefinition}.
543549 * @see ExpressionEvaluatingTransformer
544550 */
545551 public B transform (String expression ) {
546- return transform ( expression , ( Consumer < GenericEndpointSpec < MessageTransformingHandler >>) null );
552+ return transformWith (( transformerSpec ) -> transformerSpec . expression ( expression ) );
547553 }
548554
549555 /**
@@ -552,8 +558,10 @@ public B transform(String expression) {
552558 * @param expression the {@code Transformer} {@link Expression}.
553559 * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options.
554560 * @return the current {@link BaseIntegrationFlowDefinition}.
561+ * @deprecated since 6.2 in favor of {@link #transformWith(Consumer)}.
555562 * @see ExpressionEvaluatingTransformer
556563 */
564+ @ Deprecated (since = "6.2" , forRemoval = true )
557565 public B transform (String expression ,
558566 @ Nullable Consumer <GenericEndpointSpec <MessageTransformingHandler >> endpointConfigurer ) {
559567
@@ -566,9 +574,15 @@ public B transform(String expression,
566574 /**
567575 * Populate the {@code MessageTransformingHandler} for the {@link MethodInvokingTransformer}
568576 * to invoke the discovered service method at runtime.
577+ * Shortcut for:
578+ * <pre class="code">
579+ * {@code
580+ * .transformWith((transformerSpec) -> transformerSpec.ref(service))
581+ * }
582+ * </pre>
569583 * @param service the service to use.
570584 * @return the current {@link BaseIntegrationFlowDefinition}.
571- * @see ExpressionEvaluatingTransformer
585+ * @see MethodInvokingTransformer
572586 */
573587 public B transform (Object service ) {
574588 return transform (service , null );
@@ -577,13 +591,36 @@ public B transform(Object service) {
577591 /**
578592 * Populate the {@code MessageTransformingHandler} for the {@link MethodInvokingTransformer}
579593 * to invoke the service method at runtime.
594+ * <pre class="code">
595+ * {@code
596+ * .transformWith((transformerSpec) -> transformerSpec.ref(service).method(methodName))
597+ * }
598+ * </pre>
580599 * @param service the service to use.
581600 * @param methodName the method to invoke.
582601 * @return the current {@link BaseIntegrationFlowDefinition}.
583602 * @see MethodInvokingTransformer
584603 */
585604 public B transform (Object service , @ Nullable String methodName ) {
586- return transform (service , methodName , null );
605+ return transformWith ((transformerSpec ) -> transformerSpec .ref (service ).method (methodName ));
606+ }
607+
608+ /**
609+ * Populate the {@code MessageTransformingHandler} for the {@link MethodInvokingTransformer}
610+ * to invoke the bean method at runtime.
611+ * <pre class="code">
612+ * {@code
613+ * .transformWith((transformerSpec) -> transformerSpec.refName(beanName).method(methodName))
614+ * }
615+ * </pre>
616+ * @param beanName the name for bean to resolve lazily.
617+ * @param methodName the method to invoke.
618+ * @return the current {@link BaseIntegrationFlowDefinition}.
619+ * @since 6.2
620+ * @see MethodInvokingTransformer
621+ */
622+ public B transform (String beanName , @ Nullable String methodName ) {
623+ return transformWith ((transformerSpec ) -> transformerSpec .refName (beanName ).method (methodName ));
587624 }
588625
589626 /**
@@ -593,8 +630,10 @@ public B transform(Object service, @Nullable String methodName) {
593630 * @param methodName the method to invoke.
594631 * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options.
595632 * @return the current {@link BaseIntegrationFlowDefinition}.
596- * @see ExpressionEvaluatingTransformer
633+ * @deprecated since 6.2 in favor of {@link #transformWith(Consumer)}.
634+ * @see MethodInvokingTransformer
597635 */
636+ @ Deprecated (since = "6.2" , forRemoval = true )
598637 public B transform (Object service , @ Nullable String methodName ,
599638 @ Nullable Consumer <GenericEndpointSpec <MessageTransformingHandler >> endpointConfigurer ) {
600639
@@ -617,12 +656,18 @@ public B transform(Object service, @Nullable String methodName,
617656 * .transform(Scripts.script("classpath:myScript.py").variable("foo", bar()))
618657 * }
619658 * </pre>
659+ * Shortcut for:
660+ * <pre class="code">
661+ * {@code
662+ * .transformWith((transformerSpec) -> transformerSpec.processor(messageProcessorSpec))
663+ * }
664+ * </pre>
620665 * @param messageProcessorSpec the {@link MessageProcessorSpec} to use.
621666 * @return the current {@link BaseIntegrationFlowDefinition}.
622667 * @see MethodInvokingTransformer
623668 */
624669 public B transform (MessageProcessorSpec <?> messageProcessorSpec ) {
625- return transform ( messageProcessorSpec , ( Consumer < GenericEndpointSpec < MessageTransformingHandler >>) null );
670+ return transformWith (( transformerSpec ) -> transformerSpec . processor ( messageProcessorSpec ) );
626671 }
627672
628673 /**
@@ -638,8 +683,10 @@ public B transform(MessageProcessorSpec<?> messageProcessorSpec) {
638683 * @param messageProcessorSpec the {@link MessageProcessorSpec} to use.
639684 * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options.
640685 * @return the current {@link BaseIntegrationFlowDefinition}.
686+ * @deprecated since 6.2 in favor of {@link #transformWith(Consumer)}.
641687 * @see MethodInvokingTransformer
642688 */
689+ @ Deprecated (since = "6.2" , forRemoval = true )
643690 public B transform (MessageProcessorSpec <?> messageProcessorSpec ,
644691 @ Nullable Consumer <GenericEndpointSpec <MessageTransformingHandler >> endpointConfigurer ) {
645692
@@ -679,7 +726,8 @@ public <P> B convert(Class<P> payloadType) {
679726 * @see LambdaMessageProcessor
680727 */
681728 public <P , T > B transform (@ Nullable Class <P > expectedType , GenericTransformer <P , T > genericTransformer ) {
682- return transform (expectedType , genericTransformer , null );
729+ return transformWith ((transformerSpec ) ->
730+ transformerSpec .transformer (genericTransformer ).expectedType (expectedType ));
683731 }
684732
685733 /**
@@ -714,10 +762,12 @@ public <P> B convert(Class<P> payloadType,
714762 * @param <P> the payload type - 'transform from', or {@code Message.class}.
715763 * @param <T> the target type - 'transform to'.
716764 * @return the current {@link BaseIntegrationFlowDefinition}.
765+ * @deprecated since 6.2 in favor of {@link #transformWith(Consumer)}
717766 * @see MethodInvokingTransformer
718767 * @see LambdaMessageProcessor
719768 * @see GenericEndpointSpec
720769 */
770+ @ Deprecated (since = "6.2" , forRemoval = true )
721771 public <P , T > B transform (@ Nullable Class <P > expectedType , GenericTransformer <P , T > genericTransformer ,
722772 @ Nullable Consumer <GenericEndpointSpec <MessageTransformingHandler >> endpointConfigurer ) {
723773
@@ -730,6 +780,18 @@ public <P, T> B transform(@Nullable Class<P> expectedType, GenericTransformer<P,
730780 .handle (new MessageTransformingHandler (transformer ), endpointConfigurer );
731781 }
732782
783+ /**
784+ * Populate a {@link MessageTransformingHandler} into the endpoint with provided {@link TransformerSpec} options.
785+ * One of the 'expression', 'ref', 'refName', 'processor' or 'function' must be provided.
786+ * @param <P> the payload type - 'transform from', or {@code Message.class}.
787+ * @param <T> the target type - 'transform to'.
788+ * @return the current {@link BaseIntegrationFlowDefinition}.
789+ * @since 6.2
790+ */
791+ public B transformWith (Consumer <TransformerSpec > transformerConfigurer ) {
792+ return register (new TransformerSpec (), transformerConfigurer );
793+ }
794+
733795 /**
734796 * Populate a {@link MessageFilter} with {@link MessageSelector} for the provided SpEL expression.
735797 * @param expression the SpEL expression.
@@ -2787,7 +2849,7 @@ protected <T> Publisher<Message<T>> toReactivePublisher(boolean autoStartOnSubsc
27872849 }
27882850
27892851 protected <S extends ConsumerEndpointSpec <? super S , ? extends MessageHandler >> B register (S endpointSpec ,
2790- @ Nullable Consumer <S > endpointConfigurer ) {
2852+ @ Nullable Consumer <? super S > endpointConfigurer ) {
27912853
27922854 if (endpointConfigurer != null ) {
27932855 endpointConfigurer .accept (endpointSpec );
0 commit comments