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

Tomohisa Igarashi updated CAMEL-19698:
--------------------------------------
    Description: 
For example currently YAML DSL allows specifying both "simple" and "expression" 
under "when"
{code:yaml}
- from:
    uri: "timer:test"
    parameters:
      period: 3000
    steps:
    - when:
        simple: "${header.baz} != null"
        expression:
          simple: "${header.baz} == null"
        steps:
          - log: "test"
{code}

But at runtime only latter wins in this case. It would be nice if this 
exclusiveness could be expressed in the schema.



Similarly, this "anyOf" seems to allow specifying multiple expressions
https://github.com/apache/camel/blob/36bcd6277854b8e69ca91a8d51845a306b1c2136/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camel-yaml-dsl.json#L3567-L3569

for example
{code:yaml}
- from:
    uri: "timer:test"
    parameters:
      period: 3000
    steps:
    - when:
        simple: ${header.baz} != null
        jq: ".foo"
        steps:
          - log: "test"
{code}
Although this ends up with a runtime error
{noformat}
2023-08-02 14:27:29.445  INFO 1579388 --- [           main] 
org.apache.camel.main.MainSupport   : Using Java 20.0.1 with PID 1579388. 
Started by tomo in /home/tomo/workspace/Kaoto/datamapper-research/examples
Field: jq has already been configured as an expression
 in file:test.yaml, line 8, column 13:
            jq: ".foo"
                ^

        at 
org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$WhenDefinitionDeserializer.setProperty(ModelDeserializers.java:18445)
        at 
org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$WhenDefinitionDeserializer.setProperty(ModelDeserializers.java:18385)
        at 
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.setProperties(YamlDeserializerBase.java:125)
        at 
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:65)
{noformat}

  was:
For example currently YAML DSL allows specifying both "simple" and "expression" 
under "when"
{code:yaml}
- from:
    uri: "timer:test"
    parameters:
      period: 3000
    steps:
    - when:
        simple: ${header.baz} != null
        expression:
          simple: ${header.baz} == null
        steps:
          - log: "test"
{code}

But at runtime only latter wins in this case. It would be nice if this 
exclusiveness could be expressed in the schema.


> camel-yaml-dsl: Express "simple" and "expression.simple" are mutually 
> exclusive if possible 
> --------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-19698
>                 URL: https://issues.apache.org/jira/browse/CAMEL-19698
>             Project: Camel
>          Issue Type: Task
>          Components: camel-yaml-dsl
>            Reporter: Tomohisa Igarashi
>            Assignee: Luca Burgazzoli
>            Priority: Major
>
> For example currently YAML DSL allows specifying both "simple" and 
> "expression" under "when"
> {code:yaml}
> - from:
>     uri: "timer:test"
>     parameters:
>       period: 3000
>     steps:
>     - when:
>         simple: "${header.baz} != null"
>         expression:
>           simple: "${header.baz} == null"
>         steps:
>           - log: "test"
> {code}
> But at runtime only latter wins in this case. It would be nice if this 
> exclusiveness could be expressed in the schema.
> Similarly, this "anyOf" seems to allow specifying multiple expressions
> https://github.com/apache/camel/blob/36bcd6277854b8e69ca91a8d51845a306b1c2136/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camel-yaml-dsl.json#L3567-L3569
> for example
> {code:yaml}
> - from:
>     uri: "timer:test"
>     parameters:
>       period: 3000
>     steps:
>     - when:
>         simple: ${header.baz} != null
>         jq: ".foo"
>         steps:
>           - log: "test"
> {code}
> Although this ends up with a runtime error
> {noformat}
> 2023-08-02 14:27:29.445  INFO 1579388 --- [           main] 
> org.apache.camel.main.MainSupport   : Using Java 20.0.1 with PID 1579388. 
> Started by tomo in /home/tomo/workspace/Kaoto/datamapper-research/examples
> Field: jq has already been configured as an expression
>  in file:test.yaml, line 8, column 13:
>             jq: ".foo"
>                 ^
>       at 
> org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$WhenDefinitionDeserializer.setProperty(ModelDeserializers.java:18445)
>       at 
> org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$WhenDefinitionDeserializer.setProperty(ModelDeserializers.java:18385)
>       at 
> org.apache.camel.dsl.yaml.common.YamlDeserializerBase.setProperties(YamlDeserializerBase.java:125)
>       at 
> org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:65)
> {noformat}



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

Reply via email to