I have created LANG-921 and am currently working on this. I prefer to make
the behavior correct as Hen has suggested and add two new method isOneTrue
and isOneFalse.


2013/10/15 Matt Benson <gudnabr...@gmail.com>

> Another alternative:  preserve the current #xor() method with
> documentation, and implement the ^ analogue as #binaryXor().
>
> Matt
>
>
> On Tue, Oct 15, 2013 at 9:05 AM, Matt Benson <gudnabr...@gmail.com> wrote:
>
> > In this case we should perhaps provide a #oneTrue(boolean...) method to
> > preserve the availability of the current behavior, which may also
> > occasionally have its place.
> >
> > Matt
> >
> >
> > On Mon, Oct 14, 2013 at 11:10 PM, Henri Yandell <flame...@gmail.com
> >wrote:
> >
> >> I think we treat it as a bug and fix. The code is fine for the explained
> >> use of an array of length 2, but fails when you move to larger chains.
> >> Given the common meaning of the name, I think people would have noticed
> if
> >> they'd needed xor to work for arrays > 2 and it didn't. So a) I think we
> >> can fix and b) I suspect it's not a highly used method.
> >>
> >> So rather than the note, I'm +1 to fixing the code.
> >>
> >> Hen
> >>
> >>
> >> On Mon, Oct 14, 2013 at 12:22 PM, Benedikt Ritter <brit...@apache.org
> >> >wrote:
> >>
> >> > Thoughts? Maybe this should be renamed to "isOneTrue(boolean...)" in
> the
> >> > next major release?!
> >> >
> >> > ---------- Forwarded message ----------
> >> > From: <brit...@apache.org>
> >> > Date: 2013/10/14
> >> > Subject: svn commit: r1532031 -
> >> >
> >> >
> >>
> /commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/BooleanUtils.java
> >> > To: comm...@commons.apache.org
> >> >
> >> >
> >> > Author: britter
> >> > Date: Mon Oct 14 19:21:02 2013
> >> > New Revision: 1532031
> >> >
> >> > URL: http://svn.apache.org/r1532031
> >> > Log:
> >> > Document (wrong?) behavior of xor methods
> >> >
> >> > Modified:
> >> >
> >> >
> >> >
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/BooleanUtils.java
> >> >
> >> > Modified:
> >> >
> >> >
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/BooleanUtils.java
> >> > URL:
> >> >
> >> >
> >>
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/BooleanUtils.java?rev=1532031&r1=1532030&r2=1532031&view=diff
> >> >
> >> >
> >>
> ==============================================================================
> >> > ---
> >> >
> >> >
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/BooleanUtils.java
> >> > (original)
> >> > +++
> >> >
> >> >
> >>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/BooleanUtils.java
> >> > Mon Oct 14 19:21:02 2013
> >> > @@ -1028,6 +1028,14 @@ public class BooleanUtils {
> >> >       *   BooleanUtils.xor(true, false)  = true
> >> >       * </pre>
> >> >       *
> >> > +     * <p>Note that this method behaves different from using the
> binary
> >> > XOR operator (^). Instead of combining the given
> >> > +     * booleans using the XOR operator from left to right, this
> method
> >> > counts the appearances of true in the given
> >> > +     * array. It will only return true if exactly one boolean in the
> >> given
> >> > array is true:</p>
> >> > +     * <pre>
> >> > +     *   true ^ true ^ false ^ true                 = true
> >> > +     *   BooleanUtils.xor(true, true, false, true)  = false
> >> > +     * </pre>
> >> > +     *
> >> >       * @param array  an array of {@code boolean}s
> >> >       * @return {@code true} if the xor is successful.
> >> >       * @throws IllegalArgumentException if {@code array} is {@code
> >> null}
> >> > @@ -1069,6 +1077,9 @@ public class BooleanUtils {
> >> >       *   BooleanUtils.xor(new Boolean[] { Boolean.TRUE, Boolean.FALSE
> >> })
> >> >  = Boolean.TRUE
> >> >       * </pre>
> >> >       *
> >> > +     * <p>Note that this method behaves different from using the
> binary
> >> > XOR operator (^). See
> >> > +     * {@link #xor(boolean...)}.</p>
> >> > +     *
> >> >       * @param array  an array of {@code Boolean}s
> >> >       * @return {@code true} if the xor is successful.
> >> >       * @throws IllegalArgumentException if {@code array} is {@code
> >> null}
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > http://people.apache.org/~britter/
> >> > http://www.systemoutprintln.de/
> >> > http://twitter.com/BenediktRitter
> >> > http://github.com/britter
> >> >
> >>
> >
> >
>



-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Reply via email to