Hi Thanks for all the feedback. Yeah naming in IT is hard, and so is also which operator syntax to use.
{{?foo}} vs {{foo?}} vs {{optional:foo}} vs {{foo:-}} I think the last one looks like a smiley ;) And you can also think of using query parameters style: {{foo?optional=true}} On Tue, Mar 9, 2021 at 6:16 AM Tadayoshi Sato <sato.tadayo...@gmail.com> wrote: > > Ah there is already the "?speedUp" notation to describe it as optional in > camel-main. Then I'm fine with {{?speedUp}} syntax to maintain consistency > within Camel. > https://camel.apache.org/components/latest/others/main.html#_optional_parameters_on_beans > > On Mon, Mar 8, 2021 at 2:25 PM Tadayoshi Sato <sato.tadayo...@gmail.com> > wrote: > > > Hi Zoran, > > > > Just in case, Properties component already provide the feature of > > specifying a default value with {{speedUp:other}} syntax: > > https://camel.apache.org/components/3.7.x/properties-component.html#_syntax > > > > So what Claus proposes here is a feature that optionally can assign some > > value but otherwise leaves it unassigned at all. > > I see Claus' point that the syntax {{optional:speedUp}} is really > > confusing as the properties component would then see it as the placeholder > > "optional" with default value "speedUp". > > > > Personally, I second Babak's syntax of {{speedUp?}} as it aligns with JS > > syntax and REST producer optional parameters Zoran introduced. > > > > Best regards, > > Tadayoshi > > > > On Sat, Mar 6, 2021 at 4:41 AM Zoran Regvart <zo...@regvart.com> wrote: > > > >> Hi Claus, > >> I like the bash shell parameter expansion[1], this allows for > >> specifying the default value if parameter doesn't expand. Something > >> like {{speedUp:-}} would be optional without a default value, whereas > >> {{speedUp:-other}} would provide `other` as a default value. > >> > >> For the REST producer bits I introduced optional parameters with a > >> trailing question mark, see[2]. Doing something consistent here would > >> be good I think. > >> > >> zoran > >> > >> [1] > >> https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html#Shell-Parameter-Expansion > >> [2] > >> https://github.com/apache/camel/blob/b040a056ddf1b8f0756516cd47c00f180f128c05/core/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerTest.java#L84 > >> > >> On Fri, Mar 5, 2021 at 3:04 PM Claus Ibsen <claus.ib...@gmail.com> wrote: > >> > > >> > Hi > >> > > >> > In Camel 3.9 we are introducing optional property placeholders. > >> > https://issues.apache.org/jira/browse/CAMEL-16302 > >> > > >> > The use-case is to allow configuring Camel endpoints (primarily) where > >> > you can specify some options that may be configured or not (optional). > >> > > >> > Currently all property placeholders are mandatory, unless a default > >> > value is provided. So with the default value, you could do "optional" > >> > but then you would need to know what the default value would be (if > >> > there is any). > >> > > >> > Optional placeholders is also a feature that we want to have with > >> > route templates (aka Kamelets). So you can create kamelets with a > >> > number of options (some are required, and others would be optional). > >> > And others have default values etc. > >> > > >> > The syntax for marking a property placeholder as option is to prefix > >> > the key name with ?, eg > >> > > >> > from("jms:cheese?concurrentConsumers={{?speedUp}}") > >> > > >> > Here the concurrent consumers option is optional, as the placeholder > >> > value starts with a ? in the key name. > >> > > >> > Then the Camel end user can configure the property placeholder, such > >> > as in application.properties > >> > > >> > speedUp=5 > >> > > >> > Or if there are no configuration, then the option is not present and > >> > the endpoint is resolved as: > >> > > >> > from("jms:cheese") > >> > > >> > > >> > The syntax with the ? mark was choose to keep it short. But we are > >> > open for feedback. > >> > Another alternative was to prefix with optional: > >> > > >> > {{optional:speedUp}} > >> > > >> > However the properties component in Camel then assume the key is named > >> > optional, and the default value is speedUp. So it clashes with this. > >> > But we could make "optional" a reserved word and do special handling > >> > for this. > >> > > >> > The only concern about using ? is that an endpoint uri already have ? > >> > for query parameters. And if using more ? would be confusing? > >> > > >> > > >> from("jms:cheese?concurrentConsumers={{?speedUp}}&subscrtiptionName={{someName}}") > >> > > >> > Any thoughts? > >> > > >> > > >> > -- > >> > Claus Ibsen > >> > ----------------- > >> > http://davsclaus.com @davsclaus > >> > Camel in Action 2: https://www.manning.com/ibsen2 > >> > >> > >> > >> -- > >> Zoran Regvart > >> > > > > > > -- > > Tadayoshi Sato > > > > > -- > Tadayoshi Sato -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2