You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by gg...@apache.org on 2005/10/23 00:03:32 UTC
svn commit: r327700 - in /jakarta/commons/proper/lang/trunk/src:
java/org/apache/commons/lang/mutable/MutableBoolean.java
test/org/apache/commons/lang/mutable/MutableBooleanTest.java
test/org/apache/commons/lang/mutable/MutableTestSuite.java
Author: ggregory
Date: Sat Oct 22 15:03:23 2005
New Revision: 327700
URL: http://svn.apache.org/viewcvs?rev=327700&view=rev
Log:
[lang] Request for MutableBoolean implementation.
http://issues.apache.org/bugzilla/show_bug.cgi?id=37111.
Added:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java (with props)
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java (with props)
Modified:
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableTestSuite.java
Added: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java?rev=327700&view=auto
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java (added)
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java Sat Oct 22 15:03:23 2005
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.lang.mutable;
+
+import java.io.Serializable;
+
+/**
+ * A mutable <code>boolean</code> wrapper.
+ *
+ * @see Boolean
+ * @since 2.2
+ * @author Apache Software Foundation
+ * @version $Id$
+ */
+public class MutableBoolean implements Mutable, Serializable, Comparable {
+
+ /** Serialization lock. */
+ private static final long serialVersionUID = -4830728138360036487L;
+
+ /** The mutable value. */
+ private boolean value;
+
+ /**
+ * Constructs a new MutableBoolean with the default value of false.
+ */
+ public MutableBoolean() {
+ super();
+ }
+
+ /**
+ * Constructs a new MutableBoolean with the specified value.
+ *
+ * @param value
+ * a value.
+ */
+ public MutableBoolean(boolean value) {
+ super();
+ this.value = value;
+ }
+
+ /**
+ * Constructs a new MutableBoolean with the specified value.
+ *
+ * @param value
+ * a value.
+ * @throws NullPointerException
+ * if the object is null
+ */
+ public MutableBoolean(Boolean value) {
+ super();
+ this.value = value.booleanValue();
+ }
+
+ // -----------------------------------------------------------------------
+ /**
+ * Returns the value of this MutableBoolean as a boolean.
+ *
+ * @return the boolean value represented by this object.
+ */
+ public boolean booleanValue() {
+ return value;
+ }
+
+ /**
+ * Compares this mutable to another in ascending order.
+ *
+ * @param obj
+ * the mutable to compare to
+ * @return zero if this object represents the same boolean value as the argument; a positive value if this object
+ * represents true and the argument represents false; and a negative value if this object represents false
+ * and the argument represents true
+ * @throws ClassCastException
+ * if the argument is not a MutableInt
+ */
+ public int compareTo(Object obj) {
+ MutableBoolean other = (MutableBoolean) obj;
+ boolean anotherVal = other.value;
+ return value == anotherVal ? 0 : (value ? 1 : -1);
+ }
+
+ // -----------------------------------------------------------------------
+ /**
+ * Compares this object to the specified object. The result is <code>true</code> if and only if the argument is
+ * not <code>null</code> and is an <code>MutableBoolean</code> object that contains the same
+ * <code>boolean</code> value as this object.
+ *
+ * @param obj
+ * the object to compare with.
+ * @return <code>true</code> if the objects are the same; <code>false</code> otherwise.
+ */
+ public boolean equals(Object obj) {
+ if (obj instanceof MutableBoolean) {
+ return value == ((MutableBoolean) obj).booleanValue();
+ }
+ return false;
+ }
+
+ // -----------------------------------------------------------------------
+ /**
+ * Gets the value as a Boolean instance.
+ *
+ * @return the value as a Boolean
+ */
+ public Object getValue() {
+ return new Boolean(this.value);
+ }
+
+ /**
+ * Returns a suitable hashcode for this mutable.
+ *
+ * @return the integer <code>1231</code> if this object represents <code>true</code>; returns the integer
+ * <code>1237</code> if this object represents <code>false</code>.
+ */
+ public int hashCode() {
+ return value ? Boolean.TRUE.hashCode() : Boolean.FALSE.hashCode();
+ }
+
+ /**
+ * Sets the value.
+ *
+ * @param value
+ * the value to set
+ */
+ public void setValue(boolean value) {
+ this.value = value;
+ }
+
+ /**
+ * Sets the value from any Boolean instance.
+ *
+ * @param value
+ * the value to set
+ * @throws NullPointerException
+ * if the object is null
+ * @throws ClassCastException
+ * if the type is not a {@link Boolean}
+ */
+ public void setValue(Object value) {
+ setValue(((Boolean) value).booleanValue());
+ }
+
+ /**
+ * Returns the String value of this mutable.
+ *
+ * @return the mutable value as a string
+ */
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+}
Propchange: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Sat Oct 22 15:03:23 2005
@@ -0,0 +1 @@
+LastChangedDate Date LastChangedRevision Revision Rev LastChangedBy Author HeadURL URL Id
Propchange: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/mutable/MutableBoolean.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java?rev=327700&view=auto
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java (added)
+++ jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java Sat Oct 22 15:03:23 2005
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2002-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.lang.mutable;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * JUnit tests.
+ *
+ * @since 2.2
+ * @see MutableBoolean
+ * @author Apache Software Foundation
+ * @version $Id$
+ */
+public class MutableBooleanTest extends TestCase {
+
+ public static void main(String[] args) {
+ TestRunner.run(suite());
+ }
+
+ public static Test suite() {
+ return new TestSuite(MutableBooleanTest.class);
+ }
+
+ public MutableBooleanTest(String testName) {
+ super(testName);
+ }
+
+ public void testCompareTo() {
+ final MutableBoolean mutBool = new MutableBoolean(false);
+
+ assertEquals(0, mutBool.compareTo(new MutableBoolean(false)));
+ assertEquals(-1, mutBool.compareTo(new MutableBoolean(true)));
+ mutBool.setValue(true);
+ assertEquals(+1, mutBool.compareTo(new MutableBoolean(false)));
+ assertEquals(0, mutBool.compareTo(new MutableBoolean(true)));
+
+ try {
+ mutBool.compareTo(null);
+ fail();
+ } catch (NullPointerException ex) {
+ }
+ try {
+ mutBool.compareTo(Boolean.FALSE);
+ fail();
+ } catch (ClassCastException ex) {
+ }
+ try {
+ mutBool.compareTo("false");
+ fail();
+ } catch (ClassCastException ex) {
+ }
+ }
+
+ // ----------------------------------------------------------------
+ public void testConstructors() {
+ assertEquals(false, new MutableBoolean().booleanValue());
+
+ assertEquals(true, new MutableBoolean(true).booleanValue());
+ assertEquals(false, new MutableBoolean(false).booleanValue());
+
+ assertEquals(true, new MutableBoolean(Boolean.TRUE).booleanValue());
+ assertEquals(false, new MutableBoolean(Boolean.FALSE).booleanValue());
+
+ try {
+ new MutableBoolean(null);
+ fail();
+ } catch (NullPointerException ex) {
+ }
+ }
+
+ public void testEquals() {
+ final MutableBoolean mutBoolA = new MutableBoolean(false);
+ final MutableBoolean mutBoolB = new MutableBoolean(false);
+ final MutableBoolean mutBoolC = new MutableBoolean(true);
+
+ assertEquals(true, mutBoolA.equals(mutBoolA));
+ assertEquals(true, mutBoolA.equals(mutBoolB));
+ assertEquals(true, mutBoolB.equals(mutBoolA));
+ assertEquals(true, mutBoolB.equals(mutBoolB));
+ assertEquals(false, mutBoolA.equals(mutBoolC));
+ assertEquals(false, mutBoolB.equals(mutBoolC));
+ assertEquals(true, mutBoolC.equals(mutBoolC));
+ assertEquals(false, mutBoolA.equals(null));
+ assertEquals(false, mutBoolA.equals(Boolean.FALSE));
+ assertEquals(false, mutBoolA.equals("false"));
+ }
+
+ public void testGetSet() {
+ final MutableBoolean mutBool = new MutableBoolean(false);
+ assertEquals(false, new MutableBoolean().booleanValue());
+
+ mutBool.setValue(Boolean.TRUE);
+ assertEquals(true, mutBool.booleanValue());
+
+ mutBool.setValue(false);
+ assertEquals(false, mutBool.booleanValue());
+
+ mutBool.setValue(true);
+ assertEquals(true, mutBool.booleanValue());
+
+ try {
+ mutBool.setValue(null);
+ fail();
+ } catch (NullPointerException ex) {
+ }
+ try {
+ mutBool.setValue("false");
+ fail();
+ } catch (ClassCastException ex) {
+ }
+ }
+
+ public void testHashCode() {
+ final MutableBoolean mutBoolA = new MutableBoolean(false);
+ final MutableBoolean mutBoolB = new MutableBoolean(false);
+ final MutableBoolean mutBoolC = new MutableBoolean(true);
+
+ assertEquals(true, mutBoolA.hashCode() == mutBoolA.hashCode());
+ assertEquals(true, mutBoolA.hashCode() == mutBoolB.hashCode());
+ assertEquals(false, mutBoolA.hashCode() == mutBoolC.hashCode());
+ assertEquals(true, mutBoolA.hashCode() == Boolean.FALSE.hashCode());
+ assertEquals(true, mutBoolC.hashCode() == Boolean.TRUE.hashCode());
+ }
+
+ public void testToString() {
+ assertEquals(Boolean.FALSE.toString(), new MutableBoolean(false).toString());
+ assertEquals(Boolean.TRUE.toString(), new MutableBoolean(true).toString());
+ }
+
+}
Propchange: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Sat Oct 22 15:03:23 2005
@@ -0,0 +1 @@
+LastChangedDate Date LastChangedRevision Revision Rev LastChangedBy Author HeadURL URL Id
Propchange: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableBooleanTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableTestSuite.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableTestSuite.java?rev=327700&r1=327699&r2=327700&view=diff
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableTestSuite.java (original)
+++ jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/mutable/MutableTestSuite.java Sat Oct 22 15:03:23 2005
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.commons.lang.mutable;
import junit.framework.Test;
@@ -21,7 +22,7 @@
/**
* JUnit tests.
- *
+ *
* @version $Id$
*/
public class MutableTestSuite {
@@ -33,6 +34,7 @@
public static Test suite() {
final TestSuite suite = new TestSuite();
+ suite.addTest(MutableBooleanTest.suite());
suite.addTest(MutableByteTest.suite());
suite.addTest(MutableShortTest.suite());
suite.addTest(MutableIntTest.suite());
@@ -44,6 +46,7 @@
return suite;
}
- private MutableTestSuite() {}
+ private MutableTestSuite() {
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org