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