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

Reply via email to