Note that using the -parameters flag in javac will require that we never change parameter names inside methods increasing the backwards compatibility burden.
On Thu, Jan 18, 2018 at 12:33 AM, Jean-Baptiste Onofré <j...@nanthrax.net> wrote: > Great idea ! > > It sounds good to me. > > Regards > JB > > On 01/18/2018 09:27 AM, Romain Manni-Bucau wrote: > >> @JB: thought about another option which can be almost hurtless for beam: >> >> 1. we ensure all "config" classes are public (would avoid nasty hacks) >> 2. while migrating to java 8 you activate the javac -parameters flag >> >> does it sound better? >> >> >> >> Romain Manni-Bucau >> @rmannibucau <https://twitter.com/rmannibucau> | Blog < >> https://rmannibucau.metawerx.net/> | Old Blog < >> http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibuca >> u> | LinkedIn <https://www.linkedin.com/in/rmannibucau> >> >> 2018-01-14 19:25 GMT+01:00 Romain Manni-Bucau <rmannibu...@gmail.com >> <mailto:rmannibu...@gmail.com>>: >> >> Works for me but forbids the usage of the abstract class cause of >> final >> fields. That said if beam can get a Factory.createIO(clazz, >> configAsPrimitivesMap) Im happy whatever solution is used. >> >> >> Le 14 janv. 2018 17:19, "Jean-Baptiste Onofré" <j...@nanthrax.net >> <mailto:j...@nanthrax.net>> a écrit : >> >> >> Hi Romain, >> >> I think the missing thing for automation projects is probably more >> around "documentation" for the setters/getters. >> >> So, why not: >> 1. we don't change the usage and AutoValue itself >> 2. we can imagine to add a new set of annotations in IO Common >> with a >> specific annotation processor that create another POJO class, not >> actually used in the IO code, but "describing" the configuration >> for >> automation projects. This POJO will be public, no final. >> >> WDYT ? >> >> Regards >> JB >> >> On 12/01/2018 19:26, Romain Manni-Bucau wrote: >> >> Hi guys >> >> I'd like to discuss the IO configuration. >> >> My goal is to be able to instrospect (or equivalent) the IO to >> instantiate them programmatically in a generic manner from a >> generic >> config - this is not yet linked to the system property topic >> but can >> benefit beam on this other topic too. >> >> Auto value loosing the final fields ordering is impossible to >> use >> until you parse sources. >> >> In other words: auto value is nice for programmatic usage but >> is >> blocking for any automotion on top of it - even using unsafe >> is not >> an option ATM :(. >> >> Can we try to get something to solve that need please? >> >> Here are the solutions I see (pick just one ;)): >> >> 1. migrate IO to IOOptions (based on pipeline options kind of >> design). This is a breaking change - but I'm sure we can >> mitigate it >> in term of user compatibility - but it unifies the beam >> config and >> enables to not have IO specific configurations which can vary >> between the IO if not developped by the same guy. >> 2. Add an extension to @AutoValue to also generate the field >> names >> order in the create() (@Fields({"address","username" >> ,"password"}). >> Cheap but the way to instantiate an IO from a config is still >> a pain >> (think Factory.createIO(clazz, properties)) >> 3. Also generate a plain pojo from the abstract @AutoValue >> class - >> this requires to modify the source class to make it working >> but is >> feasible with a processor >> 4. drop autovalue and use plain pojo - writing it cause it is >> a >> technical option but it leads to break as much as 1 without >> getting >> all the benefit to have an agnostic config and the tooling we >> can >> build on top of it >> 5. probably others >> >> >> Wdyt? >> >> Personally I really like 1 cause it starts to create a clean >> programming model we can then build other features on. >> >> >> Romain Manni-Bucau >> @rmannibucau <https://twitter.com/rmannibucau >> <https://twitter.com/rmannibucau>> | Blog >> <https://rmannibucau.metawerx.net/ >> <https://rmannibucau.metawerx.net/>> | Old Blog >> <http://rmannibucau.wordpress.com >> <http://rmannibucau.wordpress.com>> | Github >> <https://github.com/rmannibucau < >> https://github.com/rmannibucau>> | >> LinkedIn <https://www.linkedin.com/in/rmannibucau >> <https://www.linkedin.com/in/rmannibucau>> >> >> >> > -- > Jean-Baptiste Onofré > jbono...@apache.org > http://blog.nanthrax.net > Talend - http://www.talend.com >