You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ni...@apache.org on 2007/05/24 22:45:25 UTC
svn commit: r541424 - in /jakarta/commons/proper/beanutils/trunk: build.xml
src/java/org/apache/commons/beanutils/DynaProperty.java
src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java
Author: niallp
Date: Thu May 24 13:45:24 2007
New Revision: 541424
URL: http://svn.apache.org/viewvc?view=rev&rev=541424
Log:
BEANUTILS-233 Implement equals() and hashCode() methods for DynaProperty - thanks to Russell for the patch and test case!
Added:
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java (with props)
Modified:
jakarta/commons/proper/beanutils/trunk/build.xml
jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/DynaProperty.java
Modified: jakarta/commons/proper/beanutils/trunk/build.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/build.xml?view=diff&rev=541424&r1=541423&r2=541424
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/build.xml (original)
+++ jakarta/commons/proper/beanutils/trunk/build.xml Thu May 24 13:45:24 2007
@@ -272,6 +272,7 @@
test.lazy.dynamap,
test.lazy.dynalist,
test.dynabean.mapdecorator,
+ test.dynaproperty,
test.indexed.properties,
test.mapped.properties
"
@@ -540,6 +541,21 @@
<sysproperty key="org.apache.commons.logging.simplelog.defaultlog"
value="${test.level}"/>
<arg value="org.apache.commons.beanutils.LazyDynaBeanTestCase"/>
+ <classpath refid="test.classpath"/>
+ </java>
+ </target>
+
+ <target name="test.dynaproperty" depends="compile.tests">
+ <echo message="Running DynaProperty tests ..."/>
+ <java classname="${test.runner}" fork="yes"
+ failonerror="${test.failonerror}">
+ <sysproperty key="org.apache.commons.logging.LogFactory"
+ value="${test.factory}"/>
+ <sysproperty key="org.apache.commons.logging.Log"
+ value="${test.log}"/>
+ <sysproperty key="org.apache.commons.logging.simplelog.defaultlog"
+ value="${test.level}"/>
+ <arg value="org.apache.commons.beanutils.DynaPropertyTestCase"/>
<classpath refid="test.classpath"/>
</java>
</target>
Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/DynaProperty.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/DynaProperty.java?view=diff&rev=541424&r1=541423&r2=541424
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/DynaProperty.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/DynaProperty.java Thu May 24 13:45:24 2007
@@ -201,6 +201,40 @@
}
+ /**
+ * Checks this instance against the specified Object for equality. Overrides the
+ * default refererence test for equality provided by {@link java.lang.Object#equals(Object)}
+ */
+ public boolean equals(final Object obj) {
+
+ boolean result = false;
+
+ result = (obj == this);
+
+ if ((!result) && obj instanceof DynaProperty) {
+ final DynaProperty that = (DynaProperty) obj;
+ result =
+ ((this.name == null) ? (that.name == null) : (this.name.equals(that.name))) &&
+ ((this.type == null) ? (that.type == null) : (this.type.equals(that.type))) &&
+ ((this.contentType == null) ? (that.contentType == null) : (this.contentType.equals(that.contentType)));
+ }
+
+ return result;
+ }
+
+ /**
+ * @see java.lang.Object#hashCode
+ */
+ public int hashCode() {
+
+ int result = 1;
+
+ result = result * 31 + ((name == null) ? 0 : name.hashCode());
+ result = result * 31 + ((type == null) ? 0 : type.hashCode());
+ result = result * 31 + ((contentType == null) ? 0 : contentType.hashCode());
+
+ return result;
+ }
/**
* Return a String representation of this Object.
Added: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java?view=auto&rev=541424
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java (added)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java Thu May 24 13:45:24 2007
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.beanutils;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.util.Collection;
+
+/**
+ * Test case for {@link DynaProperty}.
+ *
+ * @version $Revision$ $Date$
+ */
+public class DynaPropertyTestCase extends TestCase {
+
+ private DynaProperty testPropertyWithName;
+ private DynaProperty testProperty1Duplicate;
+ private DynaProperty testPropertyWithNameAndType;
+ private DynaProperty testProperty2Duplicate;
+ private DynaProperty testPropertyWithNameAndTypeAndContentType;
+ private DynaProperty testProperty3Duplicate;
+
+ /**
+ * Construct a new instance of this test case.
+ *
+ * @param name Name of the test case
+ */
+ public DynaPropertyTestCase(String name) {
+ super(name);
+ }
+
+ /**
+ * Return the tests included in this test suite.
+ * @return a test suite
+ */
+ public static Test suite() {
+
+ return (new TestSuite(DynaPropertyTestCase.class));
+
+ }
+
+ /**
+ * Set up instance variables required by this test case.
+ */
+ protected void setUp() throws Exception {
+
+ super.setUp();
+
+ testPropertyWithName = new DynaProperty("test1");
+ testProperty1Duplicate = new DynaProperty("test1");
+
+ testPropertyWithNameAndType = new DynaProperty("test2", Integer.class);
+ testProperty2Duplicate = new DynaProperty("test2", Integer.class);
+
+ testPropertyWithNameAndTypeAndContentType = new DynaProperty("test3", Collection.class, Short.class);
+ testProperty3Duplicate = new DynaProperty("test3", Collection.class, Short.class);
+ }
+
+ /**
+ * Tear down instance variables required by this test case.
+ */
+ protected void tearDown() throws Exception {
+
+ testPropertyWithName = testProperty1Duplicate = null;
+ testPropertyWithNameAndType = testProperty2Duplicate = null;
+ testPropertyWithNameAndTypeAndContentType = testProperty3Duplicate = null;
+ super.tearDown();
+ }
+
+ /**
+ * Class under test for int hashCode(Object)
+ */
+ public void testHashCode() {
+
+ final int initialHashCode = testPropertyWithNameAndTypeAndContentType.hashCode();
+ assertEquals(testPropertyWithName.hashCode(), testProperty1Duplicate.hashCode());
+ assertEquals(testPropertyWithNameAndType.hashCode(), testProperty2Duplicate.hashCode());
+ assertEquals(testPropertyWithNameAndTypeAndContentType.hashCode(), testProperty3Duplicate.hashCode());
+ assertEquals(initialHashCode, testPropertyWithNameAndTypeAndContentType.hashCode());
+ }
+
+ /**
+ * Class under test for boolean equals(Object)
+ */
+ public void testEqualsObject() {
+
+ assertEquals(testPropertyWithName, testProperty1Duplicate);
+ assertEquals(testPropertyWithNameAndType, testProperty2Duplicate);
+ assertEquals(testPropertyWithNameAndTypeAndContentType, testProperty3Duplicate);
+ assertFalse(testPropertyWithName.equals(testPropertyWithNameAndType));
+ assertFalse(testPropertyWithNameAndType.equals(testPropertyWithNameAndTypeAndContentType));
+ assertFalse(testPropertyWithName.equals(null));
+ }
+
+}
Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaPropertyTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org