On Tue, Aug 4, 2009 at 9:26 AM, jjb<jj_burf...@yahoo.com> wrote:
>
> Hi.
>
> Thanks for the quick response.  I switched to 2.0-M3 and still had the
> problem - the BaseClass.onMessage still gets called.  Is there a newer
> release or something I can check out that might have this fix?  Also, when I
> use 2.0-M3, how do I get the HttpServletResponse (your suggestion to get the
> HttpServletRequest worked for me - thanks)?
>
> Regards

Hi

About the bean problem. Could you create a ticket for it and attach a
small sample with the issue?

You can use the @Handler annotation to mark the method that Camel
should use and then avoid using the ?method=xxxx.
But I am interested in fixing why method=xxx does not work for you.

See more here
http://camel.apache.org/bean-binding.html


>
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> On Tue, Aug 4, 2009 at 7:52 AM, jjb<jj_burf...@yahoo.com> wrote:
>>>
>>> I have a hierarchy of objects which looks like this:
>>>
>>> public BaseClass implements javax.jms.MessageListener
>>> {
>>>    public void onMessage(javax.jms.Message message)
>>>    {
>>>        // do something
>>>    }
>>> }
>>>
>>> public DerivedClass extends BaseClass
>>> {
>>>    public void process(String body)
>>>    {
>>>        // do something
>>>    }
>>> }
>>>
>>> I then have the following XML in my camel-context.xml:
>>>
>>> <bean id="processor" class="DerivedClass"/>
>>>
>>> <route>
>>>      <from uri="activemq:request.queue"/>
>>>      <to uri="bean:processor?method=process"/>
>>> </route>
>>>
>>> When I run this code, all messages from request.queue always go to
>>> BaseClass.onMessage, even though I explicitly want them to go to
>>> DerivedClass.process.  Have I done something wrong or is this a bug (I
>>> read
>>> through the bean binding and it said it would first use methods that were
>>> explicitly specified in the bean's method parameter)?
>>>
>>
>> We have fixed a bug in this relation in 2.0.x (cant remember the
>> version, might be the 2.0m3).
>>
>> In older versions you can work around this by adding an @Body
>> annotation to your base class
>>     public void process(@Body String body)
>> And Camel should prefer to use this method.
>>
>>
>>
>>> I also notice that the new 2.0-M3 version of camel-http no longer
>>> contains
>>> the class org.apache.camel.component.http.HttpExchange.  Therefore, this
>>> code no longer compiles:
>>>
>>>        public void process(Exchange exchange)
>>>        {
>>>                try
>>>                {
>>>                        HttpServletResponse response =
>>> ((HttpExchange)exchange).getResponse();
>>>                        HttpServletRequest request =
>>> ((HttpExchange)exchange).getRequest();
>>>                        HttpSession session = null;
>>>                        if (request != null)
>>>                                session = request.getSession(true);
>>>                 }
>>>                catch (Exception e)
>>>                { e.printStackTrace(); }
>>>         }
>>>
>>> Is there a new way to get the HttpServletResponse and such from the
>>> Exchange
>>> parameter?
>>
>> Its on the HttpMessage instead.
>>
>> HttpMessage in = (HttpMessag) exchange.getIn();
>> HttpServletRequest = in.getRequest();
>>
>>
>>>
>>> Regards
>>> --
>>> View this message in context:
>>> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24802648.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24803535.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to