Make it easier to pass folders with unsafe characters on the command-line
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/net/trunk@1766053 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/examples/mail/IMAPExportMbox.java b/src/main/java/examples/mail/IMAPExportMbox.java
index 1ac82b7..419fd94 100644
--- a/src/main/java/examples/mail/IMAPExportMbox.java
+++ b/src/main/java/examples/mail/IMAPExportMbox.java
@@ -22,6 +22,7 @@
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -96,7 +97,7 @@
private static final int CONNECT_TIMEOUT = 10; // Seconds
private static final int READ_TIMEOUT = 10;
- public static void main(String[] args) throws IOException
+ public static void main(String[] args) throws IOException, URISyntaxException
{
int connect_timeout = CONNECT_TIMEOUT;
int read_timeout = READ_TIMEOUT;
@@ -147,7 +148,19 @@
System.exit(1);
}
- final URI uri = URI.create(args[argIdx++]);
+ final String uriString = args[argIdx++];
+ URI uri;
+ try {
+ uri = URI.create(uriString);
+ } catch(IllegalArgumentException e) { // cannot parse the path as is; let's pull it apart and try again
+ Matcher m = Pattern.compile("(imaps?://[^/]+)(/.*)").matcher(uriString);
+ if (m.matches()) {
+ uri = URI.create(m.group(1)); // Just the scheme and auth parts
+ uri = new URI(uri.getScheme(), uri.getAuthority(), m.group(2), null, null);
+ } else {
+ throw e;
+ }
+ }
final String file = args[argIdx++];
String sequenceSet = argCount > 2 ? args[argIdx++] : "1:*";
final String itemNames;