Hi

Ah the response may be missing on the HttpMessage.

What do you need it for?

On Wed, Aug 5, 2009 at 9:51 AM, jjb<[email protected]> wrote:
>
> Hi, Claus.
>
> Thank you so much for looking into the issue.  My last request has to do
> with how to obtain a reference to the HttpServletResponse in the new (>=
> 2.0-M3) Camel API.  I can get the HttpServletRequest as you suggested (using
> HttpMessage), but how do I obtain a reference to the HttpServletResponse
> from a method with is the "to" endpoint of a camel-jetty "from" route that
> takes an Exchange parameter as so:
>
> public void process(Exchange exchange)
> {
>    HttpMessage in = (HttpMessag) exchange.getIn();
>    HttpServletRequest = in.getRequest();
>
>    // how do I get to the HttpServletResponse which used to be accessed <
> 2.0-M3
>    // like this: HttpServletResponse response =
> ((HttpExchange)exchange).getResponse();
> }
>
> Regards
>
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> Thanks for the sample. I can reproduce the issue.
>>
>> The issue is that your base class implements the
>> javax.jms.MessageListener.
>> I will dig into why Camel prefers to invoke this method over the
>> method name specified.
>>
>>
>> On Tue, Aug 4, 2009 at 8:02 PM, jjb<[email protected]> wrote:
>>>
>>> Hi.
>>>
>>> Attached is an example which recreates the bean issue.  My goal is to
>>> create
>>> a framework which localizes JMS/ActiveMQ and Camel stuff to one package.
>>> Then none of our business logic depends on it (it just passes POJOs
>>> around
>>> that are created from XSD using JAXB).  This is why I can't put the
>>> @Handler
>>> annotation in the DerivedClass.
>>> http://www.nabble.com/file/p24813432/camel_bug.tgz camel_bug.tgz
>>>
>>> About the 2.0-M3 Camel interface for HttpServletResponse - how do I get
>>> it
>>> from the Exchange?
>>>
>>> Thanks!
>>>
>>>
>>> Claus Ibsen-2 wrote:
>>>>
>>>> On Tue, Aug 4, 2009 at 9:26 AM, jjb<[email protected]> 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<[email protected]> 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
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24813432.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-tp24802648p24822320.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