You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tamaya.apache.org by ajs6f <aj...@apache.org> on 2018/10/18 15:51:34 UTC

using required= attribute of CDI @Config?

Hi, Tamaya folks!

I just tried using the required=false attribute of o.a.t.inject.api.Config, on a field, with a CDI project, a la:

@Inject
@Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" }, required = false)
private File configFile;

Unfortunately, it didn't seem to make the value truly optional. I got the expectable:

org.apache.tamaya.ConfigException: Cannot resolve any of the possible configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please provide one of the given keys with a value in your configuration sources.

Is required=false supported in that position, or am I misunderstanding its semantics?

Thanks!

ajs6f


Re: using required= attribute of CDI @Config?

Posted by Anatole Tresch <at...@gmail.com>.
👍🙂

ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 15:52:

> Challenging indeed, and to be done well it would have to present an API
> that is coherent with the use of collections in config.
>
> Perhaps I'll try to write a test case, and then if that goes well I'll
> worry about asking for new API. :grin:
>
> ajs6f
>
> > On Oct 19, 2018, at 9:50 AM, Anatole Tresch <at...@gmail.com> wrote:
> >
> > Injection of multiple instances based on configs may be a more
> challenging
> > thing. Worth to try it...
> >
> > ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 15:46:
> >
> >> Cool. I will take a look at a test case / documentation PR sometime this
> >> coming week.
> >>
> >> From the point of view of a consistent API, what do you think of the
> idea
> >> of deprecating the required= attribute and instead saying that every
> >> optional injection should be written as Optional<T> myInjection; ? It
> has
> >> the advantages of consistency and that it reuses Java API. It has the
> >> disadvantage of being a bit more verbose in many cases, and potentially
> >> burring the semantics...
> >>
> >> I'm by no means the kind to slather Optional<> all over the place--
> >> anywhere other than a return type, it's usually a bad idea in my
> >> experience. I think injection is a bit special, however. In a sense, the
> >> type of an injected value is both a received type (from the POV of the
> >> injected code) for which Optional<> isn't a good idea, and a produced
> type
> >> (from the POV of the framework) for which it is at least a reasonable
> >> choice, so I don't think it's totally crazy to turn to Optional<> in
> this
> >> circumstance, although I admit it's a bit strange. We see a similar
> pattern
> >> in the javax.enterprise.inject.Instance<> type, but that pre-dates
> >> Optional<> and is additionally responsible for providing access to
> multiple
> >> potential values for injection. Maybe Tamaya should support @Inject
> >> Instance<MyType> for optional config values in order to fit better with
> >> extant API?
> >>
> >> ajs6f
> >>
> >>> On Oct 19, 2018, at 9:38 AM, Anatole Tresch <at...@gmail.com>
> wrote:
> >>>
> >>> yep.
> >>>
> >>> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 13:25:
> >>>
> >>>> Thanks! To be clear, the behavior should be:
> >>>>
> >>>> required=false does _not_ work for CDI, because of underlying
> >> constraints.
> >>>>
> >>>> Optional<T> _does_ work with CDI, as an alternative.
> >>>>
> >>>> Correct?
> >>>>
> >>>> ajs6f
> >>>>
> >>>>> On Oct 19, 2018, at 4:02 AM, Anatole Tresch <at...@gmail.com>
> >> wrote:
> >>>>>
> >>>>> Writing a test case would be awesome. Good travels! Anatole
> >>>>>
> >>>>> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:
> >>>>>
> >>>>>> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
> >>>>>>
> >>>>>> I hope that is clear-- let me know if not. I can try to write a test
> >>>> case.
> >>>>>> (Traveling for the next week or so, so after that.)
> >>>>>>
> >>>>>> ajs6f
> >>>>>>
> >>>>>>> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com>
> >>>> wrote:
> >>>>>>>
> >>>>>>> I consider this is a bug, can you file one ? Would be awesome !
> >>>>>>>
> >>>>>>> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <ajs6f@apache.org
> >:
> >>>>>>>
> >>>>>>>> I'm afraid that didn't quite work (no change in behavior).
> >>>>>>>>
> >>>>>>>> Did I correctly understand you to mean this?
> >>>>>>>>
> >>>>>>>> @Inject
> >>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
> >>>>>>>> private Optional<File> configFile;
> >>>>>>>>
> >>>>>>>> I've also tried it with required=false:
> >>>>>>>>
> >>>>>>>> @Inject
> >>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >>>>>>>> required = false)
> >>>>>>>> private Optional<File> configFile;
> >>>>>>>>
> >>>>>>>> with the same behavior...
> >>>>>>>>
> >>>>>>>> ajs6f
> >>>>>>>>
> >>>>>>>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
> >>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> the problem is that CDI dies not support optional values in this
> >> way,
> >>>>>>>> this
> >>>>>>>>> works in a non cdi env e.g. Spring, osgi.... What should work is
> >>>>>>>> injecting
> >>>>>>>>> an Optional<File>.
> >>>>>>>>>
> >>>>>>>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
> >>>>>>>>>
> >>>>>>>>>> Hi, Tamaya folks!
> >>>>>>>>>>
> >>>>>>>>>> I just tried using the required=false attribute of
> >>>>>>>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
> >>>>>>>>>>
> >>>>>>>>>> @Inject
> >>>>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >>>>>>>> required
> >>>>>>>>>> = false)
> >>>>>>>>>> private File configFile;
> >>>>>>>>>>
> >>>>>>>>>> Unfortunately, it didn't seem to make the value truly optional.
> I
> >>>> got
> >>>>>>>> the
> >>>>>>>>>> expectable:
> >>>>>>>>>>
> >>>>>>>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the
> >>>> possible
> >>>>>>>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE].
> >>>> Please
> >>>>>>>>>> provide one of the given keys with a value in your configuration
> >>>>>>>> sources.
> >>>>>>>>>>
> >>>>>>>>>> Is required=false supported in that position, or am I
> >>>> misunderstanding
> >>>>>>>> its
> >>>>>>>>>> semantics?
> >>>>>>>>>>
> >>>>>>>>>> Thanks!
> >>>>>>>>>>
> >>>>>>>>>> ajs6f
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> *Anatole Tresch*
> >>>>>>> PPMC Member Apache Tamaya
> >>>>>>> JCP Star Spec Lead
> >>>>>>> *Switzerland, Europe Zurich, GMT+1*
> >>>>>>> *maketechsimple.wordpress.com <
> http://maketechsimple.wordpress.com/>
> >> *
> >>>>>>> *Twitter:  @atsticks, @tamayaconf*
> >>>>>>>
> >>>>>>> *Speaking at:*
> >>>>>>>
> >>>>>>> [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

Re: using required= attribute of CDI @Config?

Posted by ajs6f <aj...@apache.org>.
Challenging indeed, and to be done well it would have to present an API that is coherent with the use of collections in config.

Perhaps I'll try to write a test case, and then if that goes well I'll worry about asking for new API. :grin:

ajs6f

> On Oct 19, 2018, at 9:50 AM, Anatole Tresch <at...@gmail.com> wrote:
> 
> Injection of multiple instances based on configs may be a more challenging
> thing. Worth to try it...
> 
> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 15:46:
> 
>> Cool. I will take a look at a test case / documentation PR sometime this
>> coming week.
>> 
>> From the point of view of a consistent API, what do you think of the idea
>> of deprecating the required= attribute and instead saying that every
>> optional injection should be written as Optional<T> myInjection; ? It has
>> the advantages of consistency and that it reuses Java API. It has the
>> disadvantage of being a bit more verbose in many cases, and potentially
>> burring the semantics...
>> 
>> I'm by no means the kind to slather Optional<> all over the place--
>> anywhere other than a return type, it's usually a bad idea in my
>> experience. I think injection is a bit special, however. In a sense, the
>> type of an injected value is both a received type (from the POV of the
>> injected code) for which Optional<> isn't a good idea, and a produced type
>> (from the POV of the framework) for which it is at least a reasonable
>> choice, so I don't think it's totally crazy to turn to Optional<> in this
>> circumstance, although I admit it's a bit strange. We see a similar pattern
>> in the javax.enterprise.inject.Instance<> type, but that pre-dates
>> Optional<> and is additionally responsible for providing access to multiple
>> potential values for injection. Maybe Tamaya should support @Inject
>> Instance<MyType> for optional config values in order to fit better with
>> extant API?
>> 
>> ajs6f
>> 
>>> On Oct 19, 2018, at 9:38 AM, Anatole Tresch <at...@gmail.com> wrote:
>>> 
>>> yep.
>>> 
>>> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 13:25:
>>> 
>>>> Thanks! To be clear, the behavior should be:
>>>> 
>>>> required=false does _not_ work for CDI, because of underlying
>> constraints.
>>>> 
>>>> Optional<T> _does_ work with CDI, as an alternative.
>>>> 
>>>> Correct?
>>>> 
>>>> ajs6f
>>>> 
>>>>> On Oct 19, 2018, at 4:02 AM, Anatole Tresch <at...@gmail.com>
>> wrote:
>>>>> 
>>>>> Writing a test case would be awesome. Good travels! Anatole
>>>>> 
>>>>> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:
>>>>> 
>>>>>> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
>>>>>> 
>>>>>> I hope that is clear-- let me know if not. I can try to write a test
>>>> case.
>>>>>> (Traveling for the next week or so, so after that.)
>>>>>> 
>>>>>> ajs6f
>>>>>> 
>>>>>>> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com>
>>>> wrote:
>>>>>>> 
>>>>>>> I consider this is a bug, can you file one ? Would be awesome !
>>>>>>> 
>>>>>>> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
>>>>>>> 
>>>>>>>> I'm afraid that didn't quite work (no change in behavior).
>>>>>>>> 
>>>>>>>> Did I correctly understand you to mean this?
>>>>>>>> 
>>>>>>>> @Inject
>>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
>>>>>>>> private Optional<File> configFile;
>>>>>>>> 
>>>>>>>> I've also tried it with required=false:
>>>>>>>> 
>>>>>>>> @Inject
>>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>>>>>>>> required = false)
>>>>>>>> private Optional<File> configFile;
>>>>>>>> 
>>>>>>>> with the same behavior...
>>>>>>>> 
>>>>>>>> ajs6f
>>>>>>>> 
>>>>>>>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> the problem is that CDI dies not support optional values in this
>> way,
>>>>>>>> this
>>>>>>>>> works in a non cdi env e.g. Spring, osgi.... What should work is
>>>>>>>> injecting
>>>>>>>>> an Optional<File>.
>>>>>>>>> 
>>>>>>>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
>>>>>>>>> 
>>>>>>>>>> Hi, Tamaya folks!
>>>>>>>>>> 
>>>>>>>>>> I just tried using the required=false attribute of
>>>>>>>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
>>>>>>>>>> 
>>>>>>>>>> @Inject
>>>>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>>>>>>>> required
>>>>>>>>>> = false)
>>>>>>>>>> private File configFile;
>>>>>>>>>> 
>>>>>>>>>> Unfortunately, it didn't seem to make the value truly optional. I
>>>> got
>>>>>>>> the
>>>>>>>>>> expectable:
>>>>>>>>>> 
>>>>>>>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the
>>>> possible
>>>>>>>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE].
>>>> Please
>>>>>>>>>> provide one of the given keys with a value in your configuration
>>>>>>>> sources.
>>>>>>>>>> 
>>>>>>>>>> Is required=false supported in that position, or am I
>>>> misunderstanding
>>>>>>>> its
>>>>>>>>>> semantics?
>>>>>>>>>> 
>>>>>>>>>> Thanks!
>>>>>>>>>> 
>>>>>>>>>> ajs6f
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> *Anatole Tresch*
>>>>>>> PPMC Member Apache Tamaya
>>>>>>> JCP Star Spec Lead
>>>>>>> *Switzerland, Europe Zurich, GMT+1*
>>>>>>> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/>
>> *
>>>>>>> *Twitter:  @atsticks, @tamayaconf*
>>>>>>> 
>>>>>>> *Speaking at:*
>>>>>>> 
>>>>>>> [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> 


Re: using required= attribute of CDI @Config?

Posted by Anatole Tresch <at...@gmail.com>.
Injection of multiple instances based on configs may be a more challenging
thing. Worth to try it...

ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 15:46:

> Cool. I will take a look at a test case / documentation PR sometime this
> coming week.
>
> From the point of view of a consistent API, what do you think of the idea
> of deprecating the required= attribute and instead saying that every
> optional injection should be written as Optional<T> myInjection; ? It has
> the advantages of consistency and that it reuses Java API. It has the
> disadvantage of being a bit more verbose in many cases, and potentially
> burring the semantics...
>
> I'm by no means the kind to slather Optional<> all over the place--
> anywhere other than a return type, it's usually a bad idea in my
> experience. I think injection is a bit special, however. In a sense, the
> type of an injected value is both a received type (from the POV of the
> injected code) for which Optional<> isn't a good idea, and a produced type
> (from the POV of the framework) for which it is at least a reasonable
> choice, so I don't think it's totally crazy to turn to Optional<> in this
> circumstance, although I admit it's a bit strange. We see a similar pattern
> in the javax.enterprise.inject.Instance<> type, but that pre-dates
> Optional<> and is additionally responsible for providing access to multiple
> potential values for injection. Maybe Tamaya should support @Inject
> Instance<MyType> for optional config values in order to fit better with
> extant API?
>
> ajs6f
>
> > On Oct 19, 2018, at 9:38 AM, Anatole Tresch <at...@gmail.com> wrote:
> >
> > yep.
> >
> > ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 13:25:
> >
> >> Thanks! To be clear, the behavior should be:
> >>
> >> required=false does _not_ work for CDI, because of underlying
> constraints.
> >>
> >> Optional<T> _does_ work with CDI, as an alternative.
> >>
> >> Correct?
> >>
> >> ajs6f
> >>
> >>> On Oct 19, 2018, at 4:02 AM, Anatole Tresch <at...@gmail.com>
> wrote:
> >>>
> >>> Writing a test case would be awesome. Good travels! Anatole
> >>>
> >>> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:
> >>>
> >>>> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
> >>>>
> >>>> I hope that is clear-- let me know if not. I can try to write a test
> >> case.
> >>>> (Traveling for the next week or so, so after that.)
> >>>>
> >>>> ajs6f
> >>>>
> >>>>> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com>
> >> wrote:
> >>>>>
> >>>>> I consider this is a bug, can you file one ? Would be awesome !
> >>>>>
> >>>>> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
> >>>>>
> >>>>>> I'm afraid that didn't quite work (no change in behavior).
> >>>>>>
> >>>>>> Did I correctly understand you to mean this?
> >>>>>>
> >>>>>>  @Inject
> >>>>>>  @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
> >>>>>>  private Optional<File> configFile;
> >>>>>>
> >>>>>> I've also tried it with required=false:
> >>>>>>
> >>>>>>  @Inject
> >>>>>>  @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >>>>>> required = false)
> >>>>>>  private Optional<File> configFile;
> >>>>>>
> >>>>>> with the same behavior...
> >>>>>>
> >>>>>> ajs6f
> >>>>>>
> >>>>>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
> >>>> wrote:
> >>>>>>>
> >>>>>>> the problem is that CDI dies not support optional values in this
> way,
> >>>>>> this
> >>>>>>> works in a non cdi env e.g. Spring, osgi.... What should work is
> >>>>>> injecting
> >>>>>>> an Optional<File>.
> >>>>>>>
> >>>>>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
> >>>>>>>
> >>>>>>>> Hi, Tamaya folks!
> >>>>>>>>
> >>>>>>>> I just tried using the required=false attribute of
> >>>>>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
> >>>>>>>>
> >>>>>>>> @Inject
> >>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >>>>>> required
> >>>>>>>> = false)
> >>>>>>>> private File configFile;
> >>>>>>>>
> >>>>>>>> Unfortunately, it didn't seem to make the value truly optional. I
> >> got
> >>>>>> the
> >>>>>>>> expectable:
> >>>>>>>>
> >>>>>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the
> >> possible
> >>>>>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE].
> >> Please
> >>>>>>>> provide one of the given keys with a value in your configuration
> >>>>>> sources.
> >>>>>>>>
> >>>>>>>> Is required=false supported in that position, or am I
> >> misunderstanding
> >>>>>> its
> >>>>>>>> semantics?
> >>>>>>>>
> >>>>>>>> Thanks!
> >>>>>>>>
> >>>>>>>> ajs6f
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>> --
> >>>>> *Anatole Tresch*
> >>>>> PPMC Member Apache Tamaya
> >>>>> JCP Star Spec Lead
> >>>>> *Switzerland, Europe Zurich, GMT+1*
> >>>>> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/>
> *
> >>>>> *Twitter:  @atsticks, @tamayaconf*
> >>>>>
> >>>>> *Speaking at:*
> >>>>>
> >>>>> [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
> >>>>
> >>>>
> >>
> >>
>
>

Re: using required= attribute of CDI @Config?

Posted by ajs6f <aj...@apache.org>.
Cool. I will take a look at a test case / documentation PR sometime this coming week. 

From the point of view of a consistent API, what do you think of the idea of deprecating the required= attribute and instead saying that every optional injection should be written as Optional<T> myInjection; ? It has the advantages of consistency and that it reuses Java API. It has the disadvantage of being a bit more verbose in many cases, and potentially burring the semantics...

I'm by no means the kind to slather Optional<> all over the place-- anywhere other than a return type, it's usually a bad idea in my experience. I think injection is a bit special, however. In a sense, the type of an injected value is both a received type (from the POV of the injected code) for which Optional<> isn't a good idea, and a produced type (from the POV of the framework) for which it is at least a reasonable choice, so I don't think it's totally crazy to turn to Optional<> in this circumstance, although I admit it's a bit strange. We see a similar pattern in the javax.enterprise.inject.Instance<> type, but that pre-dates Optional<> and is additionally responsible for providing access to multiple potential values for injection. Maybe Tamaya should support @Inject Instance<MyType> for optional config values in order to fit better with extant API?

ajs6f

> On Oct 19, 2018, at 9:38 AM, Anatole Tresch <at...@gmail.com> wrote:
> 
> yep.
> 
> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 13:25:
> 
>> Thanks! To be clear, the behavior should be:
>> 
>> required=false does _not_ work for CDI, because of underlying constraints.
>> 
>> Optional<T> _does_ work with CDI, as an alternative.
>> 
>> Correct?
>> 
>> ajs6f
>> 
>>> On Oct 19, 2018, at 4:02 AM, Anatole Tresch <at...@gmail.com> wrote:
>>> 
>>> Writing a test case would be awesome. Good travels! Anatole
>>> 
>>> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:
>>> 
>>>> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
>>>> 
>>>> I hope that is clear-- let me know if not. I can try to write a test
>> case.
>>>> (Traveling for the next week or so, so after that.)
>>>> 
>>>> ajs6f
>>>> 
>>>>> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com>
>> wrote:
>>>>> 
>>>>> I consider this is a bug, can you file one ? Would be awesome !
>>>>> 
>>>>> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
>>>>> 
>>>>>> I'm afraid that didn't quite work (no change in behavior).
>>>>>> 
>>>>>> Did I correctly understand you to mean this?
>>>>>> 
>>>>>>  @Inject
>>>>>>  @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
>>>>>>  private Optional<File> configFile;
>>>>>> 
>>>>>> I've also tried it with required=false:
>>>>>> 
>>>>>>  @Inject
>>>>>>  @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>>>>>> required = false)
>>>>>>  private Optional<File> configFile;
>>>>>> 
>>>>>> with the same behavior...
>>>>>> 
>>>>>> ajs6f
>>>>>> 
>>>>>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
>>>> wrote:
>>>>>>> 
>>>>>>> the problem is that CDI dies not support optional values in this way,
>>>>>> this
>>>>>>> works in a non cdi env e.g. Spring, osgi.... What should work is
>>>>>> injecting
>>>>>>> an Optional<File>.
>>>>>>> 
>>>>>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
>>>>>>> 
>>>>>>>> Hi, Tamaya folks!
>>>>>>>> 
>>>>>>>> I just tried using the required=false attribute of
>>>>>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
>>>>>>>> 
>>>>>>>> @Inject
>>>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>>>>>> required
>>>>>>>> = false)
>>>>>>>> private File configFile;
>>>>>>>> 
>>>>>>>> Unfortunately, it didn't seem to make the value truly optional. I
>> got
>>>>>> the
>>>>>>>> expectable:
>>>>>>>> 
>>>>>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the
>> possible
>>>>>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE].
>> Please
>>>>>>>> provide one of the given keys with a value in your configuration
>>>>>> sources.
>>>>>>>> 
>>>>>>>> Is required=false supported in that position, or am I
>> misunderstanding
>>>>>> its
>>>>>>>> semantics?
>>>>>>>> 
>>>>>>>> Thanks!
>>>>>>>> 
>>>>>>>> ajs6f
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> --
>>>>> *Anatole Tresch*
>>>>> PPMC Member Apache Tamaya
>>>>> JCP Star Spec Lead
>>>>> *Switzerland, Europe Zurich, GMT+1*
>>>>> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> *
>>>>> *Twitter:  @atsticks, @tamayaconf*
>>>>> 
>>>>> *Speaking at:*
>>>>> 
>>>>> [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
>>>> 
>>>> 
>> 
>> 


Re: using required= attribute of CDI @Config?

Posted by Anatole Tresch <at...@gmail.com>.
yep.

ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 13:25:

> Thanks! To be clear, the behavior should be:
>
> required=false does _not_ work for CDI, because of underlying constraints.
>
> Optional<T> _does_ work with CDI, as an alternative.
>
> Correct?
>
> ajs6f
>
> > On Oct 19, 2018, at 4:02 AM, Anatole Tresch <at...@gmail.com> wrote:
> >
> > Writing a test case would be awesome. Good travels! Anatole
> >
> > ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:
> >
> >> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
> >>
> >> I hope that is clear-- let me know if not. I can try to write a test
> case.
> >> (Traveling for the next week or so, so after that.)
> >>
> >> ajs6f
> >>
> >>> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com>
> wrote:
> >>>
> >>> I consider this is a bug, can you file one ? Would be awesome !
> >>>
> >>> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
> >>>
> >>>> I'm afraid that didn't quite work (no change in behavior).
> >>>>
> >>>> Did I correctly understand you to mean this?
> >>>>
> >>>>   @Inject
> >>>>   @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
> >>>>   private Optional<File> configFile;
> >>>>
> >>>> I've also tried it with required=false:
> >>>>
> >>>>   @Inject
> >>>>   @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >>>> required = false)
> >>>>   private Optional<File> configFile;
> >>>>
> >>>> with the same behavior...
> >>>>
> >>>> ajs6f
> >>>>
> >>>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
> >> wrote:
> >>>>>
> >>>>> the problem is that CDI dies not support optional values in this way,
> >>>> this
> >>>>> works in a non cdi env e.g. Spring, osgi.... What should work is
> >>>> injecting
> >>>>> an Optional<File>.
> >>>>>
> >>>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
> >>>>>
> >>>>>> Hi, Tamaya folks!
> >>>>>>
> >>>>>> I just tried using the required=false attribute of
> >>>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
> >>>>>>
> >>>>>> @Inject
> >>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >>>> required
> >>>>>> = false)
> >>>>>> private File configFile;
> >>>>>>
> >>>>>> Unfortunately, it didn't seem to make the value truly optional. I
> got
> >>>> the
> >>>>>> expectable:
> >>>>>>
> >>>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the
> possible
> >>>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE].
> Please
> >>>>>> provide one of the given keys with a value in your configuration
> >>>> sources.
> >>>>>>
> >>>>>> Is required=false supported in that position, or am I
> misunderstanding
> >>>> its
> >>>>>> semantics?
> >>>>>>
> >>>>>> Thanks!
> >>>>>>
> >>>>>> ajs6f
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>
> >>> --
> >>> *Anatole Tresch*
> >>> PPMC Member Apache Tamaya
> >>> JCP Star Spec Lead
> >>> *Switzerland, Europe Zurich, GMT+1*
> >>> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> *
> >>> *Twitter:  @atsticks, @tamayaconf*
> >>>
> >>> *Speaking at:*
> >>>
> >>> [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
> >>
> >>
>
>

Re: using required= attribute of CDI @Config?

Posted by ajs6f <aj...@apache.org>.
Thanks! To be clear, the behavior should be:

required=false does _not_ work for CDI, because of underlying constraints.

Optional<T> _does_ work with CDI, as an alternative.

Correct?

ajs6f

> On Oct 19, 2018, at 4:02 AM, Anatole Tresch <at...@gmail.com> wrote:
> 
> Writing a test case would be awesome. Good travels! Anatole
> 
> ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:
> 
>> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
>> 
>> I hope that is clear-- let me know if not. I can try to write a test case.
>> (Traveling for the next week or so, so after that.)
>> 
>> ajs6f
>> 
>>> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com> wrote:
>>> 
>>> I consider this is a bug, can you file one ? Would be awesome !
>>> 
>>> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
>>> 
>>>> I'm afraid that didn't quite work (no change in behavior).
>>>> 
>>>> Did I correctly understand you to mean this?
>>>> 
>>>>   @Inject
>>>>   @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
>>>>   private Optional<File> configFile;
>>>> 
>>>> I've also tried it with required=false:
>>>> 
>>>>   @Inject
>>>>   @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>>>> required = false)
>>>>   private Optional<File> configFile;
>>>> 
>>>> with the same behavior...
>>>> 
>>>> ajs6f
>>>> 
>>>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
>> wrote:
>>>>> 
>>>>> the problem is that CDI dies not support optional values in this way,
>>>> this
>>>>> works in a non cdi env e.g. Spring, osgi.... What should work is
>>>> injecting
>>>>> an Optional<File>.
>>>>> 
>>>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
>>>>> 
>>>>>> Hi, Tamaya folks!
>>>>>> 
>>>>>> I just tried using the required=false attribute of
>>>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
>>>>>> 
>>>>>> @Inject
>>>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>>>> required
>>>>>> = false)
>>>>>> private File configFile;
>>>>>> 
>>>>>> Unfortunately, it didn't seem to make the value truly optional. I got
>>>> the
>>>>>> expectable:
>>>>>> 
>>>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the possible
>>>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please
>>>>>> provide one of the given keys with a value in your configuration
>>>> sources.
>>>>>> 
>>>>>> Is required=false supported in that position, or am I misunderstanding
>>>> its
>>>>>> semantics?
>>>>>> 
>>>>>> Thanks!
>>>>>> 
>>>>>> ajs6f
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>> 
>>> --
>>> *Anatole Tresch*
>>> PPMC Member Apache Tamaya
>>> JCP Star Spec Lead
>>> *Switzerland, Europe Zurich, GMT+1*
>>> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> *
>>> *Twitter:  @atsticks, @tamayaconf*
>>> 
>>> *Speaking at:*
>>> 
>>> [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
>> 
>> 


Re: using required= attribute of CDI @Config?

Posted by Anatole Tresch <at...@gmail.com>.
Writing a test case would be awesome. Good travels! Anatole

ajs6f <aj...@apache.org> schrieb am Fr., 19. Okt. 2018, 02:11:

> Glad to: https://issues.apache.org/jira/browse/TAMAYA-358
>
> I hope that is clear-- let me know if not. I can try to write a test case.
> (Traveling for the next week or so, so after that.)
>
> ajs6f
>
> > On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com> wrote:
> >
> > I consider this is a bug, can you file one ? Would be awesome !
> >
> > Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
> >
> >> I'm afraid that didn't quite work (no change in behavior).
> >>
> >> Did I correctly understand you to mean this?
> >>
> >>    @Inject
> >>    @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
> >>    private Optional<File> configFile;
> >>
> >> I've also tried it with required=false:
> >>
> >>    @Inject
> >>    @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >> required = false)
> >>    private Optional<File> configFile;
> >>
> >> with the same behavior...
> >>
> >> ajs6f
> >>
> >>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com>
> wrote:
> >>>
> >>> the problem is that CDI dies not support optional values in this way,
> >> this
> >>> works in a non cdi env e.g. Spring, osgi.... What should work is
> >> injecting
> >>> an Optional<File>.
> >>>
> >>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
> >>>
> >>>> Hi, Tamaya folks!
> >>>>
> >>>> I just tried using the required=false attribute of
> >>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
> >>>>
> >>>> @Inject
> >>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> >> required
> >>>> = false)
> >>>> private File configFile;
> >>>>
> >>>> Unfortunately, it didn't seem to make the value truly optional. I got
> >> the
> >>>> expectable:
> >>>>
> >>>> org.apache.tamaya.ConfigException: Cannot resolve any of the possible
> >>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please
> >>>> provide one of the given keys with a value in your configuration
> >> sources.
> >>>>
> >>>> Is required=false supported in that position, or am I misunderstanding
> >> its
> >>>> semantics?
> >>>>
> >>>> Thanks!
> >>>>
> >>>> ajs6f
> >>>>
> >>>>
> >>
> >>
> >
> > --
> > *Anatole Tresch*
> > PPMC Member Apache Tamaya
> > JCP Star Spec Lead
> > *Switzerland, Europe Zurich, GMT+1*
> > *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> *
> > *Twitter:  @atsticks, @tamayaconf*
> >
> > *Speaking at:*
> >
> >  [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]
>
>

Re: using required= attribute of CDI @Config?

Posted by ajs6f <aj...@apache.org>.
Glad to: https://issues.apache.org/jira/browse/TAMAYA-358

I hope that is clear-- let me know if not. I can try to write a test case. (Traveling for the next week or so, so after that.)

ajs6f

> On Oct 18, 2018, at 7:56 PM, Anatole Tresch <at...@gmail.com> wrote:
> 
> I consider this is a bug, can you file one ? Would be awesome !
> 
> Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:
> 
>> I'm afraid that didn't quite work (no change in behavior).
>> 
>> Did I correctly understand you to mean this?
>> 
>>    @Inject
>>    @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
>>    private Optional<File> configFile;
>> 
>> I've also tried it with required=false:
>> 
>>    @Inject
>>    @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>> required = false)
>>    private Optional<File> configFile;
>> 
>> with the same behavior...
>> 
>> ajs6f
>> 
>>> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com> wrote:
>>> 
>>> the problem is that CDI dies not support optional values in this way,
>> this
>>> works in a non cdi env e.g. Spring, osgi.... What should work is
>> injecting
>>> an Optional<File>.
>>> 
>>> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
>>> 
>>>> Hi, Tamaya folks!
>>>> 
>>>> I just tried using the required=false attribute of
>>>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
>>>> 
>>>> @Inject
>>>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
>> required
>>>> = false)
>>>> private File configFile;
>>>> 
>>>> Unfortunately, it didn't seem to make the value truly optional. I got
>> the
>>>> expectable:
>>>> 
>>>> org.apache.tamaya.ConfigException: Cannot resolve any of the possible
>>>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please
>>>> provide one of the given keys with a value in your configuration
>> sources.
>>>> 
>>>> Is required=false supported in that position, or am I misunderstanding
>> its
>>>> semantics?
>>>> 
>>>> Thanks!
>>>> 
>>>> ajs6f
>>>> 
>>>> 
>> 
>> 
> 
> -- 
> *Anatole Tresch*
> PPMC Member Apache Tamaya
> JCP Star Spec Lead
> *Switzerland, Europe Zurich, GMT+1*
> *maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> *
> *Twitter:  @atsticks, @tamayaconf*
> 
> *Speaking at:*
> 
>  [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]


Re: using required= attribute of CDI @Config?

Posted by Anatole Tresch <at...@gmail.com>.
I consider this is a bug, can you file one ? Would be awesome !

Am Fr., 19. Okt. 2018 um 01:04 Uhr schrieb ajs6f <aj...@apache.org>:

> I'm afraid that didn't quite work (no change in behavior).
>
> Did I correctly understand you to mean this?
>
>     @Inject
>     @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
>     private Optional<File> configFile;
>
> I've also tried it with required=false:
>
>     @Inject
>     @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> required = false)
>     private Optional<File> configFile;
>
> with the same behavior...
>
> ajs6f
>
> > On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com> wrote:
> >
> > the problem is that CDI dies not support optional values in this way,
> this
> > works in a non cdi env e.g. Spring, osgi.... What should work is
> injecting
> > an Optional<File>.
> >
> > ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
> >
> >> Hi, Tamaya folks!
> >>
> >> I just tried using the required=false attribute of
> >> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
> >>
> >> @Inject
> >> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" },
> required
> >> = false)
> >> private File configFile;
> >>
> >> Unfortunately, it didn't seem to make the value truly optional. I got
> the
> >> expectable:
> >>
> >> org.apache.tamaya.ConfigException: Cannot resolve any of the possible
> >> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please
> >> provide one of the given keys with a value in your configuration
> sources.
> >>
> >> Is required=false supported in that position, or am I misunderstanding
> its
> >> semantics?
> >>
> >> Thanks!
> >>
> >> ajs6f
> >>
> >>
>
>

-- 
*Anatole Tresch*
PPMC Member Apache Tamaya
JCP Star Spec Lead
*Switzerland, Europe Zurich, GMT+1*
*maketechsimple.wordpress.com <http://maketechsimple.wordpress.com/> *
*Twitter:  @atsticks, @tamayaconf*

*Speaking at:*

  [image: JSD_Speaker_2017][image: J-Con 2017 logo][image: JVM Con]

Re: using required= attribute of CDI @Config?

Posted by ajs6f <aj...@apache.org>.
I'm afraid that didn't quite work (no change in behavior). 

Did I correctly understand you to mean this?

    @Inject
    @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" })
    private Optional<File> configFile;

I've also tried it with required=false:

    @Inject
    @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" }, required = false)
    private Optional<File> configFile;

with the same behavior...

ajs6f

> On Oct 18, 2018, at 6:02 PM, Anatole Tresch <at...@gmail.com> wrote:
> 
> the problem is that CDI dies not support optional values in this way, this
> works in a non cdi env e.g. Spring, osgi.... What should work is injecting
> an Optional<File>.
> 
> ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:
> 
>> Hi, Tamaya folks!
>> 
>> I just tried using the required=false attribute of
>> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
>> 
>> @Inject
>> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" }, required
>> = false)
>> private File configFile;
>> 
>> Unfortunately, it didn't seem to make the value truly optional. I got the
>> expectable:
>> 
>> org.apache.tamaya.ConfigException: Cannot resolve any of the possible
>> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please
>> provide one of the given keys with a value in your configuration sources.
>> 
>> Is required=false supported in that position, or am I misunderstanding its
>> semantics?
>> 
>> Thanks!
>> 
>> ajs6f
>> 
>> 


Re: using required= attribute of CDI @Config?

Posted by Anatole Tresch <at...@gmail.com>.
the problem is that CDI dies not support optional values in this way, this
works in a non cdi env e.g. Spring, osgi.... What should work is injecting
an Optional<File>.

ajs6f <aj...@apache.org> schrieb am Do., 18. Okt. 2018, 17:51:

> Hi, Tamaya folks!
>
> I just tried using the required=false attribute of
> o.a.t.inject.api.Config, on a field, with a CDI project, a la:
>
> @Inject
> @Config(value = { "trellis.configFile", "TRELLIS_CONFIG_FILE" }, required
> = false)
> private File configFile;
>
> Unfortunately, it didn't seem to make the value truly optional. I got the
> expectable:
>
> org.apache.tamaya.ConfigException: Cannot resolve any of the possible
> configuration keys: [trellis.configFile, TRELLIS_CONFIG_FILE]. Please
> provide one of the given keys with a value in your configuration sources.
>
> Is required=false supported in that position, or am I misunderstanding its
> semantics?
>
> Thanks!
>
> ajs6f
>
>