Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java	(revision 11109)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java	(revision 11110)
@@ -5,5 +5,7 @@
 
 import java.awt.Component;
+import java.awt.GraphicsEnvironment;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.List;
 
@@ -59,14 +61,13 @@
     protected void finish() {
         if (JosmUserIdentityManager.getInstance().isAnonymous()) {
-            JOptionPane.showMessageDialog(
-                    GuiHelper.getFrameForComponent(parent),
-                    "<html>" + tr("Could not retrieve the list of your open changesets because<br>"
-                            + "JOSM does not know your identity.<br>"
-                            + "You have either chosen to work anonymously or you are not entitled<br>"
-                            + "to know the identity of the user on whose behalf you are working.")
-                            + "</html>",
-                            tr("Missing user identity"),
-                            JOptionPane.ERROR_MESSAGE
-            );
+            String msg = tr("Could not retrieve the list of your open changesets because<br>"
+                    + "JOSM does not know your identity.<br>"
+                    + "You have either chosen to work anonymously or you are not entitled<br>"
+                    + "to know the identity of the user on whose behalf you are working.");
+            Main.warn(msg);
+            if (!GraphicsEnvironment.isHeadless()) {
+                JOptionPane.showMessageDialog(GuiHelper.getFrameForComponent(parent),
+                        "<html>" + msg + "</html>", tr("Missing user identity"), JOptionPane.ERROR_MESSAGE);
+            }
             return;
         }
@@ -153,6 +154,19 @@
     }
 
+    /**
+     * Determines if this task has been cancelled.
+     * @return {@code true} if this task has been cancelled
+     */
     public boolean isCanceled() {
         return canceled;
     }
+
+    /**
+     * Returns the changesets.
+     * @return the changesets, or {@code null}
+     * @since 11110
+     */
+    public final List<Changeset> getChangesets() {
+        return changesets != null ? Collections.unmodifiableList(changesets) : null;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 11109)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 11110)
@@ -58,5 +58,5 @@
      * @return the list of changesets read from the server
      * @throws IllegalArgumentException if query is null
-     * @throws OsmTransferException if something goes wrong w
+     * @throws OsmTransferException if something goes wrong
      */
     public List<Changeset> queryChangesets(ChangesetQuery query, ProgressMonitor monitor) throws OsmTransferException {
