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