You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/09/11 02:36:58 UTC

[14/23] james-project git commit: JAMES-2138 move MailAddress to a new james-core project

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 20ddced..a5f045b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -525,6 +525,7 @@
 
     <modules>
         <module>backends-common</module>
+        <module>core</module>
         <module>mailbox</module>
         <module>mailet</module>
         <module>mdn</module>
@@ -945,6 +946,11 @@
             </dependency>
             <dependency>
                 <groupId>${project.groupId}</groupId>
+                <artifactId>james-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
                 <artifactId>james-mdn</artifactId>
                 <version>${project.version}</version>
             </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/DataLineMessageHookHandler.java
----------------------------------------------------------------------
diff --git a/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/DataLineMessageHookHandler.java b/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/DataLineMessageHookHandler.java
index 5df57f9..51251de 100644
--- a/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/DataLineMessageHookHandler.java
+++ b/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/DataLineMessageHookHandler.java
@@ -23,11 +23,11 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.WiringException;
 import org.apache.james.protocols.lmtp.LMTPMultiResponse;
 import org.apache.james.protocols.lmtp.hook.DeliverToRecipientHook;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.MailEnvelopeImpl;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/hook/DeliverToRecipientHook.java
----------------------------------------------------------------------
diff --git a/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/hook/DeliverToRecipientHook.java b/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/hook/DeliverToRecipientHook.java
index abfde07..7053cf8 100644
--- a/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/hook/DeliverToRecipientHook.java
+++ b/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/hook/DeliverToRecipientHook.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.protocols.lmtp.hook;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.MailEnvelope;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.Hook;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java b/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
index dee82d3..b2978c2 100644
--- a/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
+++ b/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
@@ -34,6 +34,7 @@ import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.net.smtp.RelayPath;
 import org.apache.commons.net.smtp.SMTPClient;
 import org.apache.commons.net.smtp.SMTPReply;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.Protocol;
 import org.apache.james.protocols.api.ProtocolServer;
 import org.apache.james.protocols.api.handler.ProtocolHandler;
@@ -41,7 +42,6 @@ import org.apache.james.protocols.api.handler.WiringException;
 import org.apache.james.protocols.api.utils.ProtocolServerUtils;
 import org.apache.james.protocols.lmtp.hook.DeliverToRecipientHook;
 import org.apache.james.protocols.smtp.AbstractSMTPServerTest;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.MailEnvelope;
 import org.apache.james.protocols.smtp.SMTPProtocol;
 import org.apache.james.protocols.smtp.SMTPSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/pom.xml b/protocols/pom.xml
index 7110834..0f58e8b 100644
--- a/protocols/pom.xml
+++ b/protocols/pom.xml
@@ -83,6 +83,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.james</groupId>
+                <artifactId>james-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.james</groupId>
                 <artifactId>james-server-data-api</artifactId>
                 <version>${project.version}</version>
             </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/smtp/pom.xml b/protocols/smtp/pom.xml
index 497ff47..14af535 100644
--- a/protocols/smtp/pom.xml
+++ b/protocols/smtp/pom.xml
@@ -35,6 +35,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.james</groupId>
+            <artifactId>james-core</artifactId>
+        </dependency>
+        <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>protocols-api</artifactId>
         </dependency>
@@ -59,7 +63,6 @@
         <dependency>
             <groupId>com.sun.mail</groupId>
             <artifactId>javax.mail</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddress.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddress.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddress.java
index 8cdd964..d420602 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddress.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddress.java
@@ -17,10 +17,10 @@
  * under the License.                                           *
  ****************************************************************/
 
-
 package org.apache.james.protocols.smtp;
 
-import java.util.Locale;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
 
 /**
  * A representation of an email address.
@@ -57,465 +57,24 @@ import java.util.Locale;
  * http://www.freesoft.org/CIE/RFC/821/15.htm</p>
  *
  * <strong>This version is copied from mailet-api with a few changes to not make it depend on javamail</strong>
+ *
+ * @Deprecated Use james-core {@link org.apache.james.core.MailAddress} instead.
  */
-public class MailAddress {
-
-    private final static char[] SPECIAL =
-    {'<', '>', '(', ')', '[', ']', '\\', '.', ',', ';', ':', '@', '\"'};
-
-    private String localPart = null;
-    private String domain = null;
-
-    private static final MailAddress NULL_SENDER = new MailAddress() {
-
-        @Override
-        public String getDomain() {
-            return "";
-        }
-
-        @Override
-        public String getLocalPart() {
-            return "";
-        }
-
-        @Override
-        public String toString() {
-            return "";
-        }
-
-        @Override
-        public boolean isNullSender() {
-            return true;
-        }
-        
-    };
-    
-    /**
-     * Strips source routing. According to RFC-2821 it is a valid approach
-     * to handle mails containing RFC-821 source-route information.
-     * 
-     * @param address the address to strip
-     * @param pos current position
-     * @return new pos
-     */
-    private int stripSourceRoute(String address, int pos) {
-        if (pos < address.length()) {
-            if (address.charAt(pos)=='@') { 
-                int i = address.indexOf(':');
-                if (i != -1) {
-                    pos = i+1;
-                }
-            }
-        }
-        return pos;
-    }
-    
-    public static MailAddress nullSender() {
-        return NULL_SENDER;
-    }
-    
-    private MailAddress() {
-        
-    }
-    /**
-     * Constructs a MailAddress by parsing the provided address.
-     *
-     * @param address the email address, compliant to the RFC2822 3.4.1. addr-spec specification
-     * @throws MailAddressException if the parse failed
-     */
-    public MailAddress(String address) throws MailAddressException {
-        address = address.trim();
-        int pos = 0;
-        
-        // Test if mail address has source routing information (RFC-821) and get rid of it!!
-        //must be called first!! (or at least prior to updating pos)
-        stripSourceRoute(address, pos);
-
-        StringBuffer localPartSB = new StringBuffer();
-        StringBuffer domainSB = new StringBuffer();
-        //Begin parsing
-        //<mailbox> ::= <local-part> "@" <domain>
-
-        try {
-            //parse local-part
-            //<local-part> ::= <dot-string> | <quoted-string>
-            if (address.charAt(pos) == '\"') {
-                pos = parseQuotedLocalPart(localPartSB, address, pos);
-                if (localPartSB.toString().length() == 2) {
-                    throw new MailAddressException("No quoted local-part (user account) found at position " + (pos + 2) + " in '" + address + "'",address,pos+2);
-                }
-            } else {
-                pos = parseUnquotedLocalPart(localPartSB, address, pos);
-                if (localPartSB.toString().length() == 0) {
-                    throw new MailAddressException("No local-part (user account) found at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                }
-            }
-
-            //find @
-            if (pos >= address.length() || address.charAt(pos) != '@') {
-                throw new MailAddressException("Did not find @ between local-part and domain at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-            }
-            pos++;
-
-            //parse domain
-            //<domain> ::=  <element> | <element> "." <domain>
-            //<element> ::= <name> | "#" <number> | "[" <dotnum> "]"
-            while (true) {
-                if (address.charAt(pos) == '#') {
-                    pos = parseNumber(domainSB, address, pos);
-                } else if (address.charAt(pos) == '[') {
-                    pos = parseDomainLiteral(domainSB, address, pos);
-                } else {
-                    pos = parseDomain(domainSB, address, pos);
-                }
-                if (pos >= address.length()) {
-                    break;
-                }
-                if (address.charAt(pos) == '.') {
-                    domainSB.append('.');
-                    pos++;
-                    continue;
-                }
-                break;
-            }
-
-            if (domainSB.toString().length() == 0) {
-                throw new MailAddressException("No domain found at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-            }
-        } catch (IndexOutOfBoundsException ioobe) {
-            throw new MailAddressException("Out of data at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-        }
-
-        localPart = localPartSB.toString();
-        domain = domainSB.toString();
-    }
-
-    /**
-     * Constructs a MailAddress with the provided local part and domain.
-     *
-     * @param localPart the local-part portion. This is a domain dependent string.
-     *        In addresses, it is simply interpreted on the particular host as a
-     *        name of a particular mailbox. per RFC2822 3.4.1. addr-spec specification
-     * @param domain the domain portion. This identifies the point to which the mail
-     *        is delivered  per RFC2822 3.4.1. addr-spec specification
-     * @throws AddressException if the parse failed
-     */
-    public MailAddress(String localPart, String domain) throws MailAddressException {
-        this(localPart+"@"+domain);
+@Deprecated
+public class MailAddress extends org.apache.james.core.MailAddress {
+    public MailAddress(String address) throws AddressException {
+        super(address);
     }
 
-
-    
-    /**
-     * Returns the domain part per RFC2822 3.4.1. addr-spec specification.
-     *
-     * @return the domain part of this email address. If the domain is of
-     * the domain-literal form  (e.g. [yyy.yyy.yyy.yyy]), the braces will
-     * have been stripped returning the raw IP address.
-     * 
-     */
-    public String getDomain() {
-        if (!(domain.startsWith("[") && domain.endsWith("]"))) {
-            return domain;
-        } 
-        return domain.substring(1, domain.length() -1);
-    }
-
-
-    
-    /**
-     * Returns the local-part per RFC2822 3.4.1. addr-spec specification.
-     *
-     * @return  the local-part of this email address as defined by the
-     *          RFC2822 3.4.1. addr-spec specification. 
-     *          The local-part portion is a domain dependent string.
-     *          In addresses, it is simply interpreted on the particular
-     *          host as a name of a particular mailbox
-     *          (the part before the "@" character)
-     *          
-     * @since Mailet API 2.4
-     */
-    public String getLocalPart() {
-        return localPart;
-    }
-
-    @Override
-    public String toString() {
-        StringBuffer addressBuffer =
-            new StringBuffer(128)
-                    .append(localPart)
-                    .append("@")
-                    .append(domain);
-        return addressBuffer.toString();
-    }
-    
-    
-    /**
-     * Indicates whether some other object is "equal to" this one.
-     * 
-     * Note that this implementation breaks the general contract of the
-     * <code>equals</code> method by allowing an instance to equal to a
-     * <code>String</code>. It is recommended that implementations avoid
-     * relying on this design which may be removed in a future release.
-     * 
-     * @returns true if the given object is equal to this one, false otherwise
-     */
-    @Override
-    public 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;
-            return getLocalPart().equalsIgnoreCase(addr.getLocalPart()) && getDomain().equalsIgnoreCase(addr.getDomain());
-        }
-        return false;
-    }
-
-    /**
-     * Returns a hash code value for this object.
-     * <p>
-     * This method is implemented by returning the hash code of the canonical
-     * string representation of this address, so that all instances representing
-     * the same address will return an identical hash code.
-     *
-     * @return the hashcode.
-     */
-    @Override
-    public int hashCode() {
-        return toString().toLowerCase(Locale.US).hashCode();
-    }
-
-    private int parseQuotedLocalPart(StringBuffer lpSB, String address, int pos) throws MailAddressException {
-        StringBuffer resultSB = new StringBuffer();
-        resultSB.append('\"');
-        pos++;
-        //<quoted-string> ::=  """ <qtext> """
-        //<qtext> ::=  "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>
-        while (true) {
-            if (address.charAt(pos) == '\"') {
-                resultSB.append('\"');
-                //end of quoted string... move forward
-                pos++;
-                break;
-            }
-            if (address.charAt(pos) == '\\') {
-                resultSB.append('\\');
-                pos++;
-                //<x> ::= any one of the 128 ASCII characters (no exceptions)
-                char x = address.charAt(pos);
-                if (x < 0 || x > 127) {
-                    throw new MailAddressException("Invalid \\ syntaxed character at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                }
-                resultSB.append(x);
-                pos++;
-            } else {
-                //<q> ::= any one of the 128 ASCII characters except <CR>,
-                //<LF>, quote ("), or backslash (\)
-                char q = address.charAt(pos);
-                if (q <= 0 || q == '\n' || q == '\r' || q == '\"' || q == '\\') {
-                    throw new MailAddressException("Unquoted local-part (user account) must be one of the 128 ASCI characters exception <CR>, <LF>, quote (\"), or backslash (\\) at position " + (pos + 1) + " in '" + address + "'", address, pos+1);
-                }
-                resultSB.append(q);
-                pos++;
-            }
-        }
-        lpSB.append(resultSB);
-        return pos;
-    }
-
-    private int parseUnquotedLocalPart(StringBuffer lpSB, String address, int pos) throws MailAddressException {
-        StringBuffer resultSB = new StringBuffer();
-        //<dot-string> ::= <string> | <string> "." <dot-string>
-        boolean lastCharDot = false;
-        while (true) {
-            //<string> ::= <char> | <char> <string>
-            //<char> ::= <c> | "\" <x>
-            if (address.charAt(pos) == '\\') {
-                resultSB.append('\\');
-                pos++;
-                //<x> ::= any one of the 128 ASCII characters (no exceptions)
-                char x = address.charAt(pos);
-                if (x < 0 || x > 127) {
-                    throw new MailAddressException("Invalid \\ syntaxed character at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                }
-                resultSB.append(x);
-                pos++;
-                lastCharDot = false;
-            } else if (address.charAt(pos) == '.') {
-                resultSB.append('.');
-                pos++;
-                lastCharDot = true;
-            } else if (address.charAt(pos) == '@') {
-                //End of local-part
-                break;
-            } else {
-                //<c> ::= any one of the 128 ASCII characters, but not any
-                //    <special> or <SP>
-                //<special> ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "."
-                //    | "," | ";" | ":" | "@"  """ | the control
-                //    characters (ASCII codes 0 through 31 inclusive and
-                //    127)
-                //<SP> ::= the space character (ASCII code 32)
-                char c = address.charAt(pos);
-                if (c <= 31 || c >= 127 || c == ' ') {
-                    throw new MailAddressException("Invalid character in local-part (user account) at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                }
-                for (char aChar : SPECIAL) {
-                    if (c == aChar) {
-                        throw new MailAddressException("Invalid character in local-part (user account) at position " + (pos + 1) + " in '" + address + "'", address, pos + 1);
-                    }
-                }
-                resultSB.append(c);
-                pos++;
-                lastCharDot = false;
-            }
-        }
-        if (lastCharDot) {
-            throw new MailAddressException("local-part (user account) ended with a \".\", which is invalid in address '" + address + "'",address,pos);
-        }
-        lpSB.append(resultSB);
-        return pos;
-    }
-
-    private int parseNumber(StringBuffer dSB, String address, int pos) throws MailAddressException {
-        //<number> ::= <d> | <d> <number>
-
-        StringBuffer resultSB = new StringBuffer();
-        //We keep the position from the class level pos field
-        while (true) {
-            if (pos >= address.length()) {
-                break;
-            }
-            //<d> ::= any one of the ten digits 0 through 9
-            char d = address.charAt(pos);
-            if (d == '.') {
-                break;
-            }
-            if (d < '0' || d > '9') {
-                throw new MailAddressException("In domain, did not find a number in # address at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-            }
-            resultSB.append(d);
-            pos++;
-        }
-        dSB.append(resultSB);
-        return pos;
+    public MailAddress(String localPart, String domain) throws AddressException {
+        super(localPart, domain);
     }
 
-    private int parseDomainLiteral(StringBuffer dSB, String address, int pos) throws MailAddressException {
-        //throw away all irrelevant '\' they're not necessary for escaping of '.' or digits, and are illegal as part of the domain-literal
-        while(address.contains("\\")){
-             address= address.substring(0,address.indexOf("\\")) + address.substring(address.indexOf("\\")+1);
-        }
-        StringBuffer resultSB = new StringBuffer();
-        //we were passed the string with pos pointing the the [ char.
-        // take the first char ([), put it in the result buffer and increment pos
-        resultSB.append(address.charAt(pos));
-        pos++;
-
-        //<dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>
-        for (int octet = 0; octet < 4; octet++) {
-            //<snum> ::= one, two, or three digits representing a decimal
-            //                      integer value in the range 0 through 255
-            //<d> ::= any one of the ten digits 0 through 9
-            StringBuffer snumSB = new StringBuffer();
-            for (int digits = 0; digits < 3; digits++) {
-                char d = address.charAt(pos);
-                if (d == '.') {
-                    break;
-                }
-                if (d == ']') {
-                    break;
-                }
-                if (d < '0' || d > '9') {
-                    throw new MailAddressException("Invalid number at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                }
-                snumSB.append(d);
-                pos++;
-            }
-            if (snumSB.toString().length() == 0) {
-                throw new MailAddressException("Number not found at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-            }
-            try {
-                int snum = Integer.parseInt(snumSB.toString());
-                if (snum > 255) {
-                    throw new MailAddressException("Invalid number at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                }
-            } catch (NumberFormatException nfe) {
-                throw new MailAddressException("Invalid number at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-            }
-            resultSB.append(snumSB.toString());
-            if (address.charAt(pos) == ']') {
-                if (octet < 3) {
-                    throw new MailAddressException("End of number reached too quickly at " + (pos + 1) + " in '" + address + "'",address,pos+1);
-                } 
-                break;
-            }
-            if (address.charAt(pos) == '.') {
-                resultSB.append('.');
-                pos++;
-            }
-        }
-        if (address.charAt(pos) != ']') {
-            throw new MailAddressException("Did not find closing bracket \"]\" in domain at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-        }
-        resultSB.append(']');
-        pos++;
-        dSB.append(resultSB);
-        return pos;
+    public MailAddress(InternetAddress address) throws AddressException {
+        super(address);
     }
 
-    private int parseDomain(StringBuffer dSB, String address, int pos) throws MailAddressException {
-        StringBuffer resultSB = new StringBuffer();
-        //<name> ::= <a> <ldh-str> <let-dig>
-        //<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
-        //<let-dig> ::= <a> | <d>
-        //<let-dig-hyp> ::= <a> | <d> | "-"
-        //<a> ::= any one of the 52 alphabetic characters A through Z
-        //  in upper case and a through z in lower case
-        //<d> ::= any one of the ten digits 0 through 9
-
-        // basically, this is a series of letters, digits, and hyphens,
-        // but it can't start with a digit or hypthen
-        // and can't end with a hyphen
-
-        // in practice though, we should relax this as domain names can start
-        // with digits as well as letters.  So only check that doesn't start
-        // or end with hyphen.
-        while (true) {
-            if (pos >= address.length()) {
-                break;
-            }
-            char ch = address.charAt(pos);
-            if ((ch >= '0' && ch <= '9') ||
-                (ch >= 'a' && ch <= 'z') ||
-                (ch >= 'A' && ch <= 'Z') ||
-                (ch == '-')) {
-                resultSB.append(ch);
-                pos++;
-                continue;
-            }
-            if (ch == '.') {
-                break;
-            }
-            throw new MailAddressException("Invalid character at " + pos + " in '" + address + "'",address,pos);
-        }
-        String result = resultSB.toString();
-        if (result.startsWith("-") || result.endsWith("-")) {
-            throw new MailAddressException("Domain name cannot begin or end with a hyphen \"-\" at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
-        }
-        dSB.append(result);
-        return pos;
-    }
-    
-    /**
-     * Return <code>true</code> if the {@link MailAddress} should represent a null sender (<>)
-     * 
-     * @return nullsender
-     */
-    public boolean isNullSender() {
-        return false;
+    public MailAddress(org.apache.james.core.MailAddress address) throws AddressException {
+        super(address.asString());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddressException.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddressException.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddressException.java
index e3a3b29..dc94811 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddressException.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailAddressException.java
@@ -17,20 +17,17 @@
  * under the License.                                           *
  ****************************************************************/
 
-
 package org.apache.james.protocols.smtp;
 
+/**
+ * @Deprecated see {@link org.apache.james.protocols.smtp.MailAddress} for more details.
+ */
+@Deprecated
 public class MailAddressException extends Exception{
-
-    /**
-     * 
-     */
     private static final long serialVersionUID = -2845113080526615146L;
     private final String address;
     private final int pos;
 
-   
-
     public MailAddressException(String message, String address, int pos) {
         super(message);
         this.address = address;
@@ -45,5 +42,4 @@ public class MailAddressException extends Exception{
         return pos;
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelope.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelope.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelope.java
index b463ed1..f85d861 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelope.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelope.java
@@ -24,6 +24,8 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.List;
 
+import org.apache.james.core.MailAddress;
+
 /**
  * The MailEnvelope of a SMTP-Transaction
  * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java
index a3a0342..c30d81e 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/MailEnvelopeImpl.java
@@ -26,6 +26,8 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.List;
 
+import org.apache.james.core.MailAddress;
+
 /**
  * MailEnvelope implementation which stores everything in memory
  * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
index c5fad00..570075b 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPSessionImpl.java
@@ -20,6 +20,7 @@ package org.apache.james.protocols.smtp;
 
 import java.util.Collection;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSessionImpl;
 import org.apache.james.protocols.api.ProtocolTransport;
 import org.apache.james.protocols.api.Response;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
index 1ea59ec..57dde32 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.james.protocols.smtp.core;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
index f625f2b..baa390f 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
@@ -20,8 +20,8 @@ package org.apache.james.protocols.smtp.core;
 
 import java.util.Locale;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AcceptRecipientIfRelayingIsAllowed.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AcceptRecipientIfRelayingIsAllowed.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AcceptRecipientIfRelayingIsAllowed.java
index 373a133..70289bf 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AcceptRecipientIfRelayingIsAllowed.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AcceptRecipientIfRelayingIsAllowed.java
@@ -20,7 +20,7 @@ package org.apache.james.protocols.smtp.core;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.RcptHook;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
index d20c1d0..485cb21 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
@@ -30,6 +30,7 @@ import javax.inject.Inject;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.protocols.api.ProtocolSession;
@@ -39,7 +40,6 @@ import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.api.handler.ExtensibleHandler;
 import org.apache.james.protocols.api.handler.LineHandler;
 import org.apache.james.protocols.api.handler.WiringException;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.MailEnvelope;
 import org.apache.james.protocols.smtp.MailEnvelopeImpl;
 import org.apache.james.protocols.smtp.SMTPResponse;
@@ -49,7 +49,6 @@ import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.util.MDCBuilder;
 
 import com.google.common.base.Throwables;
-
 import com.google.common.collect.ImmutableSet;
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
index a47726f..4d3cb54 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
@@ -30,11 +30,11 @@ import javax.inject.Inject;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Request;
 import org.apache.james.protocols.api.Response;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/PostmasterAbuseRcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/PostmasterAbuseRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/PostmasterAbuseRcptHook.java
index 6c9f54e..dcc9151 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/PostmasterAbuseRcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/PostmasterAbuseRcptHook.java
@@ -20,7 +20,7 @@ package org.apache.james.protocols.smtp.core;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.RcptHook;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
index 719cabc..7e00dc8 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
@@ -28,11 +28,11 @@ import javax.inject.Inject;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.CommandHandler;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
index af4cac2..6960d6d 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
@@ -28,8 +28,8 @@ import java.util.Locale;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
index 2fe36b0..c69b5f2 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
@@ -21,7 +21,7 @@ package org.apache.james.protocols.smtp.core.fastfail;
 
 import java.util.Iterator;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
index 8a148ba..54233ec 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
@@ -17,12 +17,9 @@
  * under the License.                                           *
  ****************************************************************/
 
-
-
-
 package org.apache.james.protocols.smtp.core.fastfail;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
@@ -32,7 +29,6 @@ import org.apache.james.protocols.smtp.hook.RcptHook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 /**
  * Handler which want todo an recipient check should extend this
  *

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
index 312708e..bd2b65f 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
@@ -26,8 +26,8 @@ import java.util.StringTokenizer;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HookResult;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
index 43c4b5b..de38ac1 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
@@ -24,7 +24,7 @@ package org.apache.james.protocols.smtp.core.fastfail;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
index b3a47eb..5450773 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
@@ -22,11 +22,10 @@ package org.apache.james.protocols.smtp.core.fastfail;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
-
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java
index 73df529..4b77129 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java
@@ -28,7 +28,7 @@ import java.util.Map;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.RcptHook;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
index 69c823e..8424f48 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
@@ -17,17 +17,14 @@
  * under the License.                                           *
  ****************************************************************/
 
-
-
-
 package org.apache.james.protocols.smtp.core.fastfail;
 
 import java.util.Collection;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
@@ -38,7 +35,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * 
  * This handler can be used to just ignore duplicated recipients. 
  */
 public class SupressDuplicateRcptHandler implements RcptHook {

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
index 1118f3f..c1341bb 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.james.protocols.smtp.core.fastfail;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/MailHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/MailHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/MailHook.java
index 8548ef0..a0feafa 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/MailHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/MailHook.java
@@ -17,13 +17,9 @@
  * under the License.                                           *
  ****************************************************************/
 
-
-
-
-
 package org.apache.james.protocols.smtp.hook;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/RcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/RcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/RcptHook.java
index 8ab2b2f..bbc65b1 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/RcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/RcptHook.java
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.james.protocols.smtp.hook;
 
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
index ffc3bc6..fd43d40 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
@@ -19,9 +19,9 @@
 
 package org.apache.james.protocols.smtp.hook;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.james.protocols.smtp.MailAddress;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.MailEnvelope;
 import org.apache.james.protocols.smtp.SMTPSession;
 
@@ -34,16 +34,16 @@ import org.apache.james.protocols.smtp.SMTPSession;
  */
 public class SimpleHook implements HeloHook, MailHook, RcptHook, MessageHook {
 
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
     /**
      * Return {@link HookResult} with {@link HookReturnCode#OK}
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
index bae1991..e92676b 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
@@ -35,6 +35,7 @@ import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.net.smtp.SMTPClient;
 import org.apache.commons.net.smtp.SMTPReply;
+import org.apache.james.core.MailAddress;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.protocols.api.Protocol;
 import org.apache.james.protocols.api.ProtocolServer;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
index fb798e4..8496bee 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
@@ -31,9 +31,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
-import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
 import org.junit.Before;
@@ -172,7 +171,7 @@ public class DNSRBLHandlerTest {
 
     // ip is blacklisted and has txt details
     @Test
-    public void testBlackListedTextPresent() throws MailAddressException {
+    public void testBlackListedTextPresent() throws Exception {
         DNSRBLHandler rbl = createHandler();
        
         setupMockedSMTPSession(new MailAddress("any@domain"));
@@ -187,7 +186,7 @@ public class DNSRBLHandlerTest {
 
     // ip is blacklisted and has txt details but we don'T want to retrieve the txt record
     @Test
-    public void testGetNoDetail() throws MailAddressException {
+    public void testGetNoDetail() throws Exception {
         DNSRBLHandler rbl = createHandler();
         setupMockedSMTPSession(new MailAddress("any@domain"));
 
@@ -200,7 +199,7 @@ public class DNSRBLHandlerTest {
 
     // ip is allowed to relay
     @Test
-    public void testRelayAllowed() throws MailAddressException {
+    public void testRelayAllowed() throws Exception {
         DNSRBLHandler rbl = createHandler();
         setRelayingAllowed(true);
         setupMockedSMTPSession(new MailAddress("any@domain"));
@@ -214,7 +213,7 @@ public class DNSRBLHandlerTest {
 
     // ip not on blacklist
     @Test
-    public void testNotBlackListed() throws MailAddressException {
+    public void testNotBlackListed() throws Exception {
         DNSRBLHandler rbl = createHandler();
 
         setRemoteIp("192.168.0.1");
@@ -229,7 +228,7 @@ public class DNSRBLHandlerTest {
 
     // ip on blacklist without txt details
     @Test
-    public void testBlackListedNoTxt() throws MailAddressException {
+    public void testBlackListedNoTxt() throws Exception {
         DNSRBLHandler rbl = createHandler();
 
         setRemoteIp("127.0.0.3");
@@ -244,7 +243,7 @@ public class DNSRBLHandlerTest {
 
     // ip on whitelist
     @Test
-    public void testWhiteListed() throws MailAddressException {
+    public void testWhiteListed() throws Exception {
         DNSRBLHandler rbl = createHandler();
 
         setRemoteIp("127.0.0.2");

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
index 345cf09..b715049 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
@@ -24,8 +24,7 @@ import static org.junit.Assert.assertEquals;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.james.protocols.smtp.MailAddress;
-import org.apache.james.protocols.smtp.MailAddressException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
@@ -53,7 +52,7 @@ public class MaxRcptHandlerTest {
     }
     
     @Test
-    public void testRejectMaxRcpt() throws MailAddressException {
+    public void testRejectMaxRcpt() throws Exception {
         SMTPSession session = setupMockedSession(3);
         MaxRcptHandler handler = new MaxRcptHandler();
         
@@ -65,7 +64,7 @@ public class MaxRcptHandlerTest {
   
   
     @Test
-    public void testNotRejectMaxRcpt() throws MailAddressException {
+    public void testNotRejectMaxRcpt() throws Exception {
         SMTPSession session = setupMockedSession(3);
         MaxRcptHandler handler = new MaxRcptHandler();    
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
index 70606f9..9f5f68c 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
@@ -25,7 +25,6 @@ import static org.junit.Assert.assertEquals;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
@@ -35,7 +34,7 @@ public class MaxUnknownCmdHandlerTest {
 
     
     @Test
-    public void testRejectAndClose() throws MailAddressException {
+    public void testRejectAndClose() throws Exception {
         SMTPSession session = new BaseFakeSMTPSession() {
             private final HashMap<String,Object> map = new HashMap<>();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
index ec7ea8a..e5cee47 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
@@ -28,9 +28,8 @@ import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
-import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
@@ -120,7 +119,7 @@ public class ResolvableEhloHeloHandlerTest {
     }
     
     @Test
-    public void testRejectInvalidHelo() throws MailAddressException {
+    public void testRejectInvalidHelo() throws Exception {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(INVALID_HOST,false,false,null,mailAddress);
         ResolvableEhloHeloHandler handler = createHandler();
@@ -133,7 +132,7 @@ public class ResolvableEhloHeloHandlerTest {
     }
     
     @Test
-    public void testNotRejectValidHelo() throws MailAddressException {
+    public void testNotRejectValidHelo() throws Exception {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(VALID_HOST,false,false,null,mailAddress);
         ResolvableEhloHeloHandler handler = createHandler();
@@ -147,7 +146,7 @@ public class ResolvableEhloHeloHandlerTest {
     }
    
     @Test
-    public void testRejectInvalidHeloAuthUser() throws MailAddressException {
+    public void testRejectInvalidHeloAuthUser() throws Exception {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(INVALID_HOST,false,true,"valid@user",mailAddress);
         ResolvableEhloHeloHandler handler = createHandler();
@@ -163,7 +162,7 @@ public class ResolvableEhloHeloHandlerTest {
     
    
     @Test
-    public void testRejectRelay() throws MailAddressException {
+    public void testRejectRelay() throws Exception {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(INVALID_HOST,true,false,null,mailAddress);
         ResolvableEhloHeloHandler handler = createHandler();

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
index c12df5a..8eff79e 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
@@ -17,7 +17,6 @@
  * under the License.                                           *
  ****************************************************************/
 
-
 package org.apache.james.protocols.smtp.core.fastfail;
 
 import static org.junit.Assert.assertEquals;
@@ -26,8 +25,7 @@ import static org.junit.Assert.fail;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 
-import org.apache.james.protocols.smtp.MailAddress;
-import org.apache.james.protocols.smtp.MailAddressException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
@@ -52,7 +50,7 @@ public class SpamTrapHandlerTest {
     }
     
     @Test
-    public void testSpamTrap() throws MailAddressException {
+    public void testSpamTrap() throws Exception {
         String ip = "192.168.100.1";
         String ip2 = "192.168.100.2";
         long blockTime = 2000;

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
index 9dee55c..794cc5b 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
@@ -26,9 +26,8 @@ import java.util.Map;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.core.MailAddress;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.MailAddress;
-import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
@@ -116,7 +115,7 @@ public class ValidSenderDomainHandlerTest {
     }
 
     @Test
-    public void testInvalidSenderDomainReject() throws MailAddressException {
+    public void testInvalidSenderDomainReject() throws Exception {
         ValidSenderDomainHandler handler = createHandler();
         SMTPSession session = setupMockedSession(new MailAddress("invalid@invalid"));
         int response = handler.doMail(session,(MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction)).getResult();

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java b/server/container/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java
deleted file mode 100644
index a94dd5e..0000000
--- a/server/container/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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.james.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Enumeration;
-
-import javax.mail.internet.InternetHeaders;
-
-/**
- * Provide an {@link InputStream} over an {@link InternetHeaders} instance. When
- * the end of {@link InternetHeaders} are reached a {@link #LINE_SEPERATOR} is
- * append
- */
-public class InternetHeadersInputStream extends InputStream {
-
-    private final static String LINE_SEPERATOR = "\r\n";
-
-    private final Enumeration<String> headerLines;
-    private byte[] currLine;
-    private int pos = 0;
-
-    @SuppressWarnings("unchecked")
-    public InternetHeadersInputStream(InternetHeaders headers) {
-        this(headers.getAllHeaderLines());
-    }
-
-    public InternetHeadersInputStream(Enumeration<String> headerLines) {
-        this.headerLines = headerLines;
-    }
-
-    @Override
-    public int read() throws IOException {
-        if (currLine == null || pos == currLine.length) {
-            if (!readNextLine()) {
-                return -1;
-            }
-        }
-        return currLine[pos++];
-    }
-
-    /**
-     * Load the next header line if possible
-     * 
-     * @return true if there was an headerline which could be read
-     * 
-     * @throws IOException
-     */
-    private boolean readNextLine() throws IOException {
-        if (headerLines.hasMoreElements()) {
-            try {
-                pos = 0;
-                String line = (headerLines.nextElement() + LINE_SEPERATOR);
-                // Add seperator to show that headers are complete
-                if (!headerLines.hasMoreElements()) {
-                    line += LINE_SEPERATOR;
-                }
-                currLine = line.getBytes("US-ASCII");
-                return true;
-            } catch (UnsupportedEncodingException e) {
-                // should never happen
-                throw new IOException("US-ASCII encoding not supported by this platform ?!");
-            }
-        } else {
-            return false;
-        }
-    }
-
-    @Override
-    public void close() throws IOException {
-        currLine = null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java b/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
deleted file mode 100644
index 4b3e5cb..0000000
--- a/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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.james.core;
-
-import org.apache.james.filesystem.api.JamesDirectoriesProvider;
-
-public class JamesServerResourceLoader implements JamesDirectoriesProvider {
-
-    private final String rootDirectory;
-
-    public JamesServerResourceLoader(String rootDirectory) {
-        this.rootDirectory = rootDirectory;
-    }
-
-    /**
-     * @see org.apache.james.container.spring.resource.JamesResourceLoader#getAbsoluteDirectory()
-     */
-    public String getAbsoluteDirectory() {
-        return "/";
-    }
-
-    /**
-     * @see
-     * org.apache.james.container.spring.resource.JamesResourceLoader#getConfDirectory()
-     */
-    public String getConfDirectory() {
-        return getRootDirectory() + "/conf/";
-    }
-
-    /**
-     * @see
-     * org.apache.james.container.spring.resource.JamesResourceLoader#getVarDirectory()
-     */
-    public String getVarDirectory() {
-        return getRootDirectory() + "/var/";
-    }
-
-    /**
-     * Return the directory where the external jar libraries must be placed
-     * by the administrator. The jars may contain mailets, jdbc drivers,...
-     * 
-     * @return externalLibraryDirectory
-     */
-    public String getExternalLibraryDirectory() {
-        return getRootDirectory() + "/conf/lib/";
-    }
-
-    /**
-     * @see
-     * org.apache.james.container.spring.resource.JamesResourceLoader#getRootDirectory()
-     */
-    public String getRootDirectory() {
-        return rootDirectory;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/936746b9/server/container/core/src/main/java/org/apache/james/core/MailHeaders.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/core/MailHeaders.java b/server/container/core/src/main/java/org/apache/james/core/MailHeaders.java
deleted file mode 100644
index 9603bc2..0000000
--- a/server/container/core/src/main/java/org/apache/james/core/MailHeaders.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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.james.core;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.util.Enumeration;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.InternetHeaders;
-
-import org.apache.mailet.base.RFC2822Headers;
-
-/**
- * This interface defines a container for mail headers. Each header must use
- * MIME format:
- * 
- * <pre>
- * name: value
- * </pre>
- */
-public class MailHeaders extends InternetHeaders implements Serializable, Cloneable {
-
-    private static final long serialVersionUID = 238748126601L;
-    private boolean modified = false;
-    private long size = -1;
-
-    /**
-     * No argument constructor
-     * 
-     * @throws MessagingException
-     *             if the super class cannot be properly instantiated
-     */
-    public MailHeaders() {
-        super();
-    }
-
-    /**
-     * Constructor that takes an InputStream containing the contents of the set
-     * of mail headers.
-     * 
-     * @param in
-     *            the InputStream containing the header data
-     * 
-     * @throws MessagingException
-     *             if the super class cannot be properly instantiated based on
-     *             the stream
-     */
-    public MailHeaders(InputStream in) throws MessagingException {
-        super();
-        load(in);
-    }
-
-    /**
-     * Write the headers to an output stream
-     * 
-     * @param out
-     *            the OutputStream to which to write the headers
-     */
-    @SuppressWarnings("unchecked")
-    public void writeTo(OutputStream out) throws MessagingException {
-        MimeMessageUtil.writeHeadersTo(getAllHeaderLines(), out);
-    }
-
-    /**
-     * Generate a representation of the headers as a series of bytes.
-     * 
-     * @return the byte array containing the headers
-     */
-    public byte[] toByteArray() throws MessagingException {
-        ByteArrayOutputStream headersBytes = new ByteArrayOutputStream();
-        writeTo(headersBytes);
-        return headersBytes.toByteArray();
-    }
-
-    /**
-     * Check if a particular header is present.
-     * 
-     * @return true if the header is present, false otherwise
-     */
-    public boolean isSet(String name) {
-        String[] value = super.getHeader(name);
-        return (value != null && value.length != 0);
-    }
-
-    /**
-     * If the new header is a Return-Path we get sure that we add it to the top
-     * Javamail, at least until 1.4.0 does the wrong thing if it loaded a stream
-     * with a return-path in the middle.
-     * 
-     * @see javax.mail.internet.InternetHeaders#addHeader(java.lang.String,
-     *      java.lang.String)
-     */
-    @SuppressWarnings("unchecked")
-    public synchronized void addHeader(String arg0, String arg1) {
-        if (RFC2822Headers.RETURN_PATH.equalsIgnoreCase(arg0)) {
-            headers.add(0, new InternetHeader(arg0, arg1));
-        } else {
-            super.addHeader(arg0, arg1);
-        }
-        modified();
-    }
-
-    /**
-     * If the new header is a Return-Path we get sure that we add it to the top
-     * Javamail, at least until 1.4.0 does the wrong thing if it loaded a stream
-     * with a return-path in the middle.
-     * 
-     * @see javax.mail.internet.InternetHeaders#setHeader(java.lang.String,
-     *      java.lang.String)
-     */
-    public synchronized void setHeader(String arg0, String arg1) {
-        if (RFC2822Headers.RETURN_PATH.equalsIgnoreCase(arg0)) {
-            super.removeHeader(arg0);
-        }
-        super.setHeader(arg0, arg1);
-
-        modified();
-    }
-
-    @Override
-    public synchronized void removeHeader(String name) {
-        super.removeHeader(name);
-        modified();
-    }
-
-    @Override
-    public synchronized void addHeaderLine(String line) {
-        super.addHeaderLine(line);
-        modified();
-    }
-
-    private void modified() {
-        modified = true;
-        size = -1;
-    }
-
-    /**
-     * Check if all REQUIRED headers fields as specified in RFC 822 are present.
-     * 
-     * @return true if the headers are present, false otherwise
-     */
-    public boolean isValid() {
-        return (isSet(RFC2822Headers.DATE) && isSet(RFC2822Headers.TO) && isSet(RFC2822Headers.FROM));
-    }
-
-    /**
-     * Return the size of the headers
-     * 
-     * @return size
-     */
-    @SuppressWarnings("unchecked")
-    public synchronized long getSize() {
-        if (size == -1 || modified) {
-            long c = 0;
-            Enumeration<String> headerLines = getAllHeaderLines();
-            while (headerLines.hasMoreElements()) {
-                c += headerLines.nextElement().length();
-                // CRLF
-                c += 2;
-            }
-            size = c;
-            modified = false;
-        }
-        return size;
-
-    }
-}


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