2013-12-19 5 views
0

У меня есть следующий верблюд маршрут:Apache Camel: SetProperty и Groovy

<route id="myroute"> 
    <from uri="timer://runOnce?repeatCount=1&amp;delay=10" /> 

    <!-- Set a new property on the exchange. --> 
    <to uri="bean:propSetter?method=setProp" /> 

    <to uri="direct:fizz" /> 
</route> 

Мой PropSetter боб:

public class PropSetter { 
    // Add new "buzz" ArrayList<Long> to the exchange. 
    public void setProp(Exchange exchange) { 
     exchange.setProperty("buzz", new ArrayList<Long>()); 
    } 
} 

Я хотел бы переписать это без боба Java и вместо того, чтобы использовать Верблюжье <setProperty/> элемент. Единственное, что я могу думать это использовать встроенный в Groovy выражение:

<route id="myroute"> 
    <from uri="timer://runOnce?repeatCount=1&amp;delay=10" /> 

    <!-- Set a new property on the exchange. --> 
    <setProperty propertyName="buzz"> 
     <groovy>new ArrayList&lt;Long&gt;();</groovy> 
    </setProperty> 

    <to uri="direct:fizz" /> 
</route> 

Но это не похоже на работу. Итак, как я могу использовать XML для установки нового ArrayList<Long> на бирже под названием buzz?

+1

Что вы имеете в виду _ "делает кажется, не работает "_? –

+1

вы можете ссылаться на bean-компонент, и внутри этого компонента вы можете назначить список. – Ashish

+0

Спасибо @tim_yates (+1) - хотя я не могу расшифровать, нужно ли мне разъяснять степень ошибки, которую я вижу, или если вы думаете, что она должна * работать и не видеть, почему она не ... не возражаете ли вы немного разобраться? Еще раз спасибо! – IAmYourFaja

ответ

0

Определить список с помощью UTIL имен Spring, как:

<util:list id="myList" value-type="java.lang.String"> 
</util:list> 

Затем, используя простой язык, который вы можете получить доступ к компоненту и установить в свойстве обмена

<camel:setProperty propertyName="buzz"> 
    <camel:simple>${bean:myList}</camel:simple> 
</camel:setProperty> 
+0

Вероятно, вы должны установить scope = "prototype" в списке util: list, чтобы был создан новый список, в противном случае используется один и тот же общий экземпляр –

Смежные вопросы