GH-3648: Fix @Gateway.payloadExpression
Resolves https://github.com/spring-projects/spring-integration/issues/3648 When configuring a gateway proxy with XML, but specifying the payload expression on the method `@Gateway` annotation, the expression was ignored, even though it had been parsed. `@Payload` worked. With this change, if both `@Payload` and `@Gateway` are defined on a gateway method, `@Gateway.payloadExpression` wins. * Fix doc links.
This commit is contained in:
@@ -155,6 +155,10 @@ The following example shows how to add a different message header for each of tw
|
||||
|
||||
In the preceding example a different value is set for the 'RESPONSE_TYPE' header, based on the gateway's method.
|
||||
|
||||
IMPORTANT: If you specify, for example, the `requestChannel` in `<int:method/>` as well as in a `@Gateway` annotation, the annotation value wins.
|
||||
|
||||
NOTE: If a no-argument gateway is specified in XML, and the interface method has both a `@Payload` and `@Gateway` annotation (with a `payloadExpression` or a `payload-expression` in an `<int:method/>` element), the `@Payload` value is ignored.
|
||||
|
||||
===== Expressions and "`Global`" Headers
|
||||
|
||||
The `<header/>` element supports `expression` as an alternative to `value`.
|
||||
@@ -352,6 +356,22 @@ public interface Cafe {
|
||||
}
|
||||
----
|
||||
|
||||
You can also use the `@Gateway` annotation.
|
||||
|
||||
[source,xml]
|
||||
----
|
||||
public interface Cafe {
|
||||
|
||||
@Gateway(payloadExpression = "new java.util.Date()")
|
||||
List<Order> retrieveOpenOrders();
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: If both annotations are present (and the `payloadExpression` is provided), `@Gateway` wins.
|
||||
|
||||
Also see <<gateway-configuration-annotations>>.
|
||||
|
||||
If a method has no argument and no return value but does contain a payload expression, it is treated as a send-only operation.
|
||||
|
||||
[[gateway-calling-default-methods]]
|
||||
|
||||
@@ -113,3 +113,10 @@ See <<./web-sockets.adoc#web-sockets,WebSockets Support>> for more information.
|
||||
The `JpaOutboundGateway` now supports an `Iterable` message payload for a `PersistMode.DELETE`.
|
||||
|
||||
See <<./jpa.adoc#jpa-outbound-channel-adapter,Outbound Channel Adapter>> for more information.
|
||||
|
||||
[[x55-gw]]
|
||||
==== Gateway Changes
|
||||
|
||||
Previously, when using XML configuration, `@Gateway.payloadExpression` was ignored for no-argument methods.
|
||||
There is one possible breaking change - if the method is annotated with `@Payload` as well as `@Gateway` (with a different expression) previously, the `@Payload` would be applied, now the `@Gateway.payloadExpression` is applied.
|
||||
See <<./gateway.adoc#gateway-configuration-annotations,Gateway Configuration with Annotations and XML>> and <<./gateway.adoc#gateway-calling-no-argument-methods,Invoking No-Argument Methods>> for more information.
|
||||
|
||||
Reference in New Issue
Block a user