Author: norman
Date: Fri Jan 21 08:06:00 2011
New Revision: 1061671

URL: http://svn.apache.org/viewvc?rev=1061671&view=rev
Log:
Adjust scope of pos variable. See MAILET-34

Modified:
    james/mailet/api/trunk/src/main/java/org/apache/mailet/MailAddress.java

Modified: 
james/mailet/api/trunk/src/main/java/org/apache/mailet/MailAddress.java
URL: 
http://svn.apache.org/viewvc/james/mailet/api/trunk/src/main/java/org/apache/mailet/MailAddress.java?rev=1061671&r1=1061670&r2=1061671&view=diff
==============================================================================
--- james/mailet/api/trunk/src/main/java/org/apache/mailet/MailAddress.java 
(original)
+++ james/mailet/api/trunk/src/main/java/org/apache/mailet/MailAddress.java Fri 
Jan 21 08:06:00 2011
@@ -74,16 +74,15 @@ public class MailAddress implements java
 
     private String localPart = null;
     private String domain = null;
-    //Used for parsing
-    private int pos = 0;
 
     /**
      * 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
      */
-    private void stripSourceRoute(String address) {
+    private void stripSourceRoute(String address, int pos) {
         if (pos < address.length()) {
             if (address.charAt(pos)=='@') { 
                 int i = address.indexOf(':');
@@ -102,10 +101,11 @@ public class MailAddress implements java
      */
     public MailAddress(String address) throws AddressException {
         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);
+        stripSourceRoute(address, pos);
 
         StringBuffer localPartSB = new StringBuffer();
         StringBuffer domainSB = new StringBuffer();
@@ -116,12 +116,12 @@ public class MailAddress implements java
             //parse local-part
             //<local-part> ::= <dot-string> | <quoted-string>
             if (address.charAt(pos) == '\"') {
-                localPartSB.append(parseQuotedLocalPart(address));
+                localPartSB.append(parseQuotedLocalPart(address, pos));
                 if (localPartSB.toString().length() == 2) {
                     throw new AddressException("No quoted local-part (user 
account) found at position " + (pos + 2) + " in '" + address + 
"'",address,pos+2);
                 }
             } else {
-                localPartSB.append(parseUnquotedLocalPart(address));
+                localPartSB.append(parseUnquotedLocalPart(address, pos));
                 if (localPartSB.toString().length() == 0) {
                     throw new AddressException("No local-part (user account) 
found at position " + (pos + 1) + " in '" + address + "'",address,pos+1);
                 }
@@ -138,11 +138,11 @@ public class MailAddress implements java
             //<element> ::= <name> | "#" <number> | "[" <dotnum> "]"
             while (true) {
                 if (address.charAt(pos) == '#') {
-                    domainSB.append(parseNumber(address));
+                    domainSB.append(parseNumber(address, pos));
                 } else if (address.charAt(pos) == '[') {
-                    domainSB.append(parseDomainLiteral(address));
+                    domainSB.append(parseDomainLiteral(address, pos));
                 } else {
-                    domainSB.append(parseDomain(address));
+                    domainSB.append(parseDomain(address, pos));
                 }
                 if (pos >= address.length()) {
                     break;
@@ -308,7 +308,7 @@ public class MailAddress implements java
         return toString().toLowerCase(Locale.US).hashCode();
     }
 
-    private String parseQuotedLocalPart(String address) throws 
AddressException {
+    private String parseQuotedLocalPart(String address, int pos) throws 
AddressException {
         StringBuffer resultSB = new StringBuffer();
         resultSB.append('\"');
         pos++;
@@ -345,7 +345,7 @@ public class MailAddress implements java
         return resultSB.toString();
     }
 
-    private String parseUnquotedLocalPart(String address) throws 
AddressException {
+    private String parseUnquotedLocalPart(String address, int pos) throws 
AddressException {
         StringBuffer resultSB = new StringBuffer();
         //<dot-string> ::= <string> | <string> "." <dot-string>
         boolean lastCharDot = false;
@@ -398,7 +398,7 @@ public class MailAddress implements java
         return resultSB.toString();
     }
 
-    private String parseNumber(String address) throws AddressException {
+    private String parseNumber(String address, int pos) throws 
AddressException {
         //<number> ::= <d> | <d> <number>
 
         StringBuffer resultSB = new StringBuffer();
@@ -421,7 +421,7 @@ public class MailAddress implements java
         return resultSB.toString();
     }
 
-    private String parseDomainLiteral(String address) throws AddressException {
+    private String parseDomainLiteral(String address, int pos) throws 
AddressException {
         //throw away all irrelevant '\' they're not necessary for escaping of 
'.' or digits, and are illegal as part of the domain-literal
         while(address.indexOf("\\")>-1){
              address= address.substring(0,address.indexOf("\\")) + 
address.substring(address.indexOf("\\")+1);
@@ -483,7 +483,7 @@ public class MailAddress implements java
         return resultSB.toString();
     }
 
-    private String parseDomain(String address) throws AddressException {
+    private String parseDomain(String address, int pos) throws 
AddressException {
         StringBuffer resultSB = new StringBuffer();
         //<name> ::= <a> <ldh-str> <let-dig>
         //<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>


Reply via email to