[ 
https://issues.apache.org/jira/browse/JAMES-2552?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Antoine Duprat updated JAMES-2552:
----------------------------------
    Description: 
The mail address defined in this RFC: 
[https://tools.ietf.org/html/rfc5321#section-2.4] is leading to some 
interpretation on the case sensitive of user part.

Case insensitiveness of domains is already embeded as part of {{Domain}} object 
which MailAddress relies on.

Tests needs to be added in MailAddress tests:
{code:java}
a...@d.com == a...@d.com a...@d.com != a...@d.com {code}
{{ }}
 But this commit should be dropped.

(BTW equals already do ignore case assertions...)
{code:java}
@Override
public final boolean equals(Object obj) { 
    if (obj == null) { 
        return false; 
    } else if (obj instanceof String) { 
        String theString = (String) obj; 
        return toString().equalsIgnoreCase(theString); 
    } else if (obj instanceof MailAddress) { 
        MailAddress addr = (MailAddress) obj; 
        if (isNullSender() && addr.isNullSender()) { 
            return true; 
        } 
        return equalsIgnoreCase(getLocalPart(), addr.getLocalPart()) 
            && Objects.equals(getDomain(), addr.getDomain()); 
    } 
    return false; 
}{code}
So I wonder how {{equalsIgnoreCase}} differs from {{equals}}. We may need a 
(separate) ticket to fix this incorrect behaviour (James should support case 
variation in mailAdresss - or alike)

Maybe TDD would have avoided such duplicated code BTW...
 

  was:
The mail address defined in this RFC: 
[https://tools.ietf.org/html/rfc5321#section-2.4] is leading to some 
interpretation on the case sensitive of user part.



Case insensitiveness of domains is already embeded as part of {{Domain}} object 
which MailAddress relies on.

Tests needs to be added in MailAddress tests:
{code:java}
a...@d.com == a...@d.com a...@d.com != a...@d.com {code}
{{ }}
But this commit should be dropped.

(BTW equals already do ignore case assertions...)
{code:java}
@Override
public final boolean equals(Object obj) { 
    if (obj == null) { 
        return false; 
    } else if (obj instanceof String) { 
        String theString = (String) obj; 
        return toString().equalsIgnoreCase(theString); 
    } else if (obj instanceof MailAddress) { 
        MailAddress addr = (MailAddress) obj; 
        if (isNullSender() && addr.isNullSender()) { 
            return true; 
        } 
        return equalsIgnoreCase(getLocalPart(), addr.getLocalPart()) 
            && Objects.equals(getDomain(), addr.getDomain()); 
    } 
    return false; 
}{code}
{{}}
{{}}{{}}

So I wonder how {{equalsIgnoreCase}} differs from {{equals}}. We may need a 
(separate) ticket to fix this incorrect behaviour (James should support case 
variation in mailAdresss - or alike)

Maybe TDD would have avoided such duplicated code BTW...

[

|https://tools.ietf.org/html/rfc5321#section-2.4]


> Define the policy on mail address matching
> ------------------------------------------
>
>                 Key: JAMES-2552
>                 URL: https://issues.apache.org/jira/browse/JAMES-2552
>             Project: James Server
>          Issue Type: New Feature
>            Reporter: Antoine Duprat
>            Priority: Major
>
> The mail address defined in this RFC: 
> [https://tools.ietf.org/html/rfc5321#section-2.4] is leading to some 
> interpretation on the case sensitive of user part.
> Case insensitiveness of domains is already embeded as part of {{Domain}} 
> object which MailAddress relies on.
> Tests needs to be added in MailAddress tests:
> {code:java}
> a...@d.com == a...@d.com a...@d.com != a...@d.com {code}
> {{ }}
>  But this commit should be dropped.
> (BTW equals already do ignore case assertions...)
> {code:java}
> @Override
> public final boolean equals(Object obj) { 
>     if (obj == null) { 
>         return false; 
>     } else if (obj instanceof String) { 
>         String theString = (String) obj; 
>         return toString().equalsIgnoreCase(theString); 
>     } else if (obj instanceof MailAddress) { 
>         MailAddress addr = (MailAddress) obj; 
>         if (isNullSender() && addr.isNullSender()) { 
>             return true; 
>         } 
>         return equalsIgnoreCase(getLocalPart(), addr.getLocalPart()) 
>             && Objects.equals(getDomain(), addr.getDomain()); 
>     } 
>     return false; 
> }{code}
> So I wonder how {{equalsIgnoreCase}} differs from {{equals}}. We may need a 
> (separate) ticket to fix this incorrect behaviour (James should support case 
> variation in mailAdresss - or alike)
> Maybe TDD would have avoided such duplicated code BTW...
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to