Yes, we moves a few steps forward - was waiting before speaking of it but seems it led to it.
Idea is to prepend a prefix per IO in the key. Currently the easiest working solution is to sanitize the transform/fn name (since we validate the unicity by default) and we are done. If not znough we can pass the actual prefix to use in the pipeline but I doubt we need to be that fancy. Logic would just be like https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java#L1542 at the end. Le 12 janv. 2018 20:39, "Lukasz Cwik" <lc...@google.com> a écrit : Your original proposal was too vague so I was extrapolating on what I thought you meant. At this point it seems like what I extrapolated and what your talking about are far enough apart that I can't extrapolate what you mean and you'll need to be significantly more detailed in what your suggesting. With the system property approach, how would a user use the same IO multiple times? On Fri, Jan 12, 2018 at 10:18 AM, Romain Manni-Bucau <rmannibu...@gmail.com> wrote: > > 2018-01-12 19:12 GMT+01:00 Lukasz Cwik <lc...@google.com>: > >> >> >> On Fri, Jan 12, 2018 at 10:01 AM, Romain Manni-Bucau < >> rmannibu...@gmail.com> wrote: >> >>> >>> 2018-01-12 18:54 GMT+01:00 Lukasz Cwik <lc...@google.com>: >>> >>>> Some concerns would be: >>>> * How does a user discover what options can be set and what values they >>>> take? >>>> >>> >>> Tempted to say "same as today", what's the regression you would see? A >>> --verbose can be nice thought to dump the DAG at startup (before >>> translation) - but with this impl or not ;). >>> >> PipelineOptionsFactory supports passing in "--help" which prints all the >> descriptions of what options it is aware of that can be set to the >> terminal. Also, users can find all PipelineOptions interfaces and all >> sub-interfaces using an IDE or javadoc. >> > > Yep, same except it would be enriched with the (included optional > prefixes). > > But still misses the DAG dump which is valuable to go one step further and > allows a fully configurable through options DAG - read from system > properties or not, this is just the properties source ending in a String[]. > > >> >> >>> >>> >>>> * System properties are global so how would you prevent system >>>> properties from conflicting within Apache Beam and with other non Apache >>>> Beam libraries that may rely on system properties? >>>> >>> >>> The prefixes I mentionned. Far enough in all libs so why not lib, >>> anything special I missed? >>> >> Thats a good amount of additional typing per option, even if its just the >> 5 characters "beam.". >> > > You do it in your launcher but enables you to do it. Today it is up to > each dev to store its own config without any normalization which is a lost > of value IMHO we can easily fix. > > >> >>> >>>> * There are users who launch more then one pipeline from the same >>>> application, how would system properties work there? >>>> >>> >>> And these users don't use the system properties but a custom way to >>> build String[] with their own configs so no issues I think. As you can or >>> not use the beamTestPipelineOptions system property, you would use this way >>> to configure it or not. >>> But having it would be nice for a lot of users + tests which wouldnt >>> really need this beamTestPipelineOptions (thinking out loud). >>> >> That is only for integration testing and using multiple system properties >> that then get mapped to PipelineOptions just for integration testing seems >> like we will add a whole level of complexity for little gain. >> > > Can be, so we keep the previous values which are way sufficient from what > I saw in batch usages and kind of lack in a built-in fashion in Beam for > now. > > >> >>> >>>> >>>> Note that the system property usage is only for integration testing and >>>> not meant for users writing pipelines. >>>> >>>> On Thu, Jan 11, 2018 at 9:38 PM, Romain Manni-Bucau < >>>> rmannibu...@gmail.com> wrote: >>>> >>>>> Hmm, here is my thought: allowing main options settings is super >>>>> important and one of the most important user experience point. I d even >>>>> say >>>>> any IO config shouldnt be an auto value but an option and through the >>>>> transform name you should be able to prefux the option name and override a >>>>> particular IO config through the command line - just to say how important >>>>> it is and avois hack by IO for that. >>>>> >>>>> The fact there is this global system property, json integration, and >>>>> in this PR another system property which is a bit weird for a user IMHO >>>>> can >>>>> mean we nees to update the config design. If each option has an equivalent >>>>> system property then no need of all these hacks. >>>>> >>>>> Ex: tempLocation would support -DtempLocation, -Dbeam.tempLocation, >>>>> -D<options simplename|qualified name>.templocation (+ transform name >>>>> prefix >>>>> if we add IO config one day) >>>>> >>>>> Then jackson is only here to parse the options....which is already >>>>> done manually since options use a custom serializer so it can be dropped, >>>>> no? >>>>> >>>>> Is this reasonning wrong? >>>>> >>>>> Le 12 janv. 2018 00:11, "Lukasz Cwik" <lc...@google.com> a écrit : >>>>> >>>>>> Robert Bradshaw had the idea of migrating away from using >>>>>> main(String[] args) and just refactoring the code to test the WordCount >>>>>> PTransform allowing one to write a traditional JUnit test that didn't >>>>>> call >>>>>> main(String[] args). This would change what the contents of our examples >>>>>> are and make them more amenable to testing which could be good guidance >>>>>> for >>>>>> developers as well. >>>>>> >>>>>> On Thu, Jan 11, 2018 at 3:08 PM, Lukasz Cwik <lc...@google.com> >>>>>> wrote: >>>>>> >>>>>>> 1) TestPipeline#convertToArgs is meant to convert >>>>>>> TestPipelineOptions into a String[] containing --arg=value for >>>>>>> integration >>>>>>> tests that only have a main(String[] arg) entry point like WordCount. >>>>>>> There >>>>>>> is this PR[1] that is outstanding that is attempting to clean this up >>>>>>> and >>>>>>> simplify it so that we aren't doing this haphazard conversion. >>>>>>> [1] https://github.com/apache/beam/pull/4346 >>>>>>> >>>>>>> I haven't yet commented on the PR but I was going to suggest that >>>>>>> the user add String[] getMainArgs to TestPipelineOptions and not do the >>>>>>> convertToArgs hackiness for ITs that use main(). >>>>>>> >>>>>>> On Thu, Jan 11, 2018 at 1:53 PM, Romain Manni-Bucau < >>>>>>> rmannibu...@gmail.com> wrote: >>>>>>> >>>>>>>> Some inputs - maybe comments? - would be appreciated on: >>>>>>>> >>>>>>>> 1. Why using json in https://github.com/apache/b >>>>>>>> eam/blob/master/sdks/java/core/src/main/java/org/apache/beam >>>>>>>> /sdk/testing/TestPipeline.java#L480 and not iterate over the >>>>>>>> options? >>>>>>>> 2. Also this is likely used to do a fromArgs and create another >>>>>>>> pipeline options later no? Is this api that useful here or does it >>>>>>>> need an >>>>>>>> options composition - fully object? >>>>>>>> >>>>>>>> Le 11 janv. 2018 19:09, "Lukasz Cwik" <lc...@google.com> a écrit : >>>>>>>> >>>>>>>>> Give links to the code segments that you want background on. >>>>>>>>> >>>>>>>>> On Wed, Jan 10, 2018 at 12:44 AM, Romain Manni-Bucau < >>>>>>>>> rmannibu...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> updated my junit 5 PR to show that: https://github.com/apach >>>>>>>>>> e/beam/pull/4360/files#diff-578d1770f8b47ebbc1e74a2c19de9a6aR28 >>>>>>>>>> >>>>>>>>>> It doesn't remove jackson yet but exposes a nicer user interface >>>>>>>>>> for the config. >>>>>>>>>> >>>>>>>>>> I'm not fully clear on all the jackson usage yet, there are some >>>>>>>>>> round trips (PO -> json -> PO) which are weird without more >>>>>>>>>> knowledge. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 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-09 22:57 GMT+01:00 Lukasz Cwik <lc...@google.com>: >>>>>>>>>> >>>>>>>>>>> Removing large dependencies is great but I can only assume it >>>>>>>>>>> will be a lot of work so if you can get it to work in a backwards >>>>>>>>>>> compatible way great. >>>>>>>>>>> >>>>>>>>>>> On Tue, Jan 9, 2018 at 1:52 PM, Romain Manni-Bucau < >>>>>>>>>>> rmannibu...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> It conflicts easily between libs and containers. Shade is not a >>>>>>>>>>>> good option too - see the thread on this topic :(. >>>>>>>>>>>> >>>>>>>>>>>> At the end i see using the cli solution closer to user - vs >>>>>>>>>>>> framework dev for json - and hurting less in terms of classpath so >>>>>>>>>>>> pby sthg >>>>>>>>>>>> to test no? >>>>>>>>>>>> >>>>>>>>>>>> Le 9 janv. 2018 22:47, "Lukasz Cwik" <lc...@google.com> a >>>>>>>>>>>> écrit : >>>>>>>>>>>> >>>>>>>>>>>>> Romain, how has Jackson been a classpath breaker? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Jan 9, 2018 at 1:20 PM, Romain Manni-Bucau < >>>>>>>>>>>>> rmannibu...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hmm, beam already owns the cli parsing - that is what I meant >>>>>>>>>>>>>> - it only misses the arg delimiter (ie quoting) and adding it is >>>>>>>>>>>>>> easy no? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Le 9 janv. 2018 21:19, "Robert Bradshaw" <rober...@google.com> >>>>>>>>>>>>>> a écrit : >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Tue, Jan 9, 2018 at 11:48 AM, Romain Manni-Bucau >>>>>>>>>>>>>>> <rmannibu...@gmail.com> wrote: >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > Le 9 janv. 2018 19:50, "Robert Bradshaw" < >>>>>>>>>>>>>>> rober...@google.com> a écrit : >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > From what I understand: >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > 1) The command line argument values (both simple and more >>>>>>>>>>>>>>> complex) are >>>>>>>>>>>>>>> > all JSON-representable. >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > And must be all CLI representable >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Sorry, I should have said "all pipeline options." In any >>>>>>>>>>>>>>> case, one can >>>>>>>>>>>>>>> always do JSON -> string and the resulting string is usable >>>>>>>>>>>>>>> as a >>>>>>>>>>>>>>> command line argument. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> > 2) The command line is a mapping of keys to these values. >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > Which makes your 1 not true since json supports more ;) >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > As such, it seems quite natural to represent the whole set >>>>>>>>>>>>>>> as a single >>>>>>>>>>>>>>> > JSON map, rather than using a different, custom encoding >>>>>>>>>>>>>>> for the top >>>>>>>>>>>>>>> > level (whose custom escaping would have to be carried into >>>>>>>>>>>>>>> the inner >>>>>>>>>>>>>>> > JSON values). Note that JSON has the advantage that one >>>>>>>>>>>>>>> never needs to >>>>>>>>>>>>>>> > explain or define it, and parsers/serializers already >>>>>>>>>>>>>>> exists for all >>>>>>>>>>>>>>> > languages (e.g. if one has a driver script in another >>>>>>>>>>>>>>> language for >>>>>>>>>>>>>>> > launching a java pipeline, it's easy to communicate all >>>>>>>>>>>>>>> the args). >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > Same reasonning applies to CLI AFAIK >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The spec of what a valid command line argument list is is >>>>>>>>>>>>>>> surprisingly >>>>>>>>>>>>>>> inconsistent across platforms, languages, and programs. And >>>>>>>>>>>>>>> your >>>>>>>>>>>>>>> proposal seems to be getting into what the delimiter is, and >>>>>>>>>>>>>>> how to >>>>>>>>>>>>>>> escape it, and possibly then how to escape the escape >>>>>>>>>>>>>>> character. All >>>>>>>>>>>>>>> of this is sidestepped by pointing at an existing spec. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> > We can't get rid of Jackson in the core because of (1) so >>>>>>>>>>>>>>> there's >>>>>>>>>>>>>>> > little value in adding complexity to remove it from (2). >>>>>>>>>>>>>>> The fact that >>>>>>>>>>>>>>> > Java doesn't ship anything in its expansive standard >>>>>>>>>>>>>>> library for this >>>>>>>>>>>>>>> > is unfortuante, so we have to take a dependency on >>>>>>>>>>>>>>> something. >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > We actually can as shown before >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> How, if JSON is integral to the parsing of the argument >>>>>>>>>>>>>>> values >>>>>>>>>>>>>>> themselves? (Or is the argument that it's not, but each >>>>>>>>>>>>>>> extender of >>>>>>>>>>>>>>> PipelineOptions is responsible for choosing a JSON parser >>>>>>>>>>>>>>> and doing it >>>>>>>>>>>>>>> themselves.) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> > and jackson is not a simple negligible lib >>>>>>>>>>>>>>> > but a classpath breaker :( >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Perhaps there are better libraries we could use instead? Is >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>> ecosystem so bad that it encourages projects to roll their >>>>>>>>>>>>>>> own of >>>>>>>>>>>>>>> everything rather than share code? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> > On Tue, Jan 9, 2018 at 10:00 AM, Lukasz Cwik < >>>>>>>>>>>>>>> lc...@google.com> wrote: >>>>>>>>>>>>>>> >> Ah, you don't want JSON within JSON. I see, if thats the >>>>>>>>>>>>>>> case just migrate >>>>>>>>>>>>>>> >> all of them to string tokenization and drop the Jackson >>>>>>>>>>>>>>> usage for string >>>>>>>>>>>>>>> >> -> >>>>>>>>>>>>>>> >> string[] conversion. >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> On Mon, Jan 8, 2018 at 10:06 PM, Romain Manni-Bucau >>>>>>>>>>>>>>> >> <rmannibu...@gmail.com> >>>>>>>>>>>>>>> >> wrote: >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> Lukasz, the use case is to znsure the config used can >>>>>>>>>>>>>>> still map the CLI >>>>>>>>>>>>>>> >>> and that options dont start to abuse json so it is >>>>>>>>>>>>>>> exactly the opposite >>>>>>>>>>>>>>> >>> of >>>>>>>>>>>>>>> >>> "we can be fancy" and is closer to "we can be robust". >>>>>>>>>>>>>>> Also the default >>>>>>>>>>>>>>> >>> should be easy and not json (i just want to set the >>>>>>>>>>>>>>> runner, --runner=xxx >>>>>>>>>>>>>>> >>> is >>>>>>>>>>>>>>> >>> easier than a json version). If the value doesnt start >>>>>>>>>>>>>>> with a [ we can >>>>>>>>>>>>>>> >>> use >>>>>>>>>>>>>>> >>> the tokenizer else jackson, wdyt? >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> Le 8 janv. 2018 22:59, "Lukasz Cwik" <lc...@google.com> >>>>>>>>>>>>>>> a écrit : >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> Now that I think about this more. I looked at some of >>>>>>>>>>>>>>> the examples in the >>>>>>>>>>>>>>> >>> pom.xml and they don't seem to be tricky to write in >>>>>>>>>>>>>>> JSON. >>>>>>>>>>>>>>> >>> I also looked at the Jenkins job configurations >>>>>>>>>>>>>>> (specifically the >>>>>>>>>>>>>>> >>> performance tests) and they pass around maps which they >>>>>>>>>>>>>>> convert to the >>>>>>>>>>>>>>> >>> required format without needing a user to write it >>>>>>>>>>>>>>> themselves. >>>>>>>>>>>>>>> >>> Using gradle, we will be able to trivially to do the >>>>>>>>>>>>>>> same thing (convert >>>>>>>>>>>>>>> >>> maps to json without needing the person to write it by >>>>>>>>>>>>>>> hand) like groovy >>>>>>>>>>>>>>> >>> does. >>>>>>>>>>>>>>> >>> Since we are migrating away from Maven it doesn't seem >>>>>>>>>>>>>>> worthwhile to >>>>>>>>>>>>>>> >>> spend >>>>>>>>>>>>>>> >>> time on to make it easier to write the args in the Maven >>>>>>>>>>>>>>> poms. >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> Is there another use case that is being missed? >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> On Mon, Jan 8, 2018 at 1:38 PM, Romain Manni-Bucau >>>>>>>>>>>>>>> >>> <rmannibu...@gmail.com> >>>>>>>>>>>>>>> >>> wrote: >>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>> >>>> Good point for \t and ,. >>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>> >>>> Any objection to use jackson as a fallback for that >>>>>>>>>>>>>>> purpose - for >>>>>>>>>>>>>>> >>>> backwqrd compat only - and make it optional then? Will >>>>>>>>>>>>>>> create the ticket >>>>>>>>>>>>>>> >>>> if >>>>>>>>>>>>>>> >>>> not. >>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>> >>>> Le 8 janv. 2018 20:32, "Robert Bradshaw" < >>>>>>>>>>>>>>> rober...@google.com> a écrit : >>>>>>>>>>>>>>> >>>>> >>>>>>>>>>>>>>> >>>>> Part of the motivation to use JSON for more complex >>>>>>>>>>>>>>> options was that >>>>>>>>>>>>>>> >>>>> it avoids having to define (and document, test, have >>>>>>>>>>>>>>> users learn, ...) >>>>>>>>>>>>>>> >>>>> yet another format for expressing lists, maps, etc. >>>>>>>>>>>>>>> >>>>> >>>>>>>>>>>>>>> >>>>> On Mon, Jan 8, 2018 at 11:19 AM, Lukasz Cwik < >>>>>>>>>>>>>>> lc...@google.com> wrote: >>>>>>>>>>>>>>> >>>>> > Ken, this is specifically about running integration >>>>>>>>>>>>>>> tests and not a >>>>>>>>>>>>>>> >>>>> > users >>>>>>>>>>>>>>> >>>>> > main(). >>>>>>>>>>>>>>> >>>>> > >>>>>>>>>>>>>>> >>>>> > Note, that PipelineOptions JSON format was used >>>>>>>>>>>>>>> because it was a >>>>>>>>>>>>>>> >>>>> > convenient >>>>>>>>>>>>>>> >>>>> > serialized form that is easy to explain to people >>>>>>>>>>>>>>> what is required. >>>>>>>>>>>>>>> >>>>> > Using a different string tokenizer and calling >>>>>>>>>>>>>>> >>>>> > PipelineOptionsFactory.fromArgs() with the parsed >>>>>>>>>>>>>>> strings seems like >>>>>>>>>>>>>>> >>>>> > it >>>>>>>>>>>>>>> >>>>> > would be better. >>>>>>>>>>>>>>> >>>>> > >>>>>>>>>>>>>>> >>>>> > These are the supported formats for fromArgs(): >>>>>>>>>>>>>>> >>>>> > * --project=MyProject (simple property, will >>>>>>>>>>>>>>> set the "project" >>>>>>>>>>>>>>> >>>>> > property >>>>>>>>>>>>>>> >>>>> > to "MyProject") >>>>>>>>>>>>>>> >>>>> > * --readOnly=true (for boolean properties, will >>>>>>>>>>>>>>> set the >>>>>>>>>>>>>>> >>>>> > "readOnly" >>>>>>>>>>>>>>> >>>>> > property to "true") >>>>>>>>>>>>>>> >>>>> > * --readOnly (shorthand for boolean properties, >>>>>>>>>>>>>>> will set the >>>>>>>>>>>>>>> >>>>> > "readOnly" >>>>>>>>>>>>>>> >>>>> > property to "true") >>>>>>>>>>>>>>> >>>>> > * --x=1 --x=2 --x=3 (list style simple >>>>>>>>>>>>>>> property, will set the >>>>>>>>>>>>>>> >>>>> > "x" >>>>>>>>>>>>>>> >>>>> > property to [1, 2, 3]) >>>>>>>>>>>>>>> >>>>> > * --x=1,2,3 (shorthand list style simple >>>>>>>>>>>>>>> property, will set the >>>>>>>>>>>>>>> >>>>> > "x" >>>>>>>>>>>>>>> >>>>> > property to [1, 2, 3]) >>>>>>>>>>>>>>> >>>>> > * --complexObject='{"key1":"value1",...} (JSON >>>>>>>>>>>>>>> format for all >>>>>>>>>>>>>>> >>>>> > other >>>>>>>>>>>>>>> >>>>> > complex types) >>>>>>>>>>>>>>> >>>>> > >>>>>>>>>>>>>>> >>>>> > Using a string tokenizer that minimizes the number >>>>>>>>>>>>>>> of required escape >>>>>>>>>>>>>>> >>>>> > characters would be good so we could use newline >>>>>>>>>>>>>>> characters as our >>>>>>>>>>>>>>> >>>>> > only >>>>>>>>>>>>>>> >>>>> > token. I would avoid ',\t ' as tokens since they are >>>>>>>>>>>>>>> more likely to >>>>>>>>>>>>>>> >>>>> > appear. >>>>>>>>>>>>>>> >>>>> > >>>>>>>>>>>>>>> >>>>> > On Mon, Jan 8, 2018 at 10:33 AM, Kenneth Knowles < >>>>>>>>>>>>>>> k...@google.com> >>>>>>>>>>>>>>> >>>>> > wrote: >>>>>>>>>>>>>>> >>>>> >> >>>>>>>>>>>>>>> >>>>> >> We do have a plain command line syntax, and whoever >>>>>>>>>>>>>>> writes the >>>>>>>>>>>>>>> >>>>> >> main(String[]) function is responsible for invoking >>>>>>>>>>>>>>> the parser. It >>>>>>>>>>>>>>> >>>>> >> isn't >>>>>>>>>>>>>>> >>>>> >> quite as nice as standard arg parse libraries, but >>>>>>>>>>>>>>> it isn't too bad. >>>>>>>>>>>>>>> >>>>> >> It >>>>>>>>>>>>>>> >>>>> >> would be great to improve, though. >>>>>>>>>>>>>>> >>>>> >> >>>>>>>>>>>>>>> >>>>> >> Jackson is for machine-to-machine communication or >>>>>>>>>>>>>>> other situations >>>>>>>>>>>>>>> >>>>> >> where >>>>>>>>>>>>>>> >>>>> >> command line parsing doesn't work so well. >>>>>>>>>>>>>>> >>>>> >> >>>>>>>>>>>>>>> >>>>> >> Are we using these some other way? >>>>>>>>>>>>>>> >>>>> >> >>>>>>>>>>>>>>> >>>>> >> Kenn >>>>>>>>>>>>>>> >>>>> >> >>>>>>>>>>>>>>> >>>>> >> On Sun, Jan 7, 2018 at 7:21 AM, Romain Manni-Bucau >>>>>>>>>>>>>>> >>>>> >> <rmannibu...@gmail.com> >>>>>>>>>>>>>>> >>>>> >> wrote: >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> Le 7 janv. 2018 12:53, "Jean-Baptiste Onofré" < >>>>>>>>>>>>>>> j...@nanthrax.net> a >>>>>>>>>>>>>>> >>>>> >>> écrit : >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> Hi Romain, >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> I guess you are assuming that pipeline options are >>>>>>>>>>>>>>> flat command >>>>>>>>>>>>>>> >>>>> >>> line >>>>>>>>>>>>>>> >>>>> >>> like >>>>>>>>>>>>>>> >>>>> >>> argument, right ? >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> Actually, theoretically, pipeline options can be >>>>>>>>>>>>>>> represented as >>>>>>>>>>>>>>> >>>>> >>> json, >>>>>>>>>>>>>>> >>>>> >>> that's why we use jackson. >>>>>>>>>>>>>>> >>>>> >>> The pipeline options can be >>>>>>>>>>>>>>> serialized/deserialized as json. >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> Yes but if users (or dev ;)) start to use that >>>>>>>>>>>>>>> then it is trivial >>>>>>>>>>>>>>> >>>>> >>> to >>>>>>>>>>>>>>> >>>>> >>> break the cli handling and fromArgs parsing or, if >>>>>>>>>>>>>>> not, break the >>>>>>>>>>>>>>> >>>>> >>> user >>>>>>>>>>>>>>> >>>>> >>> experience. So at the end it is a kind of "yes but >>>>>>>>>>>>>>> no", right? >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> PS: already see some advanced users having a >>>>>>>>>>>>>>> headache trying to >>>>>>>>>>>>>>> >>>>> >>> pass >>>>>>>>>>>>>>> >>>>> >>> pipeline options in json so using the plain >>>>>>>>>>>>>>> command line syntax can >>>>>>>>>>>>>>> >>>>> >>> be more >>>>>>>>>>>>>>> >>>>> >>> friendly too. >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> The purpose is to remove the jackson dependencies ? >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> Later yes, seeing core dep tree I identify a lot >>>>>>>>>>>>>>> of dep which can >>>>>>>>>>>>>>> >>>>> >>> conflict in some env and are not really needed or >>>>>>>>>>>>>>> bring much being >>>>>>>>>>>>>>> >>>>> >>> in the >>>>>>>>>>>>>>> >>>>> >>> core - like avro as mentionned in another thread. >>>>>>>>>>>>>>> Can need a >>>>>>>>>>>>>>> >>>>> >>> sanitizing >>>>>>>>>>>>>>> >>>>> >>> round. Short term it was really a "why is it that >>>>>>>>>>>>>>> complicated" ;). >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> Regards >>>>>>>>>>>>>>> >>>>> >>> JB >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> On 01/07/2018 11:38 AM, Romain Manni-Bucau wrote: >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> Hi guys, >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> not sure i fully get why jackson is used to parse >>>>>>>>>>>>>>> pipeline options >>>>>>>>>>>>>>> >>>>> >>>> in >>>>>>>>>>>>>>> >>>>> >>>> the testing integration >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> why not using a token parser like [1] which >>>>>>>>>>>>>>> allows to map 1-1 with >>>>>>>>>>>>>>> >>>>> >>>> the >>>>>>>>>>>>>>> >>>>> >>>> user interface (command line) the options? >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> [1] >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> https://github.com/Talend/comp >>>>>>>>>>>>>>> onent-runtime/blob/master/component-server/src/main/java/org >>>>>>>>>>>>>>> /talend/sdk/component/server/lang/StringPropertiesTokenizer. >>>>>>>>>>>>>>> java >>>>>>>>>>>>>>> >>>>> >>>> >>>>>>>>>>>>>>> >>>>> >>>> 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/r >>>>>>>>>>>>>>> mannibucau> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> -- >>>>>>>>>>>>>>> >>>>> >>> Jean-Baptiste Onofré >>>>>>>>>>>>>>> >>>>> >>> jbono...@apache.org >>>>>>>>>>>>>>> >>>>> >>> http://blog.nanthrax.net >>>>>>>>>>>>>>> >>>>> >>> Talend - http://www.talend.com >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >>> >>>>>>>>>>>>>>> >>>>> >> >>>>>>>>>>>>>>> >>>>> > >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> >>> >> >