> On Jan 29, 2017, at 9:24 PM, Gary Gregory <garydgreg...@gmail.com> wrote: > > I know someone would reply with some Java 8 lamba... but that will never be > as easy to ready as a method name like isEmpty or hasSomething... >
At my day job a bunch of folks got giddy over the new java 8 functionality and ended up writing a ton of unreadable non-debugable code. So, I definitely agree with this sentiment. -Rob > Gary > >> On Sat, Jan 28, 2017 at 2:33 PM, Matt Benson <gudnabr...@gmail.com> wrote: >> >> Like Bene, this feels a little off to me. Just for argument's sake, let's >> look at: >> >> Optional.ofNullable(foo).map(Object::toString).filter( >> StringUtils::isNotBlank).isPresent(); >> >> Assuming you're on Java 8, of course. It's a bit long, but not horrible. >> What about, in a Java 8-compatible version of [lang], an >> Optionals/OptionalUtils class? >> >> public class OptionalUtils { >> >> public static Optional<String> toString(Object o) { >> return map(o, Object::toString); >> } >> >> static <T, R> Optional<R> map(T t, Function<? super T, ? extends R> fn) { >> return Optional.ofNullable(t).map(fn); >> } >> } >> >> Then your test could be shortened to: >> >> OptionalUtils.toString(foo).filter(StringUtils::isNotBlank).isPresent(); >> >> Just thinking "out loud", >> Matt >> >> On Sat, Jan 28, 2017 at 11:08 AM, Gary Gregory <garydgreg...@gmail.com> >> wrote: >> >>> If you look at the link Matt provided, that handles arrays and >> collection, >>> but not Object.toString() >>> >>> Gary >>> >>> On Jan 28, 2017 1:13 AM, "Benedikt Ritter" <brit...@apache.org> wrote: >>> >>> >>>> Am 28.01.2017 um 02:53 schrieb Gary Gregory <garydgreg...@gmail.com>: >>>> >>>> The simplest examples I have on hand are instances of Path and URI >> which >>>> can be built with an empty string. I want to know if these are "empty". >>> For >>>> the app I am now on for example, a Path or null and "" should be >> treated >>>> the same. Same for a URI. >>> >>> I don’t think it is a good idea to define emptiness based on the return >>> value of Object.toString(). Consider the following: >>> >>> isEmpty(null) -> true >>> isEmpty(„“) -> true >>> isEmpty(new URI(„“)) -> true >>> >>> But: >>> >>> isEmpty(Collections.emptyList()) -> false >>> isEmpty(new int[0]) -> false >>> >>> This is because toString() has nothing to do with emptiness. For this >>> reason I think it would be better to have explicitly typed method >> overloads >>> for the use cases you’re thinking about: >>> >>> boolean isEmpty(Path) >>> boolean isEmpty(URI) >>> >>> I’m not sure whether this belong to [lang]. The first looks like it >> belongs >>> to [io] while the second would better fit into [net]… >>> >>> Benedikt >>> >>>> >>>> Gary >>>> >>>>> On Fri, Jan 27, 2017 at 5:37 PM, Matt Sicker <boa...@gmail.com> wrote: >>>>> >>>>> That's an interesting use case, though I've never come across a >>> toString() >>>>> implementation that would be affected. Can you go into more detail? >>>>> >>>>> On 27 January 2017 at 16:04, Gary Gregory <garydgreg...@gmail.com> >>> wrote: >>>>> >>>>>> _Like_ that except that our Log4j version does not do the case I >> want: >>>>>> object.toString(). >>>>>> >>>>>> Gary >>>>>> >>>>>> On Fri, Jan 27, 2017 at 1:58 PM, Matt Sicker <boa...@gmail.com> >> wrote: >>>>>> >>>>>>> Something like this? >>>>>>> >>>>>>> https://github.com/apache/logging-log4j2/blob/master/ >>>>>>> log4j-core/src/main/java/org/apache/logging/log4j/core/ >>>>>>> util/Assert.java#L43 >>>>>>> >>>>>>> On 27 January 2017 at 15:54, Gary Gregory <garydgreg...@gmail.com> >>>>>> wrote: >>>>>>> >>>>>>>> Hi All, >>>>>>>> >>>>>>>> There are certain kinds of objects, _descriptor_ kind of objects >> that >>>>>>> would >>>>>>>> benefit from isEmpty semantics. These kind of objects can describe >>>>>>> complex >>>>>>>> command line arguments and other kind of configuration objects. >>>>>>>> >>>>>>>> I'd like to add with this pseudo code: >>>>>>>> >>>>>>>> boolean isEmpty(Object) { >>>>>>>> return object == null ? true : isEmpty(object.toString()); >>>>>>>> } >>>>>>>> >>>>>>>> Thoughts? >>>>>>>> >>>>>>>> Same idea of isBlank(), isNotEmpty() and so on. >>>>>>>> >>>>>>>> Gary >>>>>>>> >>>>>>>> -- >>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>> Java Persistence with Hibernate, Second Edition >>>>>>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ >>>>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& >>>>>>>> linkCode=as2&tag=garygregory-20&linkId= >>>>> cadb800f39946ec62ea2b1af9fe6a2 >>>>>> b8> >>>>>>>> >>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= >>>>> garygregory-20&l=am2&o=1&a= >>>>>>>> 1617290459> >>>>>>>> JUnit in Action, Second Edition >>>>>>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ >>>>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& >>>>>>>> linkCode=as2&tag=garygregory-20&linkId= >>>>> 31ecd1f6b6d1eaf8886ac902a24de4 >>>>>>> 18%22 >>>>>>>>> >>>>>>>> >>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= >>>>> garygregory-20&l=am2&o=1&a= >>>>>>>> 1935182021> >>>>>>>> Spring Batch in Action >>>>>>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ >>>>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& >>>>>>>> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% >>>>>>>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> >>>>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= >>>>> garygregory-20&l=am2&o=1&a= >>>>>>>> 1935182951> >>>>>>>> Blog: http://garygregory.wordpress.com >>>>>>>> Home: http://garygregory.com/ >>>>>>>> Tweet! http://twitter.com/GaryGregory >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>>>> Java Persistence with Hibernate, Second Edition >>>>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ >>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& >>>>>> linkCode=as2&tag=garygregory-20&linkId= >> cadb800f39946ec62ea2b1af9fe6a2 >>> b8> >>>>>> >>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= >> garygregory-20&l=am2&o=1&a= >>>>>> 1617290459> >>>>>> JUnit in Action, Second Edition >>>>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ >>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& >>>>>> linkCode=as2&tag=garygregory-20&linkId= >> 31ecd1f6b6d1eaf8886ac902a24de4 >>>>> 18%22 >>>>>>> >>>>>> >>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= >> garygregory-20&l=am2&o=1&a= >>>>>> 1935182021> >>>>>> Spring Batch in Action >>>>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ >>>>>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& >>>>>> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% >>>>>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> >>>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= >> garygregory-20&l=am2&o=1&a= >>>>>> 1935182951> >>>>>> Blog: http://garygregory.wordpress.com >>>>>> Home: http://garygregory.com/ >>>>>> Tweet! http://twitter.com/GaryGregory >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Matt Sicker <boa...@gmail.com> >>>>> >>>> >>>> >>>> >>>> -- >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>> Java Persistence with Hibernate, Second Edition >>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl? >>> ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&link >>> Code=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> >>>> >>>> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l= >>> am2&o=1&a=1617290459> >>>> JUnit in Action, Second Edition >>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl? >>> ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&link >>> Code=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> >>>> >>>> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l= >>> am2&o=1&a=1935182021> >>>> Spring Batch in Action >>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl? >>> ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&link >>> Code=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Bli >>> nk_id%7D%7D%22%3ESpring+Batch+in+Action> >>>> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l= >>> am2&o=1&a=1935182951> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> For additional commands, e-mail: dev-h...@commons.apache.org >>> >> > > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second Edition > <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> > JUnit in Action, Second Edition > <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> > Spring Batch in Action > <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org