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