Re: Is it possible to overload a bean method?

2009-03-05 Thread Claus Ibsen
On Thu, Mar 5, 2009 at 9:40 AM, ee7arh andrew.hu...@2e-systems.com wrote:

 Thanks for the feedback,

 It looks like we are talking about the same use case. In my example, all my
 methods had the same name, but each method had a different parameter
 (Object1, 2 and 3). Each of these parameter types inheritted from Objectn.
 So each method did have a different concrete sub-type although all are
 instances of Objectn. In your example, your 3rd method has a different
 name... was that a typo?
Yeah probably.

 I could certainly use different method names, it would just mean I have to
 have some more logic in my RouteBuilder. At the moment, I just send objects
 off the queue to the same bean method and ask it to take care of selecting
 the correct one by overloading.
You can send it to an indirect method that will check the type and
invoke the correct method of the 3.
Then you route can stay simple.




 Thanks and Regards
 Andrew


 ee7arh wrote:

 Hi,

 I have a bean defined which has 3 methods all with same name but with
 different arguements. I would like to route messages from a queue to this
 bean and depending on the object type I was hoping that the correct method
 would get called by overloading.

 Instead i get the error:

 org.apache.camel.NoTypeConversionAvailableException: No type converter
 available to convert from type:.

 I noticed that the first method defined in my bean caused this error so it
 looks like Camel takes the 1st method and tries (and fails) to convert the
 message.

 here is my bean definition:

 @Service(value = serviceEventGenerator)
 public class ServiceEventGenerator {

     public ArrayListServiceEvent generateServiceEvents(Object1 event) {}

     public ArrayListServiceEvent generateServiceEvents(Object2 event) {}

     public ArrayListServiceEvent generateServiceEvents(Object3 event) {}

 }

 (Incidentally in my example, Object 1,2 and 3 all extend from a parent
 class Objectn.)

 And my route:

 from(jms:queue:unmarshalledEventsQueue)
             .to(log:unmarshalledEventLogger?level=INFO)

 .to(bean:serviceEventGenerator?methodName=generateServiceEvents)

 Thanks in advance for any help

 Andrew


 --
 View this message in context: 
 http://www.nabble.com/Is-it-possible-to-overload-a-bean-method--tp22338316p22347357.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/


Re: Is it possible to overload a bean method?

2009-03-05 Thread Claus Ibsen
BTW

I created a ticket for it
https://issues.apache.org/activemq/browse/CAMEL-1424


On Thu, Mar 5, 2009 at 9:49 AM, Claus Ibsen claus.ib...@gmail.com wrote:
 On Thu, Mar 5, 2009 at 9:40 AM, ee7arh andrew.hu...@2e-systems.com wrote:

 Thanks for the feedback,

 It looks like we are talking about the same use case. In my example, all my
 methods had the same name, but each method had a different parameter
 (Object1, 2 and 3). Each of these parameter types inheritted from Objectn.
 So each method did have a different concrete sub-type although all are
 instances of Objectn. In your example, your 3rd method has a different
 name... was that a typo?
 Yeah probably.

 I could certainly use different method names, it would just mean I have to
 have some more logic in my RouteBuilder. At the moment, I just send objects
 off the queue to the same bean method and ask it to take care of selecting
 the correct one by overloading.
 You can send it to an indirect method that will check the type and
 invoke the correct method of the 3.
 Then you route can stay simple.




 Thanks and Regards
 Andrew


 ee7arh wrote:

 Hi,

 I have a bean defined which has 3 methods all with same name but with
 different arguements. I would like to route messages from a queue to this
 bean and depending on the object type I was hoping that the correct method
 would get called by overloading.

 Instead i get the error:

 org.apache.camel.NoTypeConversionAvailableException: No type converter
 available to convert from type:.

 I noticed that the first method defined in my bean caused this error so it
 looks like Camel takes the 1st method and tries (and fails) to convert the
 message.

 here is my bean definition:

 @Service(value = serviceEventGenerator)
 public class ServiceEventGenerator {

     public ArrayListServiceEvent generateServiceEvents(Object1 event) {}

     public ArrayListServiceEvent generateServiceEvents(Object2 event) {}

     public ArrayListServiceEvent generateServiceEvents(Object3 event) {}

 }

 (Incidentally in my example, Object 1,2 and 3 all extend from a parent
 class Objectn.)

 And my route:

 from(jms:queue:unmarshalledEventsQueue)
             .to(log:unmarshalledEventLogger?level=INFO)

 .to(bean:serviceEventGenerator?methodName=generateServiceEvents)

 Thanks in advance for any help

 Andrew


 --
 View this message in context: 
 http://www.nabble.com/Is-it-possible-to-overload-a-bean-method--tp22338316p22347357.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/




-- 
Claus Ibsen
Apache Camel Committer

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