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