👍🙂

ajs6f <[email protected]> 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 <[email protected]> wrote:
> >
> > Injection of multiple instances based on configs may be a more
> challenging
> > thing. Worth to try it...
> >
> > ajs6f <[email protected]> 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 <[email protected]>
> wrote:
> >>>
> >>> yep.
> >>>
> >>> ajs6f <[email protected]> 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 <[email protected]>
> >> wrote:
> >>>>>
> >>>>> Writing a test case would be awesome. Good travels! Anatole
> >>>>>
> >>>>> ajs6f <[email protected]> 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 <[email protected]>
> >>>> 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 <[email protected]
> >:
> >>>>>>>
> >>>>>>>> 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 <[email protected]>
> >>>>>> 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 <[email protected]> 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]
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

Reply via email to