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
>
>