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>[EMAIL PROTECTED]</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 [EMAIL PROTECTED]",
+            "local([EMAIL PROTECTED]",
+            "local)[EMAIL PROTECTED]",
+            "local<[EMAIL PROTECTED]",
+            "local>[EMAIL PROTECTED]",
+            "local,[EMAIL PROTECTED]",
+            "local;[EMAIL PROTECTED]",
+            "local:[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "local\"[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED] com",
+            "[EMAIL PROTECTED](com",
+            "[EMAIL PROTECTED])com",
+            "[EMAIL PROTECTED]<com",
+            "[EMAIL PROTECTED]>com",
+            "[EMAIL PROTECTED],com",
+            "[EMAIL PROTECTED];com",
+            "[EMAIL PROTECTED]:com",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "[EMAIL PROTECTED]",
+            "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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to