Author: sebb
Date: Sun Dec 28 17:26:43 2014
New Revision: 1648228
URL: http://svn.apache.org/r1648228
Log:
Add a bit more debug when requests fail
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=1648228&r1=1648227&r2=1648228&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
Sun Dec 28 17:26:43 2014
@@ -86,6 +86,7 @@ public final class IMAPExportMbox
int argIdx = 0;
String eol = EOL_DEFAULT;
boolean printHash = false;
+ boolean printMarker = false;
for(argIdx = 0; argIdx < args.length; argIdx++) {
if (args[argIdx].equals("-c")) {
@@ -98,6 +99,8 @@ public final class IMAPExportMbox
eol = CRLF;
} else if (args[argIdx].equals("-.")) {
printHash = true;
+ } else if (args[argIdx].equals("-X")) {
+ printMarker = true;
} else {
break;
}
@@ -107,11 +110,12 @@ public final class IMAPExportMbox
if (argCount < 2)
{
- System.err.println("Usage: IMAPExportMbox [-LF|-CRLF] [-c n] [-r
n] [#] imap[s]://user:password@host[:port]/folder/path <mboxfile>
[sequence-set] [itemnames]");
+ System.err.println("Usage: IMAPExportMbox [-LF|-CRLF] [-c n] [-r
n] [-.] [-X] imap[s]://user:password@host[:port]/folder/path <mboxfile>
[sequence-set] [itemnames]");
System.err.println("\t-LF | -CRLF set end-of-line to LF or CRLF
(default is the line.separator system property)");
System.err.println("\t-c connect timeout in seconds (default 10)");
System.err.println("\t-r read timeout in seconds (default 10)");
System.err.println("\t-. print a . for each complete message
received");
+ System.err.println("\t-X print the X-IMAP line for each complete
message received");
System.err.println("\tthe mailboxfile is where the messages are
stored; use '-' to write to standard output");
System.err.println("\ta sequence-set is a list of numbers/number
ranges e.g. 1,2,3-10,20:* - default 1:*");
System.err.println("\titemnames are the message data item name(s)
e.g. BODY.PEEK[HEADER.FIELDS (SUBJECT)] or a macro e.g. ALL - default
(INTERNALDATE BODY.PEEK[])");
@@ -134,7 +138,7 @@ public final class IMAPExportMbox
// suppress login details
final PrintCommandListener listener = new
PrintCommandListener(System.out, true);
- final MboxListener chunkListener = mbox == null? null : new
MboxListener(mbox, eol, printHash);
+ final MboxListener chunkListener = mbox == null? null : new
MboxListener(mbox, eol, printHash, printMarker);
// Connect and login
final IMAPClient imap = IMAPUtils.imapLogin(uri, connect_timeout *
1000, listener);
@@ -174,6 +178,9 @@ public final class IMAPExportMbox
} catch (IOException ioe) {
String count = chunkListener == null ? "?" :
Integer.toString(chunkListener.total);
System.err.println("FETCH " + sequenceSet + " " + itemNames + "
failed after processing " + count + " complete messages ");
+ if (chunkListener != null) {
+ System.err.println("Last response seen:
"+chunkListener.lastFetched);
+ }
throw ioe;
} finally {
if (chunkListener != null) {
@@ -196,6 +203,7 @@ public final class IMAPExportMbox
private BufferedWriter bw;
volatile int total = 0;
+ volatile String lastFetched;
private final String eol;
private final SimpleDateFormat DATE_FORMAT // for mbox From_ lines
= new SimpleDateFormat("EEE MMM dd HH:mm:ss YYYY");
@@ -204,10 +212,12 @@ public final class IMAPExportMbox
private final SimpleDateFormat IDPARSE // for parsing INTERNALDATE
= new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss Z");
private final boolean printHash;
+ private final boolean printMarker;
- MboxListener(File mbox, String eol, boolean printHash) throws
IOException {
+ MboxListener(File mbox, String eol, boolean printHash, boolean
printMarker) throws IOException {
this.eol = eol;
this.printHash = printHash;
+ this.printMarker = printMarker;
DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
if (mbox.exists()) {
throw new IOException("mailbox file: " + mbox + " already
exists!");
@@ -221,6 +231,7 @@ public final class IMAPExportMbox
final String[] replyStrings = imap.getReplyStrings();
Date received = new Date();
final String firstLine = replyStrings[0];
+ lastFetched = firstLine;
Matcher m = PATID.matcher(firstLine);
if (m.lookingAt()) { // found a match
String date = m.group(1);
@@ -256,6 +267,9 @@ public final class IMAPExportMbox
bw.append(eol);
// Debug
bw.append("X-IMAP-Response: ").append(firstLine).append(eol);
+ if (printMarker) {
+ System.err.println("[" + total + "] " + firstLine);
+ }
// Skip first and last lines
for(int i=1; i< replyStrings.length - 1; i++) {
final String line = replyStrings[i];