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

Reply via email to