sorry if I'm fuddling about too much. Perhaps if I rephrase:
How would I change the config of a Processor at run time in a test?
<route>
<from uri="activemq:topic:test"/>
<transacted />
<process ref="testProcessor" />
<to uri="activemq:topic:test2"/>
</route>
<bean id="testProcessor" class="... TestProcessor" scope="prototype">
<property name="path" value="/tmp/test/"/>
</bean>
protected AbstractXmlApplicationContext createApplicationContext() {
...
TestProcessor testProcessor = (TestBean)ctx.getBean("testProcessor");
testProcessor.setPath("/another/path");
...
}
public void test() {
testProcessor.getPath() -> returns "/another/path"
}
but when the Processor is invoked by:
public void test() {
sendBody("activemq:topic:test", testuserCreatePayload);
}
the Processor has the default path "/tmp/test/"
Alistair
--
mov eax,1
mov ebx,0
int 80h
On 6 Jul 2011, at 19:00, Claus Ibsen wrote:
> On Mon, Jul 4, 2011 at 3:55 PM, Alistair Young <[email protected]>
> wrote:
>> Camel seems to load its own instances of beans in camel-config.xml
>>
>> testProcessor = (TestProcessor)ctx.getBean("testProcessor");
>> testProcessor.setPath("/home/test");
>>
>> but when i do this:
>>
>> sendBody("activemq:topic:edirectoryprocessed", testuserCreatePayload);
>>
>> testProcessor has its old path. i.e. testProcessor.setPath("/home/test") has
>> no effect in camel
>>
>> is there a way to load bean definition that camel will use during the test?
>>
>
> Camel does not load its own instances. If you use spring with Camel,
> it will lookup the beans from spring application context, and use
> whatever spring returns to it.
>
> Whatever object you send from the producer template is send *as is*.
>
>
>
>
>> thanks,
>>
>> Alistair
>>
>>
>> --
>> mov eax,1
>> mov ebx,0
>> int 80h
>>
>>
>>
>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: [email protected]
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/