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>