Will try bean.

For now - I ended up doing a bind in the default registry.
I was mainly trying to find a low-code way of doing this.


ચિરાગ/चिराग/Chirag
------------------------------------------
Sent from My Gmail Account


On Tue, Jan 18, 2022 at 2:53 AM Claus Ibsen <claus.ib...@gmail.com> wrote:

> Hi
>
> In Camel 3.14 you can use bean instead of process to refer to the #class.
>
> On Tue, Jan 18, 2022 at 7:28 AM Claus Ibsen <claus.ib...@gmail.com> wrote:
> >
> > Hi
> >
> > Yes this is not supported currently. I have created a JIRA and have a
> > fix for this:
> > https://issues.apache.org/jira/browse/CAMEL-17508
> >
> > On Tue, Jan 18, 2022 at 6:12 AM Chirag Sanghavi
> > <chirag.sangh...@gmail.com> wrote:
> > >
> > > I am trying with Camel 3.14.0.
> > >
> > > While debugging I noticed that
> > >
> > > call gets to ProcessReifier.java
> > >
> > >   public Processor createProcessor() {
> > >          Processor answer =
> > > ((ProcessDefinition)this.definition).getProcessor();
> > >          if (answer == null) {
> > >
> > > ObjectHelper.notNull(((ProcessDefinition)this.definition).getRef(),
> > > "ref", this.definition);
> > >              answer =
> > >
> (Processor)this.mandatoryLookup(((ProcessDefinition)this.definition).getRef(),
> > > Processor.class);
> > >          }
> > >
> > > at that point - variables are as below:
> > >
> > > definition = {ProcessDefinition@3684}
> > > "process[ref:#class:org.myorg.camel.MyProcessor]"
> > >   ref = "#class:org.myorg.camel.MyProcessor"
> > >   processor = null
> > >   log = {Logger@3741}
> "Logger[org.apache.camel.model.ProcessDefinition]"
> > >   inheritErrorHandler = null
> > >   blocks = {LinkedList@3742}  size = 0
> > >   parent = {RouteDefinition@3358}
> > > "Route(route1)[From[timer://foo?fixedRate=true&period=60000] ->
> > > [SetBody[simple{Hello}],
> > > process[ref:#class:org.myorg.camel.MyProcessor], To[log:hello]]]"
> > >   interceptStrategies = {ArrayList@3743}  size = 0
> > >   index = 2
> > >   id = "process1"
> > >   customId = null
> > >   description = null
> > >
> > > ((ProcessDefinition)this.definition).getProcessor() , returns null and
> > > then it performs a lookup on registry.
> > >
> > > It never seemed to get to
> > > public Object lookupByName(String name) {
> > >          if (name != null && name.startsWith("#class:")) {
> > >              return this.createBean(name, Object.class);
> > >          } else {
> > >              return name != null && name.startsWith("#type:") ?
> > > this.lookupBean(name, Object.class) :
> > > this.getRegistry().lookupByName(name);
> > >          }
> > >      }
> > >
> > > if it may have - it may have identified that the class starts with
> > > #class: and needs to be bypassing registry.
> > >
> > > ------ Original Message ------
> > > From: "Claus Ibsen" <claus.ib...@gmail.com>
> > > To: users@camel.apache.org
> > > Sent: 1/17/2022 4:38:12 AM
> > > Subject: Re: Using camel-main, xml route, referencing a java class as
> > > processor
> > >
> > > >What camel version do you use
> > > >
> > > >On Mon, Jan 17, 2022 at 9:27 AM Chirag <chirag.sangh...@gmail.com>
> wrote:
> > > >>
> > > >>  Hello,
> > > >>  I have a scenario where I am using camel-main with XML Route and a
> Java
> > > >>  Class as a Processor.
> > > >>
> > > >>  It gives me following error:
> > > >>
> > > >>  Exception in thread "main"
> org.apache.camel.FailedToCreateRouteException:
> > > >>  Failed to create route route1 at: >>>
> > > >>  process[ref:#class:org.myorg.camel.MyProcessor] <<< in route:
> > > >>  Route(route1)[From[timer://foo?fixedRate=true&period=60000] ...
> because of
> > > >>  No bean could be found in the registry for:
> > > >>  #class:org.myorg.camel.MyProcessor of type:
> org.apache.camel.Processor
> > > >>          at
> > > >>
> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:240)
> > > >>          at
> > > >>
> org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:74)
> > > >>          at
> > > >>
> org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
> > > >>          at
> > > >>
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:868)
> > > >>          at
> > > >>
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:758)
> > > >>          at
> > > >>
> org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2861)
> > > >>          at
> > > >>
> org.apache.camel.support.service.BaseService.init(BaseService.java:83)
> > > >>          at
> > > >>
> org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2567)
> > > >>          at
> > > >>
> org.apache.camel.support.service.BaseService.start(BaseService.java:111)
> > > >>          at
> > > >>
> org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2586)
> > > >>          at
> > > >>
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:247)
> > > >>          at org.apache.camel.main.Main.doStart(Main.java:116)
> > > >>          at
> > > >>
> org.apache.camel.support.service.BaseService.start(BaseService.java:119)
> > > >>          at
> org.apache.camel.main.MainSupport.run(MainSupport.java:69)
> > > >>          at
> > > >>
> org.apache.camel.main.MainCommandLineSupport.run(MainCommandLineSupport.java:174)
> > > >>          at org.myorg.camel.MyMainApp.main(MyMainApp.java:21)
> > > >>  Caused by: org.apache.camel.NoSuchBeanException: No bean could be
> found in
> > > >>  the registry for: #class:org.myorg.camel.MyProcessor of type:
> > > >>  org.apache.camel.Processor
> > > >>          at
> > > >>
> org.apache.camel.support.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:241)
> > > >>          at
> > > >>
> org.apache.camel.reifier.AbstractReifier.mandatoryLookup(AbstractReifier.java:145)
> > > >>          at
> > > >>
> org.apache.camel.reifier.ProcessReifier.createProcessor(ProcessReifier.java:40)
> > > >>          at
> > > >>
> org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:838)
> > > >>          at
> > > >>
> org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:579)
> > > >>          at
> > > >>
> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:236)
> > > >>          ... 15 more
> > > >>
> > > >>  Example Code is described:
> > > >>
> https://github.com/chiragsanghavi/camel-experiments/tree/main/processor
> > > >>
> > > >>  Basically referring to processor using <process
> > > >>  ref="#class:org.myorg.camel.MyProcessor"/> in route directly as
> described
> > > >>  in
> > > >>
> https://camel.apache.org/manual/processor.html#_referring_to_beans_using_class_syntax
> > > >>  .
> > > >>
> > > >>  But it doesn't seem to work.
> > > >>
> > > >>  Are there any other conditions to using #class ?
> > > >>
> > > >>
> > > >>  ચિરાગ/चिराग/Chirag
> > > >>  ------------------------------------------
> > > >>  Sent from My Gmail Account
> > > >
> > > >
> > > >
> > > >--
> > > >Claus Ibsen
> > > >-----------------
> > > >http://davsclaus.com @davsclaus
> > > >Camel in Action 2: https://www.manning.com/ibsen2
> > >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>

Reply via email to