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 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.