2016-09-09 2 views
0

Ich arbeite mit Camel (v2.17.3) mit Spring (v4.3.2.RELEASE) und Probleme mit der Übergabe von Eigenschaft Parameter an eine Methode.Camel - Property Parameter Übergabe an eine Methode funktioniert nicht in Auswahl/wenn

Ich habe versucht, eine Wahl zu tun/wann, aber es die Ebene String nicht den Wert der Eigenschaft übergeben {{elmu.inMask}}):

<choice> 
     <when> 
      <method ref="eleoHelper" method="checkInMask(${exchange}, ${file:name}, {{elmu.inMask}})" /> 
      <log message="${body}" /> 
     </when> 
    </choice> 

Schließlich habe ich herausgefunden, als ich Verwenden Sie das gleiche in setHeader (und der Wert des Headers als Workaround in Auswahl/wann), es funktioniert gut.

<setHeader headerName="toCollect"> 
     <method ref="eleoHelper" method="checkInMask(${exchange}, ${file:name}, {{elmu.inMask}})" /> 
    </setHeader> 

Aber ich habe mehrere Eigenschaften, und ich mag diese Problemumgehung nicht.

Die Eigenschaft Bohne Definition:

<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent"> 
    <property name="location" value="file:ELEOSFTP.properties" /> 
    <property name="encoding" value="UTF-8" /> 
</bean> 

Kalte Sie mir sagen, was in meinem Code falsch ist, und wie kann ich Eigenschaftswerte in Wahl/wann?

Antwort

0

Das sind Bean-Eigenschaften. Ich würde vermuten, dass Sie Setter/Getter und eine Klassenvariable erstellen müssen, um die Eigenschaft zuzuordnen.

Die Standardeigenschaften, die in <cm:properties> definiert sind, können in der Weise referenziert werden, wie Sie es getan haben.

+0

Dank. Mein Projekt ist ein einfacher Frühling xml, nicht OSGI. Ich habe das -Tag nie verwendet, auch nicht Ihren anderen Vorschlag. –

+0

Ich bin ein Neuling in Camel. Ich kann Abhilfe schaffen (aber nicht wollen), ich verstehe wirklich nicht, warum nicht die Ersetzung in, wenn während der gleichen Arbeit in SetHeader? –

+0

Ok, in diesem Fall musst du Camel und Spring überbrücken. Siehe hier: http://camel.apache.org/properties.html im Abschnitt über Kamel und Frühling. Siehe auch weitere Informationen hier: http://camel.apache.org/how-doi-use-spring-property-placeholder-with-camel-xml.html –

0

Versuchen:

method=checkInMask($exchangeProperty.<property name>) 
+0

Danke , aber meine Eigenschaften in einer Datei nicht in der Exchange. –

Verwandte Themen