[ 
https://issues.apache.org/jira/browse/CAMEL-21572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bartosz Popiela updated CAMEL-21572:
------------------------------------
    Description: 
SetHeader with a simple expression causes NullPointerException to be thrown 
because for runtime other than default (kamelet-main) JBang uses Stub instead 
of the actual component which produces null. 

{code:java}
PS> jbang "-Dcamel.jbang.version=4.8.0" camel@apache/camel run * 
--runtime=spring-boot
org.apache.camel.FailedToCreateRouteException: Failed to create route 
route-603e at: >>> SetHeader[SampleUUID, simple{This is a sample UUID: 
${bean:type:java.util.UUID?method=randomUUID}}] <<< in route: 
Route(route-603e)[From[timer:oneTimeTimer?delay=0&repeatCoun... because of 
Cannot invoke "Object.toString()" because "value" is null
        at 
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:235)
        at 
org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:86)
        at 
org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
        at 
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:726)
        at 
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:592)
        at 
org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2433)
        at 
org.apache.camel.support.service.BaseService.init(BaseService.java:85)
        at 
org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2068)
        at 
org.apache.camel.support.service.BaseService.start(BaseService.java:115)
        at 
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2087)
        at 
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:211)
        at org.apache.camel.main.KameletMain.doStart(KameletMain.java:373)
        at 
org.apache.camel.support.service.BaseService.start(BaseService.java:123)
        at 
org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1348)
        at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:864)
        at org.apache.camel.dsl.jbang.core.commands.Run.runExport(Run.java:330)
        at 
org.apache.camel.dsl.jbang.core.commands.ExportBaseCommand.runSilently(ExportBaseCommand.java:318)
        at 
org.apache.camel.dsl.jbang.core.commands.ExportSpringBoot.export(ExportSpringBoot.java:71)
        at 
org.apache.camel.dsl.jbang.core.commands.Run.runSpringBoot(Run.java:988)
        at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:416)
        at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:319)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:37)
        at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
        at picocli.CommandLine.access$1500(CommandLine.java:148)
        at 
picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
        at 
picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
        at picocli.CommandLine.execute(CommandLine.java:2174)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:173)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:62)
        at main.CamelJBang.main(CamelJBang.java:36)
Caused by: java.lang.NullPointerException: Cannot invoke "Object.toString()" 
because "value" is null
        at 
org.apache.camel.support.builder.ExpressionBuilder$62.init(ExpressionBuilder.java:2126)
        at 
org.apache.camel.reifier.language.ExpressionReifier.createExpression(ExpressionReifier.java:183)
        at 
org.apache.camel.reifier.AbstractReifier.createExpression(AbstractReifier.java:119)
        at 
org.apache.camel.reifier.SetHeaderReifier.createProcessor(SetHeaderReifier.java:37)
        at 
org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:893)
        at 
org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:629)
        at 
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:231)
        ... 33 more
{code}

{code:yaml}
- route:
    id: route-603e
    nodePrefixId: route-b8d
    from:
      id: from-6ff9
      uri: timer
      parameters:
        delay: "0"
        timerName: oneTimeTimer
        repeatCount: "1"
      steps:
        - setHeader:
            id: setHeader-c0db
            name: SampleUUID
            expression:
              simple:
                id: simple-536b
                expression: >-
                  This is a sample UUID:
                  ${bean:type:java.util.UUID?method=randomUUID}
        - log:
            id: log-3213
            message: ${header.SampleUUID}
{code}


  was:
SetHeader with a simple expression causes NullPointerException to be thrown 
because for runtime other than default (kamelet-main) JBang uses Stub instead 
of the actual component which produces null. 

{code:java}
PS C:\Users\bpopiela\VSCode\jbang-NPE> jbang "-Dcamel.jbang.version=4.8.0" 
camel@apache/camel run *  
--local-kamelet-dir=C:/Users/bpopiela/CustomKamelets-21-11-2024 
--runtime=spring-boot
org.apache.camel.FailedToCreateRouteException: Failed to create route 
route-603e at: >>> SetHeader[SampleUUID, simple{This is a sample UUID: 
${bean:type:java.util.UUID?method=randomUUID}}] <<< in route: 
Route(route-603e)[From[timer:oneTimeTimer?delay=0&repeatCoun... because of 
Cannot invoke "Object.toString()" because "value" is null
        at 
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:235)
        at 
org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:86)
        at 
org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
        at 
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:726)
        at 
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:592)
        at 
org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2433)
        at 
org.apache.camel.support.service.BaseService.init(BaseService.java:85)
        at 
org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2068)
        at 
org.apache.camel.support.service.BaseService.start(BaseService.java:115)
        at 
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2087)
        at 
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:211)
        at org.apache.camel.main.KameletMain.doStart(KameletMain.java:373)
        at 
org.apache.camel.support.service.BaseService.start(BaseService.java:123)
        at 
org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1348)
        at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:864)
        at org.apache.camel.dsl.jbang.core.commands.Run.runExport(Run.java:330)
        at 
org.apache.camel.dsl.jbang.core.commands.ExportBaseCommand.runSilently(ExportBaseCommand.java:318)
        at 
org.apache.camel.dsl.jbang.core.commands.ExportSpringBoot.export(ExportSpringBoot.java:71)
        at 
org.apache.camel.dsl.jbang.core.commands.Run.runSpringBoot(Run.java:988)
        at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:416)
        at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:319)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:37)
        at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
        at picocli.CommandLine.access$1500(CommandLine.java:148)
        at 
picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
        at 
picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
        at picocli.CommandLine.execute(CommandLine.java:2174)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:173)
        at 
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:62)
        at main.CamelJBang.main(CamelJBang.java:36)
Caused by: java.lang.NullPointerException: Cannot invoke "Object.toString()" 
because "value" is null
        at 
org.apache.camel.support.builder.ExpressionBuilder$62.init(ExpressionBuilder.java:2126)
        at 
org.apache.camel.reifier.language.ExpressionReifier.createExpression(ExpressionReifier.java:183)
        at 
org.apache.camel.reifier.AbstractReifier.createExpression(AbstractReifier.java:119)
        at 
org.apache.camel.reifier.SetHeaderReifier.createProcessor(SetHeaderReifier.java:37)
        at 
org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:893)
        at 
org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:629)
        at 
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:231)
        ... 33 more
{code}

{code:yaml}
- route:
    id: route-603e
    nodePrefixId: route-b8d
    from:
      id: from-6ff9
      uri: timer
      parameters:
        delay: "0"
        timerName: oneTimeTimer
        repeatCount: "1"
      steps:
        - setHeader:
            id: setHeader-c0db
            name: SampleUUID
            expression:
              simple:
                id: simple-536b
                expression: >-
                  This is a sample UUID:
                  ${bean:type:java.util.UUID?method=randomUUID}
        - log:
            id: log-3213
            message: ${header.SampleUUID}
{code}



> Camel JBang with --runtime=spring-boot throw NullPointerException
> -----------------------------------------------------------------
>
>                 Key: CAMEL-21572
>                 URL: https://issues.apache.org/jira/browse/CAMEL-21572
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jbang
>    Affects Versions: 4.8.2, 4.9.0
>            Reporter: Bartosz Popiela
>            Priority: Minor
>             Fix For: 4.8.3, 4.10.0
>
>
> SetHeader with a simple expression causes NullPointerException to be thrown 
> because for runtime other than default (kamelet-main) JBang uses Stub instead 
> of the actual component which produces null. 
> {code:java}
> PS> jbang "-Dcamel.jbang.version=4.8.0" camel@apache/camel run * 
> --runtime=spring-boot
> org.apache.camel.FailedToCreateRouteException: Failed to create route 
> route-603e at: >>> SetHeader[SampleUUID, simple{This is a sample UUID: 
> ${bean:type:java.util.UUID?method=randomUUID}}] <<< in route: 
> Route(route-603e)[From[timer:oneTimeTimer?delay=0&repeatCoun... because of 
> Cannot invoke "Object.toString()" because "value" is null
>         at 
> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:235)
>         at 
> org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:86)
>         at 
> org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
>         at 
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:726)
>         at 
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:592)
>         at 
> org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2433)
>         at 
> org.apache.camel.support.service.BaseService.init(BaseService.java:85)
>         at 
> org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2068)
>         at 
> org.apache.camel.support.service.BaseService.start(BaseService.java:115)
>         at 
> org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2087)
>         at 
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:211)
>         at org.apache.camel.main.KameletMain.doStart(KameletMain.java:373)
>         at 
> org.apache.camel.support.service.BaseService.start(BaseService.java:123)
>         at 
> org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1348)
>         at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:864)
>         at 
> org.apache.camel.dsl.jbang.core.commands.Run.runExport(Run.java:330)
>         at 
> org.apache.camel.dsl.jbang.core.commands.ExportBaseCommand.runSilently(ExportBaseCommand.java:318)
>         at 
> org.apache.camel.dsl.jbang.core.commands.ExportSpringBoot.export(ExportSpringBoot.java:71)
>         at 
> org.apache.camel.dsl.jbang.core.commands.Run.runSpringBoot(Run.java:988)
>         at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:416)
>         at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:319)
>         at 
> org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71)
>         at 
> org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:37)
>         at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
>         at picocli.CommandLine.access$1500(CommandLine.java:148)
>         at 
> picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
>         at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
>         at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
>         at 
> picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
>         at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
>         at picocli.CommandLine.execute(CommandLine.java:2174)
>         at 
> org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:173)
>         at 
> org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:62)
>         at main.CamelJBang.main(CamelJBang.java:36)
> Caused by: java.lang.NullPointerException: Cannot invoke "Object.toString()" 
> because "value" is null
>         at 
> org.apache.camel.support.builder.ExpressionBuilder$62.init(ExpressionBuilder.java:2126)
>         at 
> org.apache.camel.reifier.language.ExpressionReifier.createExpression(ExpressionReifier.java:183)
>         at 
> org.apache.camel.reifier.AbstractReifier.createExpression(AbstractReifier.java:119)
>         at 
> org.apache.camel.reifier.SetHeaderReifier.createProcessor(SetHeaderReifier.java:37)
>         at 
> org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:893)
>         at 
> org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:629)
>         at 
> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:231)
>         ... 33 more
> {code}
> {code:yaml}
> - route:
>     id: route-603e
>     nodePrefixId: route-b8d
>     from:
>       id: from-6ff9
>       uri: timer
>       parameters:
>         delay: "0"
>         timerName: oneTimeTimer
>         repeatCount: "1"
>       steps:
>         - setHeader:
>             id: setHeader-c0db
>             name: SampleUUID
>             expression:
>               simple:
>                 id: simple-536b
>                 expression: >-
>                   This is a sample UUID:
>                   ${bean:type:java.util.UUID?method=randomUUID}
>         - log:
>             id: log-3213
>             message: ${header.SampleUUID}
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to