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
>

Reply via email to