Sounds good to me! Thank you for talking it out. GoF reference appreciated 👏 😉
Looking forward to a PR, Gary On Tue, May 14, 2024, 1:47 PM Claude Warren <cla...@xenei.com> wrote: > I have to admit that i am partial to build but in reviewing gang of four > and various java build patterns i find that there are a number of terminal > methods. > > Gary is, I now believe, correct; that the builder should implement > Supplier. > > > > On Tue 14 May 2024, 19:28 Claude Warren, <cla...@xenei.com> wrote: > > > By factory i assume you mean builder in this context > > > > To my understanding a factory can produce mutiple types of objects while > a > > builder ony one. I got called out on that awhile ago on a different > project > > > > Should we then make all existing builders in CLI implement supplier and > > deprecate the current build methods in favor of get? Would this be your > > recommendation? > > > > > > > > On Tue 14 May 2024, 19:02 Gary Gregory, <garydgreg...@gmail.com> wrote: > > > >> Also think of the anti pattern of all Commons Components implementing > >> their > >> own factory pattern with a custom interface instead of just reusing > Java's > >> own Supplier. > >> > >> Gary > >> > >> On Tue, May 14, 2024, 1:00 PM Gary Gregory <garydgreg...@gmail.com> > >> wrote: > >> > >> > IMO future factories should only be Suppliers. > >> > > >> > Whether to deprecate current code in favor of Suppliers is possible if > >> > only a bit noisy. > >> > > >> > Gary > >> > > >> > On Tue, May 14, 2024, 12:22 PM Claude Warren <cla...@xenei.com> > wrote: > >> > > >> >> I have submitted a draft pull request > >> >> https://github.com/apache/commons-cli/pull/272 > >> >> > >> >> However, I would like to resolve the Builder/build Builder/get naming > >> >> issue > >> >> before I take it out of draft mode. > >> >> > >> >> > >> >> > >> >> On Tue, May 14, 2024 at 6:05 PM Claude Warren <cla...@xenei.com> > >> wrote: > >> >> > >> >> > I will add some tests to show what it is doing in the various > cases. > >> >> But > >> >> > I think that since we are now providing external developers with > the > >> >> > ability to display custom information about the Option there are a > >> >> > couple of function that we could probably use internally and > provide > >> to > >> >> the > >> >> > external developer. > >> >> > > >> >> > A prime example is the ability to get the string "-s" or "-s, > >> --longopt" > >> >> > or "--longopt" as an output based on weather the option has a short > >> >> option, > >> >> > long option or both defined. This is used in several places > >> internally, > >> >> > and I have had to code it for some external code I was developing. > >> >> > > >> >> > There are probably others that we can find the code base but I was > >> >> > thinking an "OptionUtils" or "OptionFormat" or "OptionHelper" class > >> that > >> >> > has static methods taking an Option. > >> >> > > >> >> > Are there any objections to this? > >> >> > > >> >> > > >> >> > On Tue, May 14, 2024 at 4:08 PM Claude Warren <cla...@xenei.com> > >> wrote: > >> >> > > >> >> >> Eric, I may have broken it with my implementation of the > >> HelpFormatter > >> >> >> deprecatedFormatFunc() method. > >> >> >> > >> >> >> On Tue, May 14, 2024 at 4:06 PM Claude Warren <cla...@xenei.com> > >> >> wrote: > >> >> >> > >> >> >>> We already have historical uses of builders in CLI (e.g. > >> >> >>> CommandLine.Builder) that use build() not get(). > >> >> >>> In addition many of the other commons packages have Builders that > >> are > >> >> >>> triggered by a "build" call. > >> >> >>> > >> >> >>> On Tue, May 14, 2024 at 3:03 PM Gary Gregory < > >> garydgreg...@gmail.com> > >> >> >>> wrote: > >> >> >>> > >> >> >>>> Hi All, > >> >> >>>> > >> >> >>>> Better documentation is always nice :-) > >> >> >>>> > >> >> >>>> I vote for Supplier/get() because it does not require the > >> invention > >> >> of > >> >> >>>> something new that does _exactly the same thing as the code > >> already > >> >> >>>> provided in the JRE_. > >> >> >>>> > >> >> >>>> Gary > >> >> >>>> > >> >> >>>> On Tue, May 14, 2024 at 8:22 AM Claude Warren <cla...@xenei.com > > > >> >> wrote: > >> >> >>>> > > >> >> >>>> > I find a couple of issues: > >> >> >>>> > > >> >> >>>> > No documentation for the new options. (I am working on that). > >> >> >>>> > A weird mix of .get() and .build() methods on builders. The > new > >> >> >>>> builders > >> >> >>>> > all extend Supplier<> so the get makes sense in that respect, > >> but I > >> >> >>>> don't > >> >> >>>> > think this is the normal nomenclature for Builders. I expect > a > >> >> >>>> build() > >> >> >>>> > method. In any case we should settle on one or the other. In > >> case > >> >> >>>> it is > >> >> >>>> > not obvious I vote for build(). > >> >> >>>> > > >> >> >>>> > On Mon, May 13, 2024 at 11:54 AM Claude Warren < > >> cla...@xenei.com> > >> >> >>>> wrote: > >> >> >>>> > > >> >> >>>> > > Will do. > >> >> >>>> > > > >> >> >>>> > > On Sun, May 12, 2024 at 8:49 PM Gary Gregory < > >> >> >>>> garydgreg...@gmail.com> > >> >> >>>> > > wrote: > >> >> >>>> > > > >> >> >>>> > >> How does it look now? > >> >> >>>> > >> > >> >> >>>> > >> Would you check git master is OK, then I can cut a release > >> >> >>>> candidate > >> >> >>>> > >> later in the week. > >> >> >>>> > >> > >> >> >>>> > >> Gary > >> >> >>>> > >> > >> >> >>>> > >> On Sat, May 11, 2024 at 6:28 AM Claude Warren < > >> >> cla...@apache.org> > >> >> >>>> wrote: > >> >> >>>> > >> > > >> >> >>>> > >> > Also, it appears that the deprecatedHandler is only > tested > >> on > >> >> >>>> the string > >> >> >>>> > >> > option processing. if the application retains a list of > >> >> Options > >> >> >>>> and > >> >> >>>> > >> passes > >> >> >>>> > >> > those in to be checked the deprecation check is not > >> execute. > >> >> >>>> > >> > > >> >> >>>> > >> > On Sat, May 11, 2024 at 12:18 PM Claude Warren < > >> >> >>>> cla...@apache.org> > >> >> >>>> > >> wrote: > >> >> >>>> > >> > > >> >> >>>> > >> > > Greetings, > >> >> >>>> > >> > > > >> >> >>>> > >> > > I see that there is a deprecated option in cli 1.7.0, > and > >> >> that > >> >> >>>> it has > >> >> >>>> > >> some > >> >> >>>> > >> > > nice data. But I don't see how to display the info in > >> the > >> >> >>>> help. > >> >> >>>> > >> > > > >> >> >>>> > >> > > It looks like the only option is to print > "[Deprecated]" > >> >> >>>> without any > >> >> >>>> > >> > > information from the deprecated info. I think the > >> >> HelpPrinter > >> >> >>>> needs a > >> >> >>>> > >> > > function (similar to the command line > deprecatedHandler) > >> to > >> >> >>>> convert > >> >> >>>> > >> the > >> >> >>>> > >> > > object to a string that can be prefixed to the option > >> help > >> >> >>>> output > >> >> >>>> > >> where the > >> >> >>>> > >> > > "[Deprecated]" is now. > >> >> >>>> > >> > > > >> >> >>>> > >> > > Does this make sense? > >> >> >>>> > >> > > > >> >> >>>> > >> > > Is there something I am overlooking that already does > >> this? > >> >> >>>> > >> > > > >> >> >>>> > >> > > Claude > >> >> >>>> > >> > > > >> >> >>>> > >> > > > >> >> >>>> > >> > > > >> >> >>>> > >> > >> >> >>>> > >> > >> >> >>>> > >> --------------------------------------------------------------------- > >> >> >>>> > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> >> >>>> > >> For additional commands, e-mail: > dev-h...@commons.apache.org > >> >> >>>> > >> > >> >> >>>> > >> > >> >> >>>> > > > >> >> >>>> > > -- > >> >> >>>> > > LinkedIn: http://www.linkedin.com/in/claudewarren > >> >> >>>> > > > >> >> >>>> > > >> >> >>>> > > >> >> >>>> > -- > >> >> >>>> > LinkedIn: http://www.linkedin.com/in/claudewarren > >> >> >>>> > >> >> >>>> > >> --------------------------------------------------------------------- > >> >> >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> >> >>>> For additional commands, e-mail: dev-h...@commons.apache.org > >> >> >>>> > >> >> >>>> > >> >> >>> > >> >> >>> -- > >> >> >>> LinkedIn: http://www.linkedin.com/in/claudewarren > >> >> >>> > >> >> >> > >> >> >> > >> >> >> -- > >> >> >> LinkedIn: http://www.linkedin.com/in/claudewarren > >> >> >> > >> >> > > >> >> > > >> >> > -- > >> >> > LinkedIn: http://www.linkedin.com/in/claudewarren > >> >> > > >> >> > >> >> > >> >> -- > >> >> LinkedIn: http://www.linkedin.com/in/claudewarren > >> >> > >> > > >> > > >