You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2016/10/21 15:51:17 UTC
svn commit: r1766053 -
/commons/proper/net/trunk/src/main/java/examples/mail/IMAPExportMbox.java
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;