On Fri, Aug 7, 2009 at 12:30 AM, jjb<jj_burf...@yahoo.com> wrote: > > 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? > >
Apache publishes only 100% test passed builds to repos for SNAPSHOT and a SNAPSHOT can on some occasions fail a test at apache for various reasons. Either you can - download the source and build yourself - try the FUSE snapshots as they are published no matter what http://repo.fusesource.com/maven2/org/ http://davsclaus.blogspot.com/2009/02/how-to-use-fuse-releases-when-you-cant.html The Apache Camel snapshot is being build by Hudson at http://hudson.zones.apache.org/hudson/job/Camel/ 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. > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus