Hi, Claus. I was hoping to get the latest SNAPSHOT with the HttpMessage.getResponse method implemented. I just updated from the SNAPSHOT repo and verified it's not there yet:
stealth: wget --no-check-certificate https://repository.apache.org/content/repositories/snapshots//org/apache/camel/camel-http/2.0-SNAPSHOT/camel-http-2.0-SNAPSHOT.jar --2009-08-06 15:28:08-- https://repository.apache.org/content/repositories/snapshots//org/apache/camel/camel-http/2.0-SNAPSHOT/camel-http-2.0-SNAPSHOT.jar Resolving repository.apache.org... 140.211.11.100 Connecting to repository.apache.org|140.211.11.100|:443... connected. WARNING: cannot verify repository.apache.org's certificate, issued by `/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287': Self-signed certificate encountered. HTTP request sent, awaiting response... 200 OK Length: 42721 (42K) [text/plain] Saving to: `camel-http-2.0-SNAPSHOT.jar' 100%[=================================================================================================================================================>] 42,721 73.7K/s in 0.6s 2009-08-06 15:28:09 (73.7 KB/s) - `camel-http-2.0-SNAPSHOT.jar' saved [42721/42721] stealth: javap -classpath camel-http-2.0-SNAPSHOT.jar org.apache.camel.component.http.HttpMessage Compiled from "HttpMessage.java" public class org.apache.camel.component.http.HttpMessage extends org.apache.camel.impl.DefaultMessage{ public org.apache.camel.component.http.HttpMessage(org.apache.camel.Exchange, javax.servlet.http.HttpServletRequest); public javax.servlet.http.HttpServletRequest getRequest(); protected java.lang.Object createBody(); } stealth: Do you know when it might make it into the repo? Thanks! Claus Ibsen-2 wrote: > > Hi > > Also the bean method name issue has been fixed in trunk. > So if possible please test it at your side by building from source or > try SNAPSHOT when a new build is published to apache maven repos. > > On Wed, Aug 5, 2009 at 1:55 PM, Claus Ibsen<claus.ib...@gmail.com> wrote: >> Hi >> >> Okay I am committing a fix in short time. >> >> You can grab it using 2 ways >> - from the body using the camel type converter, to avoid ugly java type >> casts >> - using java type cast to cast the message to HttpMessage >> >> // we have access to the HttpServletRequest here and we >> can grab it if we need it >> HttpServletRequest req = >> exchange.getIn().getBody(HttpServletRequest.class); >> assertNotNull(req); >> >> // we have access to the HttpServletResponse here and we >> can grab it if we need it >> HttpServletResponse res = >> exchange.getIn().getBody(HttpServletResponse.class); >> assertNotNull(res); >> >> // and they should also be on HttpMessage >> HttpMessage msg = (HttpMessage) exchange.getIn(); >> assertNotNull(msg.getRequest()); >> assertNotNull(msg.getResponse()); >> >> And use the output stream to write to the servlet response >> >> // and we can use servlet response to write to output stream >> also >> res.getOutputStream().print("Written by servlet response"); >> >> >> On Wed, Aug 5, 2009 at 10:55 AM, Claus Ibsen<claus.ib...@gmail.com> >> wrote: >>> Hi >>> >>> Cool I have added a ticket to get it back >>> https://issues.apache.org/activemq/browse/CAMEL-1879 >>> >>> >>> On Wed, Aug 5, 2009 at 10:52 AM, jjb<jj_burf...@yahoo.com> wrote: >>>> >>>> Hi, Claus. >>>> >>>> I built a framework to receive status related messages from a topic as >>>> the >>>> route is traversed. Consider the routes the define DerivedClass -> A >>>> -> B >>>> -> C. As each segment in the route executes, it sends JAXB/XML >>>> messages to >>>> a topic that are then forwarded back to the client via a callback. As >>>> the >>>> DerivedClass receives these messages, it sends them back over the HTTP >>>> socket (via the HttpServletResponse) to the invoking web client. This >>>> gives >>>> the web client a realtime flow of XML status updates while the >>>> different >>>> endpoints are traversed. Since I do not want DerivedClass to know >>>> about >>>> Camel or JMS, there is a class which DerivedClass submits a request to >>>> (manager instance below) that also listens on this topic for related >>>> status >>>> messages. These I get via callback and write them to the web client >>>> accordingly: >>>> >>>> >>>> public interface Client >>>> { >>>> public void notify(String status); >>>> } >>>> >>>> public DerivedClass implements Client >>>> { >>>> HttpServletResponse response; >>>> >>>> public void process(Exchange exchange) >>>> { >>>> HttpServletResponse response = ....; // need to know how to >>>> get >>>> this >>>> String request = "MY XML REQUEST"; // this is actually a JAXB >>>> serialized object >>>> >>>> // submit XML request to class which listens on topic and calls >>>> notify with stuff for us >>>> manager.submit(request, this); >>>> } >>>> >>>> // we get our stuff from the manager object which listens on a topic >>>> and >>>> correlates status >>>> // messages and calls this notify method >>>> public notify(String status) >>>> { >>>> response.getWriter().println(status); >>>> } >>>> } >>>> >>>> I was hoping 2.0-M3 Camel would allow access to HttpServletRequest as >>>> before >>>> 2.0-M3 so I can make my own synchronous writes to the HTTP client from >>>> DerivedClass with no dependence on Camel. >>>> >>>> Regards >>>> >>>> response.getWriter().println(statusStr) >>>> >>>> Claus Ibsen-2 wrote: >>>>> >>>>> 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<jj_burf...@yahoo.com> 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<jj_burf...@yahoo.com> 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<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 >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> 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 >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://www.nabble.com/bean-binding-with-inheritance---2.0-M3-camel-http-tp24802648p24823165.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 >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> > > > > -- > 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-tp24802648p24855730.html Sent from the Camel - Users mailing list archive at Nabble.com.