You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Gary Gregory <ga...@gmail.com> on 2017/01/27 21:54:56 UTC

StringUtils.isEmpty() family of methods on Objects

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: garydgregory@gmail.com | ggregory@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

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Stian Soiland-Reyes <st...@apache.org>.
Agree with Benedikt here, if it's only the .toString() that is important,
then "string" should appear in the method name; otherwise we need to do
Commons Collections style handling of anything that can be empty or not.

To support null (which isn't really "empty" but missing), perhaps just have
the inverse method

hasNonEmptyString() ?

Then it would be false both for null and "", true for anything else.

On 28 Jan 2017 9:13 am, "Benedikt Ritter" <br...@apache.org> wrote:

>
> > Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> E-Mail: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >>
> >
> >
> >
> > --
> > E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Gary Gregory <ga...@gmail.com>.
You can't blame the debugger too much when all the metadata you have for
code location is a file name and line number... ;-)

Gary

On Sun, Jan 29, 2017 at 6:49 PM, Matt Sicker <bo...@gmail.com> wrote:

> I blame the state of debuggers more so than lambdas. I've yet to see a Java
> debugger that can properly handle any sort of fluent DSL, and lambdas make
> fluent DSLs far more common now.
>
> On 29 January 2017 at 20:45, Rob Tompkins <ch...@gmail.com> wrote:
>
> >
> >
> > > On Jan 29, 2017, at 9:24 PM, Gary Gregory <ga...@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 <gu...@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 <
> garydgregory@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" <br...@apache.org>
> wrote:
> > >>>
> > >>>
> > >>>> Am 28.01.2017 um 02:53 schrieb Gary Gregory <garydgregory@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 <bo...@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 <ga...@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 <bo...@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 <
> garydgregory@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> > >>>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> --
> > >>>>>> E-Mail: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> > >>>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>> --
> > >>>> E-Mail: garydgregory@gmail.com | ggregory@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=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&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-unsubscribe@commons.apache.org
> > >>> For additional commands, e-mail: dev-help@commons.apache.org
> > >>>
> > >>
> > >
> > >
> > >
> > > --
> > > E-Mail: garydgregory@gmail.com | ggregory@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=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
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
> >
>
>
> --
> Matt Sicker <bo...@gmail.com>
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Matt Sicker <bo...@gmail.com>.
I blame the state of debuggers more so than lambdas. I've yet to see a Java
debugger that can properly handle any sort of fluent DSL, and lambdas make
fluent DSLs far more common now.

On 29 January 2017 at 20:45, Rob Tompkins <ch...@gmail.com> wrote:

>
>
> > On Jan 29, 2017, at 9:24 PM, Gary Gregory <ga...@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 <gu...@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 <ga...@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" <br...@apache.org> wrote:
> >>>
> >>>
> >>>> Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> E-Mail: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> E-Mail: garydgregory@gmail.com | ggregory@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=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&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-unsubscribe@commons.apache.org
> >>> For additional commands, e-mail: dev-help@commons.apache.org
> >>>
> >>
> >
> >
> >
> > --
> > E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>


-- 
Matt Sicker <bo...@gmail.com>

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Rob Tompkins <ch...@gmail.com>.

> On Jan 29, 2017, at 9:24 PM, Gary Gregory <ga...@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 <gu...@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 <ga...@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" <br...@apache.org> wrote:
>>> 
>>> 
>>>> Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> E-Mail: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
>>> For additional commands, e-mail: dev-help@commons.apache.org
>>> 
>> 
> 
> 
> 
> -- 
> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: StringUtils.isEmpty() family of methods on Objects

Posted by Gary Gregory <ga...@gmail.com>.
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...

Gary

On Sat, Jan 28, 2017 at 2:33 PM, Matt Benson <gu...@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 <ga...@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" <br...@apache.org> wrote:
> >
> >
> > > Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> > >>>>
> > >>>
> > >>>
> > >>>
> > >>> --
> > >>> E-Mail: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> > >>
> > >
> > >
> > >
> > > --
> > > E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Matt Benson <gu...@gmail.com>.
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 <ga...@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" <br...@apache.org> wrote:
>
>
> > Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> E-Mail: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >>
> >
> >
> >
> > --
> > E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Gary Gregory <ga...@gmail.com>.
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" <br...@apache.org> wrote:


> Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
>>>>
>>>
>>>
>>>
>>> --
>>> E-Mail: garydgregory@gmail.com | ggregory@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=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 <bo...@gmail.com>
>>
>
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Benedikt Ritter <br...@apache.org>.
> Am 28.01.2017 um 02:53 schrieb Gary Gregory <ga...@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 <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> E-Mail: garydgregory@gmail.com | ggregory@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=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 <bo...@gmail.com>
>> 
> 
> 
> 
> -- 
> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: StringUtils.isEmpty() family of methods on Objects

Posted by Gary Gregory <ga...@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.

Gary

On Fri, Jan 27, 2017 at 5:37 PM, Matt Sicker <bo...@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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> > >
> >
> >
> >
> > --
> > E-Mail: garydgregory@gmail.com | ggregory@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=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 <bo...@gmail.com>
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Matt Sicker <bo...@gmail.com>.
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 <ga...@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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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 <bo...@gmail.com>
> >
>
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@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
>



-- 
Matt Sicker <bo...@gmail.com>

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Gary Gregory <ga...@gmail.com>.
_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 <bo...@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 <ga...@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: garydgregory@gmail.com | ggregory@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=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 <bo...@gmail.com>
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Re: StringUtils.isEmpty() family of methods on Objects

Posted by Matt Sicker <bo...@gmail.com>.
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 <ga...@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: garydgregory@gmail.com | ggregory@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
>



-- 
Matt Sicker <bo...@gmail.com>