imaginer que nous avons une classe POJO comme ceci:Injecter résultat de haricots en objet POJO
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyPojo
{
private Map<String, Object> myMap;
private List<AnOtherPojoClass> myOtherPojos;
private int myInteger;
}
Ce type est utilisé dans une route de chameau déclenchée par REST DSL:
<post uri="/runpojo" consumes="application/json" produces="application/json" bindingMode="json" type="com.test.MyPojo">
<route>
<!-- pojo's myInteger is already filled from REST caller -->
<setBody>
<simple>${body.setMyMap(${bean:service2?method=calculateMap(${body.myInteger})})}</simple>
</setBody>
<setBody>
<simple>${body.setMyOtherPojos(${bean:service3?method=calculateOtherPojo})}</simple>
</setBody>
<marshal ref="json" />
</route>
</post>
Mais voici mon problème : Après l'appel de mon POST je veux définir une propriété POJO dans mon corps. Mais <simple/>
ne fonctionne pas, car il essaie de convertir calculateMap(${body.myInteger})})
le paramètre de méthode en une chaîne. Tant que le paramètre est un type simple cela peut fonctionner, mais dans mon code de production myInteger
est un byte[]
. Un autre problème est, même si je parviens à faire fonctionner le haricot, la valeur de retour Map<String, Object>
est (interne camel) analysé à String
, mais mon setter s'attendre à un Map
.
Version actuelle:
<camel.version>2.17.1</camel.version>
Que puis-je faire, pour définir les propriétés POJO à un résultat d'une autre méthode haricots appel?
Merci, Jan
Quelle version de Camel utilisez-vous? –
La version actuelle de camel @ClausIbsen est \t \t ' 2.17.1 ' –
Kooki