commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From henn...@apache.org
Subject svn commit: r279295 - in /jakarta/commons/proper/email/trunk: project.xml src/java/org/apache/commons/mail/Email.java src/test/org/apache/commons/mail/InvalidInternetAddressTest.java xdocs/changes.xml
Date Wed, 07 Sep 2005 10:56:51 GMT
Author: henning
Date: Wed Sep  7 03:56:41 2005
New Revision: 279295

URL: http://svn.apache.org/viewcvs?rev=279295&view=rev
Log:
Applied Niall's patch from 36536. Thanks.


Added:
    jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java
  (with props)
Modified:
    jakarta/commons/proper/email/trunk/project.xml
    jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java
    jakarta/commons/proper/email/trunk/xdocs/changes.xml

Modified: jakarta/commons/proper/email/trunk/project.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/email/trunk/project.xml?rev=279295&r1=279294&r2=279295&view=diff
==============================================================================
--- jakarta/commons/proper/email/trunk/project.xml (original)
+++ jakarta/commons/proper/email/trunk/project.xml Wed Sep  7 03:56:41 2005
@@ -152,6 +152,10 @@
             <roles/>
         </contributor>
         <contributor>
+            <name>Niall Pemberton</name>
+            <roles/>
+        </contributor>
+        <contributor>
             <name>Corey Scott</name>
             <email>corey.scott@gmail.com</email>
             <roles/>
@@ -170,8 +174,8 @@
     <dependencies>
         <dependency>
             <groupId>javamail</groupId>
-            <artifactId>javamail</artifactId>
-            <version>1.3.3</version>
+            <artifactId>mail</artifactId>
+            <version>1.2</version>
             <url>http://java.sun.com/products/javamail/</url>
         </dependency>
         <dependency>

Modified: jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java?rev=279295&r1=279294&r2=279295&view=diff
==============================================================================
--- jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java (original)
+++ jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java Wed Sep
 7 03:56:41 2005
@@ -409,16 +409,18 @@
                 name = email;
             }
 
+            // Using this instead of new InternetAddress(email, name, [charset]) makes
+            // commons-email usable with javamail 1.2 / J2EE 1.3
+            address = new InternetAddress(email);
+
             if (EmailUtils.isNotEmpty(this.charset))
             {
-                address = new InternetAddress(email, name, this.charset);
+                address.setPersonal(name, this.charset);
             }
             else
             {
-                address = new InternetAddress(email, name);
+                address.setPersonal(name);
             }
-
-            address.validate();
         }
         catch (Exception e)
         {

Added: jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java?rev=279295&view=auto
==============================================================================
--- jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java
(added)
+++ jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java
Wed Sep  7 03:56:41 2005
@@ -0,0 +1,250 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.mail;
+
+import java.lang.reflect.Method;
+
+import javax.mail.internet.InternetAddress;
+
+/**
+ * JUnit test case demonstrating InternetAddress validation.
+ *
+ * @since 1.0
+ * @author Niall Pemberton
+ * @version $Id$
+ */
+
+public class InvalidInternetAddressTest extends BaseEmailTestCase
+{
+
+    /** */
+    private static final String VALID_QUOTED_EMAIL = "\"John O'Groats\"@domain.com";
+
+    /** JavaMail 1.2. does not know about this */
+    private static Method validateMethod = null;
+
+    /** */
+    private static final String[] ARR_INVALID_EMAILS =
+        {
+            "local name@domain.com",
+            "local(name@domain.com",
+            "local)name@domain.com",
+            "local<name@domain.com",
+            "local>name@domain.com",
+            "local,name@domain.com",
+            "local;name@domain.com",
+            "local:name@domain.com",
+            "local[name@domain.com",
+            "local]name@domain.com",
+            "local\\name@domain.com",
+            "local\"name@domain.com",
+            "local\tname@domain.com",
+            "local\nname@domain.com",
+            "local\rname@domain.com",
+            "local.name@domain com",
+            "local.name@domain(com",
+            "local.name@domain)com",
+            "local.name@domain<com",
+            "local.name@domain>com",
+            "local.name@domain,com",
+            "local.name@domain;com",
+            "local.name@domain:com",
+            "local.name@domain[com",
+            "local.name@domain]com",
+            "local.name@domain\\com",
+            "local.name@domain\tcom",
+            "local.name@domain\ncom",
+            "local.name@domain\rcom",
+            "local.name@",
+            "@domain.com" };
+    /**
+     * @param name name
+     */
+    public InvalidInternetAddressTest(String name)
+    {
+        super(name);
+    }
+
+    protected void setUp()
+    {
+        super.setUp();
+
+        try
+        {
+            validateMethod = InternetAddress.class.getMethod("validate", new Class [0]);
+        }
+        catch (Exception e)
+        {
+            assertEquals("Got wrong Exception when looking for validate()", NoSuchMethodException.class,
e.getClass());
+        }
+    }
+
+    /**
+     *
+     * @throws Exception Exception
+     */
+    public void testStrictConstructor() throws Exception
+    {
+        // ====================================================================
+        // Prove InternetAddress constructor is throwing exception.
+        // ====================================================================
+
+
+        // test Invalid Email addresses
+        for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
+        {
+
+            try {
+
+                // Create Internet Address using "strict" constructor
+                new InternetAddress(ARR_INVALID_EMAILS[i]);
+
+                // Expected an exception to be thrown
+                fail("Strict " + i + " passed: " + ARR_INVALID_EMAILS[i]);
+
+            } catch (Exception ex) {
+                // Expected Result
+            }
+
+        }
+
+        // test valid 'quoted' Email addresses
+        try {
+
+            // Create Internet Address using "strict" constructor
+            new InternetAddress(VALID_QUOTED_EMAIL);
+
+        } catch (Exception ex) {
+            fail("Valid Quoted Email failed: " + VALID_QUOTED_EMAIL +
+                 " - " + ex.getMessage());
+        }
+    }
+
+    /**
+     *
+     * @throws Exception Exception
+     */
+    public void testValidateMethod() throws Exception
+    {
+        if (validateMethod == null)
+        {
+            return;
+        }
+
+        // ====================================================================
+        // Prove InternetAddress constructor isn't throwing exception and
+        // the validate() method is
+        // ====================================================================
+
+        for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
+        {
+
+            InternetAddress address = new InternetAddress(ARR_INVALID_EMAILS[i], "Joe");
+
+            // N.B. validate() doesn't check addresses containing quotes or '['
+            boolean quoted = (ARR_INVALID_EMAILS[i].indexOf("\"") >= 0);
+            int atIndex    = ARR_INVALID_EMAILS[i].indexOf("@");
+            boolean domainBracket  = (atIndex >= 0) &&
+                                     (ARR_INVALID_EMAILS[i].indexOf("[", atIndex)  >=
0);
+            try {
+
+                validateMethod.invoke(address, null);
+
+                if (!(quoted || domainBracket)) {
+                    fail("Validate " + i + " passed: " + ARR_INVALID_EMAILS[i]);
+                }
+
+            } catch (Exception ex) {
+
+                if (quoted || domainBracket) {
+                    fail("Validate " + i + " failed: " + ARR_INVALID_EMAILS[i] +
+                         " - " + ex.getMessage());
+                }
+
+            }
+
+        }
+
+        // test valid 'quoted' Email addresses
+        try {
+
+            validateMethod.invoke(new InternetAddress(VALID_QUOTED_EMAIL, "Joe"), null);
+
+        } catch (Exception ex) {
+            fail("Valid Quoted Email failed: " + VALID_QUOTED_EMAIL +
+                 " - " + ex.getMessage());
+        }
+
+    }
+
+    /**
+     *
+     * @throws Exception Exception
+     */
+    public void testValidateMethodCharset() throws Exception
+    {
+        if (validateMethod == null)
+        {
+            return;
+        }
+
+        // ====================================================================
+        // Prove InternetAddress constructor isn't throwing exception and
+        // the validate() method is
+        // ====================================================================
+
+        for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
+        {
+
+            InternetAddress address = new InternetAddress(ARR_INVALID_EMAILS[i], "Joe", "UTF-8");
+
+            // N.B. validate() doesn't check addresses containing quotes or '['
+            boolean quoted = (ARR_INVALID_EMAILS[i].indexOf("\"") >= 0);
+            int atIndex    = ARR_INVALID_EMAILS[i].indexOf("@");
+            boolean domainBracket  = (atIndex >= 0) &&
+                                     (ARR_INVALID_EMAILS[i].indexOf("[", atIndex)  >=
0);
+
+            try {
+
+                validateMethod.invoke(address, null);
+
+                if (!(quoted || domainBracket)) {
+                    fail("Validate " + i + " passed: " + ARR_INVALID_EMAILS[i]);
+                }
+
+            } catch (Exception ex) {
+
+                if (quoted || domainBracket) {
+                    fail("Validate " + i + " failed: " + ARR_INVALID_EMAILS[i] +
+                         " - " + ex.getMessage());
+                }
+
+            }
+
+        }
+
+        // test valid 'quoted' Email addresses
+        try {
+
+            validateMethod.invoke(new InternetAddress(VALID_QUOTED_EMAIL, "Joe", "UTF-8"),
null);
+
+        } catch (Exception ex) {
+            fail("Valid Quoted Email failed: " + VALID_QUOTED_EMAIL +
+                 " - " + ex.getMessage());
+        }
+    }
+
+}

Propchange: jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/InvalidInternetAddressTest.java
------------------------------------------------------------------------------
    svn:keywords = Id Author

Modified: jakarta/commons/proper/email/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/email/trunk/xdocs/changes.xml?rev=279295&r1=279294&r2=279295&view=diff
==============================================================================
--- jakarta/commons/proper/email/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/email/trunk/xdocs/changes.xml Wed Sep  7 03:56:41 2005
@@ -22,6 +22,11 @@
 
   <body>
     <release version="1.0-rc8-SNAPSHOT" date="in Subversion">
+      <action dev="henning" type="update" due-to="Niall Pemberton" issue="36536">
+        Replace our usage of address.validate() with simpler code that allows
+        commons-email to work with javamail 1.2 / J2EE 1.3 environment. Added an
+        unit test which verifies the behaviour.
+      </action>
       <action dev="henning" type="update" due-to="Niall Pemberton" issue="36535">
         Add an unit test to check for invalid addresses.
       </action>



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message