james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Antoine Duprat (JIRA)" <server-...@james.apache.org>
Subject [jira] [Updated] (JAMES-2552) Define the policy on mail address matching
Date Wed, 26 Sep 2018 08:09:00 GMT

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


Mime
View raw message