mirror of
https://github.com/moparisthebest/davmail
synced 2025-01-05 18:58:02 -05:00
Caldav: encode ? in urlcompname
git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1974 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
parent
341eda2789
commit
435707181c
@ -151,6 +151,7 @@ public final class StringUtil {
|
||||
private static final Pattern URLENCODED_HASH_PATTERN = Pattern.compile("%23");
|
||||
private static final Pattern URLENCODED_STAR_PATTERN = Pattern.compile("%2A");
|
||||
private static final Pattern URLENCODED_PIPE_PATTERN = Pattern.compile("%7C");
|
||||
private static final Pattern URLENCODED_QUESTION_PATTERN = Pattern.compile("%3F");
|
||||
|
||||
private static final Pattern ENCODED_AMP_PATTERN = Pattern.compile("&");
|
||||
private static final Pattern ENCODED_LT_PATTERN = Pattern.compile("<");
|
||||
@ -165,6 +166,7 @@ public final class StringUtil {
|
||||
private static final Pattern UNDERSCORE_PATTERN = Pattern.compile("_");
|
||||
private static final Pattern DASH_PATTERN = Pattern.compile("-");
|
||||
private static final Pattern PIPE_PATTERN = Pattern.compile("\\|");
|
||||
private static final Pattern QUESTION_PATTERN = Pattern.compile("\\?");
|
||||
|
||||
// WebDav search parameter encode
|
||||
private static final Pattern APOS_PATTERN = Pattern.compile("'");
|
||||
@ -334,6 +336,9 @@ public final class StringUtil {
|
||||
if (result.indexOf('|') >= 0) {
|
||||
result = PIPE_PATTERN.matcher(result).replaceAll("%7C");
|
||||
}
|
||||
if (result.indexOf('?') >= 0) {
|
||||
result = QUESTION_PATTERN.matcher(result).replaceAll("%3F");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -380,6 +385,9 @@ public final class StringUtil {
|
||||
if (result.indexOf("%7C") >= 0) {
|
||||
result = URLENCODED_PIPE_PATTERN.matcher(result).replaceAll("|");
|
||||
}
|
||||
if (result.indexOf("%3F") >= 0) {
|
||||
result = URLENCODED_QUESTION_PATTERN.matcher(result).replaceAll("?");
|
||||
}
|
||||
// last replace %
|
||||
if (result.indexOf("%25") >= 0) {
|
||||
result = URLENCODED_PERCENT_PATTERN.matcher(result).replaceAll("%");
|
||||
|
@ -19,6 +19,8 @@
|
||||
package davmail.util;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.commons.httpclient.URIException;
|
||||
import org.apache.commons.httpclient.util.URIUtil;
|
||||
|
||||
/**
|
||||
* Test StringUtil.
|
||||
@ -107,4 +109,14 @@ public class StringUtilTest extends TestCase {
|
||||
assertEquals("test %7C", StringUtil.encodeUrlcompname("test |"));
|
||||
assertEquals("test |", StringUtil.decodeUrlcompname("test %7C"));
|
||||
}
|
||||
|
||||
public void testEncodeQuestion() {
|
||||
try {
|
||||
URIUtil.encodeWithinQuery("test ?");
|
||||
} catch (URIException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
assertEquals("test %3F", StringUtil.encodeUrlcompname("test ?"));
|
||||
assertEquals("test ?", StringUtil.decodeUrlcompname("test %3F"));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user