Author: bago
Date: Tue Aug 19 02:17:56 2008
New Revision: 687004
URL: http://svn.apache.org/viewvc?rev=687004&view=rev
Log:
Fix macroexpansion for %- and %_ (JSPF-66)
Modified:
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
Modified:
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
URL:
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java?rev=687004&r1=687003&r2=687004&view=diff
==============================================================================
---
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
(original)
+++
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
Tue Aug 19 02:17:56 2008
@@ -281,7 +281,20 @@
.appendReplacement(decodedValue,
replaceCell(macroCell, macroData, isExplanation));
} else if (match2.length() == 2 && match2.startsWith("%")) {
// handle the % escaping
- inputMatcher.appendReplacement(decodedValue,
match2.substring(1));
+ /*
+ * From RFC4408:
+ *
+ * A literal "%" is expressed by "%%".
+ * "%_" expands to a single " " space.
+ * "%-" expands to a URL-encoded space, viz., "%20".
+ */
+ if ("%_".equals(match2)) {
+ inputMatcher.appendReplacement(decodedValue, " ");
+ } else if ("%-".equals(match2)) {
+ inputMatcher.appendReplacement(decodedValue, "%20");
+ } else {
+ inputMatcher.appendReplacement(decodedValue,
match2.substring(1));
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]