NamespaceImpl and OMNamespaceImpl violate hashCode contract
-----------------------------------------------------------
Key: WSCOMMONS-189
URL: https://issues.apache.org/jira/browse/WSCOMMONS-189
Project: WS-Commons
Issue Type: Bug
Components: AXIOM
Reporter: Alexander Veit
As the following test case shows, NamespaceImpl and OMNamespaceImpl violate the
java.lang.Object contract between equals and hashCode.
Additionally, if the test would turn from red to green, it would suggest to
deprecate NamespaceImpl and OMNamespaceImpl, and to make OMNamespace a concrete
class that would eventually replace NamespaceImpl and OMNamespaceImpl.
public final class NamespaceImplTestCase extends junit.framework.TestCase
{
public void testEqualsHashCodeContract()
{
assertEquals(
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI"),
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI"));
assertEquals(
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI", "prefix"),
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI", "prefix"));
assertEquals(
new org.apache.axiom.om.impl.OMNamespaceImpl("anyURI", "prefix"),
new org.apache.axiom.om.impl.OMNamespaceImpl("anyURI", "prefix"));
assertEquals(
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI", "prefix"),
new org.apache.axiom.om.impl.OMNamespaceImpl("anyURI", "prefix"));
assertEquals(
new org.apache.axiom.om.impl.OMNamespaceImpl("anyURI", "prefix"),
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI", "prefix"));
assertEquals(
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI").hashCode(),
new
org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI").hashCode());
assertEquals(
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI",
"prefix").hashCode(),
new org.apache.axiom.om.impl.dom.NamespaceImpl("anyURI",
"prefix").hashCode());
assertEquals(
new org.apache.axiom.om.impl.OMNamespaceImpl("anyURI",
"prefix").hashCode(),
new org.apache.axiom.om.impl.OMNamespaceImpl("anyURI",
"prefix").hashCode());
}
}
Patch: add
public int hashCode() {
return uri.hashCode() ^ (prefix != null ? prefix.hashCode() : 0);
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]