After doing a bit more research on OGNL, i found the error:
The statement should look like "request.header.foo == 'bar'" and NOT
"request.header.foo = 'bar'". The test now works.
packo wrote:
>
> So, I finished reproducing the situation:
>
> My Test class looks like this:
>
> public class CamelTest extends ContextTestSupport {
>
> public void testSendMatchingMessage() throws Exception {
> MockEndpoint resultEndpoint =
> resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
> resultEndpoint.expectedMessageCount(1);
>
> template.sendBodyAndHeader("direct:start", "<matched/>", "foo",
> "bar");
>
> resultEndpoint.assertIsSatisfied();
> }
>
> public void testSendNotMatchingMessage() throws Exception {
> MockEndpoint resultEndpoint =
> resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
> resultEndpoint.expectedMessageCount(0);
>
> template.sendBodyAndHeader("direct:start", "<notMatched/>", "foo",
> "notMatchedHeaderValue");
>
> resultEndpoint.assertIsSatisfied();
> }
>
>
> protected RouteBuilder createRouteBuilder() {
> return new RouteBuilder() {
> public void configure() {
>
> from("direct:start").choice().when().ognl("request.header.foo =
> 'bar'").to("mock:result");
> }
> };
> }
>
> testSendNotMatchingMessage fails with trace:
>
> java.lang.AssertionError: mock:result Received message count. Expected:
> <0> but was: <1>
> at
> org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:712)
> at
> org.apache.camel.component.mock.MockEndpoint.assertEquals(MockEndpoint.java:694)
> at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:238)
> at
> org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied(MockEndpoint.java:214)
> at
> ec.ep.epgreffe.il.epades.CamelTest.testSendNotMatchingMessage(CamelTest.java:43)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>
>
>
> I have added in my classpath ognl-2.6.9.jar as well.
>
>
>
> packo wrote:
>>
>> Sorry for the late reply..I am trying to reproduce the issue with the
>> test you gave me..
>>
>> I am using log4J, i am getting various warning for libraries missing, but
>> ognl seems to be working properly. The following comes from the log
>> files:
>>
>> .
>> .
>> DEBUG main org.apache.camel.management.DefaultInstrumentationAgent -
>> Registered MBean with objectname:
>> org.apache.camel:context=PRESBRUWSDW82/camel,type=processors,nodeid=choice2,name="Choice[[When[ognl{request.headers.foo
>> = 'foo1} -> [To[bean:fooBean\?method=fooMethod1]]],
>> When[ognl{request.headers.foo ='foo2'} ->
>> [To[bean:fooBean\?method=fooMethod1]]]]]"
>>
>>
>> And then later,
>> .
>> .
>> DEBUG main
>> org.springframework.beans.factory.support.DefaultListableBeanFactory -
>> Creating instance of bean 'org.apache.camel.language.ognl.OgnlLanguage'
>> DEBUG main
>> org.springframework.beans.factory.support.DefaultListableBeanFactory -
>> Finished creating instance of bean
>> 'org.apache.camel.language.ognl.OgnlLanguage'
>> .
>> .
>>
>>
>>
>> James.Strachan wrote:
>>>
>>> 2008/12/3 packo <[EMAIL PROTECTED]>:
>>>>
>>>> I am using the full camel jar (apache-camel-1.5.0.jar), so i suppose
>>>> that i
>>>> would not need to add any more Jars.
>>>
>>> It includes all the camel code - but not the dependencies - for
>>> example the ognl jar is not included.
>>>
>>>> Also, there is not exception thrown, the execution ends properly.
>>>
>>> I wonder if you get warnings? You using log4j?
>>>
>>> --
>>> James
>>> -------
>>> http://macstrac.blogspot.com/
>>>
>>> Open Source Integration
>>> http://fusesource.com/
>>>
>>>
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Endpoint-decision-based-on-Header-Value-with-XML-configuration-tp20811772s22882p20815002.html
Sent from the Camel - Users mailing list archive at Nabble.com.