Marat Gubaidullin created CAMEL-24410:
-----------------------------------------

             Summary: camel-jbang export fails to parse redeliveryDelay in YAML 
DSL (IllegalArgumentException: Error parsing as java.time.Duration)
                 Key: CAMEL-24410
                 URL: https://issues.apache.org/jira/browse/CAMEL-24410
             Project: Camel
          Issue Type: Bug
          Components: camel-jbang
    Affects Versions: 4.22.0
         Environment: *Environment*

* *Camel version:* 4.22.0
* *Tool:* Camel JBang
* *DSL:* YAML
            Reporter: Marat Gubaidullin


*Summary*

`camel export` fails to parse `redeliveryDelay` in YAML DSL 
(`IllegalArgumentException: Error parsing as java.time.Duration`)

*Description*

When defining an `errorHandler` with a `redeliveryDelay` inside a 
`routeConfiguration` using the YAML DSL, the route executes correctly with 
`camel run`. However, `camel export` fails to parse the string value, 
attempting to strictly evaluate it as a `java.time.Duration` and missing the 
necessary type converter.

This contradicts the behavior of `camel run` and the definition in 
`camelYamlDsl.json`, which specifies `redeliveryDelay` as a string representing 
milliseconds.

[camelYamlDsl.json|https://github.com/apache/camel/blob/1a54683f4becad3b32df42507e709526d8563f35/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json#L5142-L5147]
{code:java}
"redeliveryDelay" : {
"type" : "string",
"title" : "Redelivery Delay",
"description" : "Sets the initial delay in milliseconds before the first 
redelivery attempt.",
"default" : "1000"
},
{code}
*Steps to Reproduce*

*1. Create a YAML route (`xxx.camel.yaml`):*
{code:java}
- routeConfiguration:
    errorHandler:
      id: errorHandlerf23c
      deadLetterChannel:
        id: deadLetterChannelda61
        deadLetterUri: direct:defaultDLQ
        redeliveryPolicy:
          id: redeliveryPolicybe2a
          maximumRedeliveries: 0
          redeliveryDelay: "500"
{code}
*2. Run the route (Succeeds):*
{code:java}
jbang "-Dcamel.jbang.version=4.22.0" camel@apache/camel run *
{code}
*3. Export the route (Fails):*
{code:java}
jbang "-Dcamel.jbang.version=4.22.0" camel@apache/camel export * --dir=.export
{code}
*Actual Error Stack*
{code:java}
org.apache.camel.FailedToCreateRouteException: Failed to create route: 
route-error-handler at: >>> Log[exchangeProperties.CamelExceptionCaught] <<< in 
route: Route(route-error-handler)[From[direct:defaultDLQ] -> [Log[e... because: 
java.lang.IllegalArgumentException: Error parsing [500] as a java.time.Duration.
...
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type 
converter available to convert from type: java.lang.String to the required 
type: java.time.Duration
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:208)

{code}
*Expected Behavior*

`camel export` should successfully parse `"500"` as milliseconds and generate 
the export project without throwing a `NoTypeConversionAvailableException`, 
matching the behavior of `camel run`.



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

Reply via email to