@Lukasz: not really since if the parameters changes then the new version
will get the new data so this is not a constraint on beam but on the
configuration storage which must handle anyway versions compatibility
somehow so not a big deal IMHO.


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau>

2018-01-19 18:41 GMT+01:00 Lukasz Cwik <lc...@google.com>:

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

Reply via email to