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]

Reply via email to