2017-10-11 1 views
0

J'ai des problèmes pour convertir un paramètre de requête au format CSV en java.util.Set dans ma passerelle entrante Spring Integration. Ma passerelle sortante ajoute le paramètre .Conversion du paramètre de requête en Set

Ma passerelle entrante lit le paramètre entier en tant qu'élément unique dans un ensemble comme ["ID_1, ID_2"].

J'ai créé ma propre méthode d'aide statique pour convertir la chaîne en ensemble mais je me demande s'il existe un moyen de faire la conversion implicitement dans Spring Integration?

Merci pour votre aide!

Mon code est ci-dessous.

passerelle sortante:

<int-http:outbound-gateway 
url="MY_URL?ids={ids}&amp;foo={foo}" 
request-channel="myChannel" 
http-method="GET" 
message-converters="myConverter" 
header-mapper="myMapper" 
expected-response-type="MyDto"> 
    <int-http:uri-variable name="ids" expression="payload"/> 
    <int-http:uri-variable name="foo" expression="headers.foo"/> 
</int-http:outbound-gateway> 

Passerelle entrante:

<int:service-activator 
input-channel="myChannel" 
expression="@'myService'.getStuff(payload.ids, headers.foo)"/> 

<int-http:inbound-gateway 
id="myGateway" 
request-channel="myChannel" 
path="MY_URL" 
message-converters="myConverter" 
header-mapper="myMapper" 
supported-methods="GET"> 
    <int-http:header name="foo" expression="#requestParams.foo"/> 
</int-http:inbound-gateway> 

EDIT

Cela ressemble à cela résoudra mon problème: https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/messaging-endpoints-chapter.html#payload-type-conversion

Répondre

0

Tenir compte utiliser org.springframework.util.StringUtils.commaDelimitedListToSet():

/** 
* Convert a comma delimited list (e.g., a row from a CSV file) into a set. 
* <p>Note that this will suppress duplicates, and as of 4.2, the elements in 
* the returned set will preserve the original order in a {@link LinkedHashSet}. 
* @param str the input {@code String} 
* @return a set of {@code String} entries in the list 
* @see #removeDuplicateStrings(String[]) 
*/ 
public static Set<String> commaDelimitedListToSet(@Nullable String str) { 
+0

Merci. C'est certainement plus agréable que ma méthode statique personnalisée. J'ai toujours l'impression qu'il doit y avoir un moyen de le faire automatiquement dans Spring Integration. – Craig

+0

Non, ce n'est pas la responsabilité de Spring Integration. À droite, il y a une abstraction 'Converter' et nous pouvons certainement développer' StringToSetConverter', mais cela pourrait être dangereux dans d'autres endroits. Quoi qu'il en soit: https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/messaging-endpoints-chapter.html#payload-type-conversion –