Author: sebb
Date: Fri Oct 21 15:51:17 2016
New Revision: 1766053
URL: http://svn.apache.org/viewvc?rev=1766053&view=rev
Log:
Make it easier to pass folders with unsafe characters on the command-line
Modified:
commons/proper/net/trunk/src/main/java/examples/mail/IMAPExportMbox.java
Modified:
commons/proper/net/trunk/src/main/java/examples/mail/IMAPExportMbox.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/examples/mail/IMAPExportMbox.java?rev=1766053&r1=1766052&r2=1766053&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/examples/mail/IMAPExportMbox.java
(original)
+++ commons/proper/net/trunk/src/main/java/examples/mail/IMAPExportMbox.java
Fri Oct 21 15:51:17 2016
@@ -22,6 +22,7 @@ import java.io.File;
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 @@ public final class IMAPExportMbox
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 @@ public final class IMAPExportMbox
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;