You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by "Alexander Veit (JIRA)" <ji...@apache.org> on 2007/03/31 17:48:25 UTC

[jira] Created: (WSCOMMONS-189) NamespaceImpl and OMNamespaceImpl violate hashCode contract

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: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org


[jira] Commented: (WSCOMMONS-189) NamespaceImpl and OMNamespaceImpl violate hashCode contract

Posted by "Davanum Srinivas (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WSCOMMONS-189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506011 ] 

Davanum Srinivas commented on WSCOMMONS-189:
--------------------------------------------

Fixed in svn revision 548566

thanks,
dims

> 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: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org


[jira] Commented: (WSCOMMONS-189) NamespaceImpl and OMNamespaceImpl violate hashCode contract

Posted by "Glen Daniels (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WSCOMMONS-189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486049 ] 

Glen Daniels commented on WSCOMMONS-189:
----------------------------------------

>suggest to deprecate NamespaceImpl and OMNamespaceImpl, and to make OMNamespace a concrete class that would eventually replace NamespaceImpl and OMNamespaceImpl

This is a general direction I WHOLEHEARTEDLY support - the fewer factories and forests of repeated implementation classes the better (IMHO the current state of Axiom is a maintenance nightmare).  +1 to start with OMNamespace and make it an easy-to-use concrete class.


> 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: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org


[jira] Resolved: (WSCOMMONS-189) NamespaceImpl and OMNamespaceImpl violate hashCode contract

Posted by "Davanum Srinivas (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WSCOMMONS-189?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Davanum Srinivas resolved WSCOMMONS-189.
----------------------------------------

    Resolution: Fixed

> 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: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org