Index: trunk/src/org/openstreetmap/josm/data/APIDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 2915)
@@ -277,5 +277,5 @@
 
     /**
-     * Utility class to sort a collection of of new relations with their dependencies
+     * Utility class to sort a collection of new relations with their dependencies
      * topologically.
      *
Index: trunk/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java	(revision 2915)
@@ -83,5 +83,5 @@
      * Adds a conflict to the collection of conflicts.
      *
-     * @param conflict the conflict to to add. Must not be null.
+     * @param conflict the conflict to add. Must not be null.
      * @throws IllegalArgumentException thrown, if conflict is null
      * @throws IllegalStateException thrown if this collection already includes a conflict for conflict.getMy()
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 2915)
@@ -81,5 +81,5 @@
     private SelectObjectsAction selectObjectsAction;
     private  ReadChangesetsAction readChangesetAction;
-    private ShowChangesetInfoAction showChangsetInfoAction;
+    private ShowChangesetInfoAction showChangesetInfoAction;
     private CloseOpenChangesetsAction closeChangesetAction;
     private LaunchChangesetManagerAction launchChangesetManagerAction;
@@ -202,9 +202,9 @@
 
         // -- show info action
-        showChangsetInfoAction = new ShowChangesetInfoAction();
-        tp.add(new SideButton(showChangsetInfoAction, false));
-        cbInSelectionOnly.addItemListener(showChangsetInfoAction);
-        lstInActiveDataLayer.getSelectionModel().addListSelectionListener(showChangsetInfoAction);
-        lstInSelection.getSelectionModel().addListSelectionListener(showChangsetInfoAction);
+        showChangesetInfoAction = new ShowChangesetInfoAction();
+        tp.add(new SideButton(showChangesetInfoAction, false));
+        cbInSelectionOnly.addItemListener(showChangesetInfoAction);
+        lstInActiveDataLayer.getSelectionModel().addListSelectionListener(showChangesetInfoAction);
+        lstInSelection.getSelectionModel().addListSelectionListener(showChangesetInfoAction);
 
         // -- launch changeset manager action
@@ -574,5 +574,5 @@
             add(closeChangesetAction);
             addSeparator();
-            add(showChangsetInfoAction);
+            add(showChangesetInfoAction);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java	(revision 2915)
@@ -217,5 +217,5 @@
                                 + "Conflict resolutions will not be applied unless all differences<br>"
                                 + "are resolved.<br>"
-                                + "Click <strong>{0}</strong> to close anyway.<strong>Already<br>"
+                                + "Click <strong>{0}</strong> to close anyway.<strong> Already<br>"
                                 + "resolved differences will not be applied.</strong><br>"
                                 + "Click <strong>{1}</strong> to return to resolving conflicts.</html>"
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentDownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentDownloadTask.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentDownloadTask.java	(revision 2915)
@@ -116,10 +116,10 @@
      * id <code>changesetId</code>.
      *
-     * @param changsetId the changeset id
+     * @param changesetId the changeset id
      * @return true if the local {@see ChangesetCache} already includes the changeset with
      * id <code>changesetId</code>
      */
-    protected boolean isAvailableLocally(int changsetId) {
-        return ChangesetCache.getInstance().get(changsetId) != null;
+    protected boolean isAvailableLocally(int changesetId) {
+        return ChangesetCache.getInstance().get(changesetId) != null;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java	(revision 2915)
@@ -30,5 +30,5 @@
 public class SingleChangesetDownloadPanel extends JPanel {
 
-    private JTextField tfChangsetId;
+    private JTextField tfChangesetId;
     private DownloadAction actDownload;
     private ChangesetIdValidator valChangesetId;
@@ -44,13 +44,13 @@
 
         add(new JLabel(tr("Changeset ID: ")));
-        add(tfChangsetId = new JTextField(10));
-        tfChangsetId.setToolTipText(tr("Enter a changset id"));
-        valChangesetId  =ChangesetIdValidator.decorate(tfChangsetId);
-        SelectAllOnFocusGainedDecorator.decorate(tfChangsetId);
+        add(tfChangesetId = new JTextField(10));
+        tfChangesetId.setToolTipText(tr("Enter a changeset id"));
+        valChangesetId  =ChangesetIdValidator.decorate(tfChangesetId);
+        SelectAllOnFocusGainedDecorator.decorate(tfChangesetId);
 
         actDownload = new DownloadAction();
         SideButton btn = new SideButton(actDownload);
-        tfChangsetId.addActionListener(actDownload);
-        tfChangsetId.getDocument().addDocumentListener(actDownload);
+        tfChangesetId.addActionListener(actDownload);
+        tfChangesetId.getDocument().addDocumentListener(actDownload);
         add(btn);
     }
@@ -66,5 +66,5 @@
      * @return the changeset id entered in this panel
      */
-    public int getChangsetId() {
+    public int getChangesetId() {
         return valChangesetId.getChangesetId();
     }
@@ -84,5 +84,5 @@
             if (!isEnabled())
                 return;
-            int id = getChangsetId();
+            int id = getChangesetId();
             if (id == 0) return;
             ChangesetContentDownloadTask task =  new ChangesetContentDownloadTask(
@@ -94,5 +94,5 @@
 
         protected void updateEnabledState() {
-            String v = tfChangsetId.getText();
+            String v = tfChangesetId.getText();
             if (v == null || v.trim().length() == 0) {
                 setEnabled(false);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 2915)
@@ -107,5 +107,5 @@
         gc.weightx = 1.0;
         pnl.add(cbMyChangesetsOnly = new JCheckBox(tr("Download my changesets only")), gc);
-        cbMyChangesetsOnly.setToolTipText(tr("<html>Select to restrict the query to your changsets only.<br>Unselect to include all changesets in the query.</html>"));
+        cbMyChangesetsOnly.setToolTipText(tr("<html>Select to restrict the query to your changesets only.<br>Unselect to include all changesets in the query.</html>"));
 
         // grab remaining space
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryTask.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryTask.java	(revision 2915)
@@ -38,5 +38,5 @@
     /** true if the task was canceled */
     private boolean canceled;
-    /** the set of downloaded changsets */
+    /** the set of downloaded changesets */
     private Set<Changeset> downloadedChangesets;
     /** the last exception remembered, if any */
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 2915)
@@ -1080,5 +1080,5 @@
                             tr("No, continue editing"),
                             ImageProvider.get("cancel"),
-                            tr("Click to to return to the relation editor and to resume relation editing") ,
+                            tr("Click to return to the relation editor and to resume relation editing") ,
                             null /* no specific help topic */
                     )
Index: trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 2915)
@@ -226,5 +226,5 @@
                 + "<p class=\"warning-body\">Help content for the help topic <strong>{0}</strong> is "
                 + "not available yet. It is missing both in your local language ({1}) and in english.<br><br>"
-                + "Please help to improve the JOSM help system and fill in the missing information."
+                + "Please help to improve the JOSM help system and fill in the missing information. "
                 + "You can both edit the <a href=\"{2}\">help topic in your local language ({1})</a> and "
                 + "the <a href=\"{3}\">help topic in english</a>."
@@ -348,5 +348,5 @@
                         tr(
                                 "<html>Failed to open help page for url {0}.<br>"
-                                + "This is most likely due to a network problem, please check your<br>"
+                                + "This is most likely due to a network problem, please check<br>"
                                 + "your internet connection</html>",
                                 url.toString()
Index: trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 2915)
@@ -191,9 +191,9 @@
      *
      */
-    protected void handleUploadConflictForClosedChangeset(long changsetId, Date d) {
+    protected void handleUploadConflictForClosedChangeset(long changesetId, Date d) {
         String msg =  tr("<html>Uploading <strong>failed</strong> because you have been using<br>"
                 + "changeset {0} which was already closed at {1}.<br>"
                 + "Please upload again with a new or an existing open changeset.</html>",
-                changsetId, new SimpleDateFormat().format(d)
+                changesetId, new SimpleDateFormat().format(d)
         );
         JOptionPane.showMessageDialog(
Index: trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 2915)
@@ -236,5 +236,5 @@
             super.build();
             tfUserName.setToolTipText(tr("Please enter the user name of your OSM account"));
-            tfPassword.setToolTipText(tr("Please enter the password name of your OSM account"));
+            tfPassword.setToolTipText(tr("Please enter the password of your OSM account"));
             lblHeading.setText(
                     "<html>" + tr("Authenticating at the OSM API ''{0}'' failed. Please enter a valid username and a valid password.",
Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java	(revision 2915)
@@ -119,5 +119,5 @@
                 im.setPartiallyIdentified(im.getUserName());
             }
-            System.err.println(tr("Warning: Failed to retrieve user infos for the current JOSM user. Exceptions was: {0}", e.toString()));
+            System.err.println(tr("Warning: Failed to retrieve user infos for the current JOSM user. Exception was: {0}", e.toString()));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java	(revision 2915)
@@ -39,5 +39,5 @@
     private ConfigurationParameterRequestHandler configHandler;
 
-    protected String buildChangsetSummary() {
+    protected String buildChangesetSummary() {
         StringBuffer msg = new StringBuffer();
         if (selectedChangeset == null || selectedChangeset.isNew()) {
@@ -67,5 +67,5 @@
         //
         boolean useOneChangeset = true;
-        int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangsetSize();
+        int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangesetSize();
         if (maxChunkSize > 0 && numObjects > maxChunkSize) {
             useOneChangeset = false;
@@ -174,5 +174,5 @@
         sb.append(buildStrategySummary());
         sb.append("<br><br>");
-        sb.append(buildChangsetSummary());
+        sb.append(buildChangesetSummary());
         sb.append("</html>");
         jepMessage.setText(sb.toString());
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 2915)
@@ -97,8 +97,8 @@
         };
         int numObjectsToUploadLeft = toUpload.getSize() - processedPrimitives.size();
-        String msg1 = tr("The server reported that the current changset was closed.<br>"
+        String msg1 = tr("The server reported that the current changeset was closed.<br>"
                 + "This is most likely because the changesets size exceeded the max. size<br>"
                 + "of {0} objects on the server ''{1}''.",
-                OsmApi.getOsmApi().getCapabilities().getMaxChangsetSize(),
+                OsmApi.getOsmApi().getCapabilities().getMaxChangesetSize(),
                 OsmApi.getOsmApi().getBaseUrl()
         );
@@ -110,5 +110,5 @@
         );
         String msg3 = tr(
-                "Click ''<strong>{0}</strong>'' to continue uploading to additional new changsets.<br>"
+                "Click ''<strong>{0}</strong>'' to continue uploading to additional new changesets.<br>"
                 + "Click ''<strong>{1}</strong>'' to return to the upload dialog.<br>"
                 + "Click ''<strong>{2}</strong>'' to abort uploading and return to map editing.<br>",
@@ -126,5 +126,5 @@
                 specs,
                 specs[0],
-                ht("/Action/UploadAction#ChangsetFull")
+                ht("/Action/UploadAction#ChangesetFull")
         );
         switch(ret) {
@@ -138,5 +138,5 @@
     }
 
-    protected void openNewChangset() {
+    protected void openNewChangeset() {
         // make sure the current changeset is removed from the upload dialog.
         //
@@ -147,5 +147,5 @@
     }
 
-    protected boolean recoverFromChangsetFullException() {
+    protected boolean recoverFromChangesetFullException() {
         if (toUpload.getSize() - processedPrimitives.size() == 0) {
             strategy.setPolicy(MaxChangesetSizeExceededPolicy.ABORT);
@@ -168,5 +168,5 @@
             // prepare the state of the task for a next iteration in uploading.
             //
-            openNewChangset();
+            openNewChangeset();
             toUpload.removeProcessed(processedPrimitives);
             return true;
@@ -264,7 +264,7 @@
                         // Most likely the changeset is full. Try to recover and continue
                         // with a new changeset, but let the user decide first (see
-                        // recoverFromChangsetFullException)
+                        // recoverFromChangesetFullException)
                         //
-                        if (recoverFromChangsetFullException()) {
+                        if (recoverFromChangesetFullException()) {
                             continue;
                         }
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(revision 2915)
@@ -221,5 +221,5 @@
         add(new JPanel(), gc);
 
-        int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangsetSize();
+        int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangesetSize();
         pnlMultiChangesetPolicyPanel.setVisible(
                 maxChunkSize > 0 && numUploadedObjects > maxChunkSize
@@ -316,5 +316,5 @@
 
     protected void updateNumRequestsLabels() {
-        int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangsetSize();
+        int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangesetSize();
         if (maxChunkSize > 0 && numUploadedObjects > maxChunkSize) {
             rbStrategy.get(UploadStrategy.SINGLE_REQUEST_STRATEGY).setEnabled(false);
@@ -407,5 +407,5 @@
             try {
                 int chunkSize = Integer.parseInt(tfChunkSize.getText().trim());
-                int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangsetSize();
+                int maxChunkSize = OsmApi.getOsmApi().getCapabilities().getMaxChangesetSize();
                 if (chunkSize <= 0) {
                     setErrorFeedback(tfChunkSize, tr("Illegal chunk size <= 0. Please enter an integer > 1"));
Index: trunk/src/org/openstreetmap/josm/io/Capabilities.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/Capabilities.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/io/Capabilities.java	(revision 2915)
@@ -80,5 +80,5 @@
      * @return the max number of objects in a changeset
      */
-    public int getMaxChangsetSize() {
+    public int getMaxChangesetSize() {
         String v = get("changesets", "maximum_elements");
         if (v == null) return -1;
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 2915)
@@ -156,5 +156,5 @@
 
     /**
-     * appends a {@see Way}s id and the list of ids of nodes the way refers to to the list of ids which will be fetched from the server.
+     * appends a {@see Way}s id and the list of ids of nodes the way refers to the list of ids which will be fetched from the server.
      *
      * @param way the way (ignored, if null)
Index: trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 2914)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 2915)
@@ -164,7 +164,7 @@
      * Downloads the content of a changeset
      *
-     * @param id the changset id. >0 required.
+     * @param id the changeset id. >0 required.
      * @param monitor the progress monitor. {@see NullProgressMonitor#INSTANCE} assumed if null.
-     * @return the changset content
+     * @return the changeset content
      * @throws IllegalArgumentException thrown if id <= 0
      * @throws OsmTransferException thrown if something went wrong
Index: trunk/test/unit/org/openstreetmap/josm/io/ChangesetQueryUrlParserTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/ChangesetQueryUrlParserTest.groovy	(revision 2915)
+++ trunk/test/unit/org/openstreetmap/josm/io/ChangesetQueryUrlParserTest.groovy	(revision 2915)
@@ -0,0 +1,191 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.io;
+
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
+import org.junit.Test 
+import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlException;
+import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlParser;
+
+
+import static org.junit.Assert.*;
+
+class ChangesetQueryUrlParserTest {
+	final shouldFail = new GroovyTestCase().&shouldFail
+	
+	@Test
+	public void test_constructor() {
+	    ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+	}
+	
+	@Test
+	public void test_parse_basic() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		
+		// OK
+		parser.parse ""
+		
+		// should be OK
+		ChangesetQuery q = parser.parse(null)
+		assert q != null
+		
+		// should be OK
+		q = parser.parse("")
+		assert q != null
+	}
+	
+	@Test 
+	public void test_uid() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// OK
+		q = parser.parse("uid=1234")
+		assert q != null
+		
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("uid=0")				
+		}
+		
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("uid=-1")               
+		}
+		
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("uid=abc")               
+		}
+	}
+	
+	@Test 
+	public void test_display_name() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// OK
+		q = parser.parse("display_name=abcd")
+		assert q != null
+		assert q.@userName == "abcd"
+	}
+	
+	
+	@Test 
+	public void test_open() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// OK
+		q = parser.parse("open=true")
+		assert q != null
+		assert q.@open == true
+		
+		// OK
+		q = parser.parse("open=false")
+		assert q != null
+		assert q.@open == false
+		
+		// illegal value for open 
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("open=abcd")               
+		}   		
+	}
+	
+	@Test 
+	public void test_closed() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// OK
+		q = parser.parse("closed=true")
+		assert q != null
+		assert q.@closed == true
+		
+		// OK
+		q = parser.parse("closed=false")
+		assert q != null
+		assert q.@closed == false
+		
+		// illegal value for open 
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("closed=abcd")               
+		}           
+	}
+	
+	
+	@Test 
+	public void test_uid_and_display_name() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// we can't have both an uid and a display name 
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("uid=1&display_name=abcd")               
+		}		
+	}
+	
+	@Test 
+	public void test_time() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// OK
+		q = parser.parse("time=2009-12-25T10:00:00Z")
+		assert q != null
+		assert q.@closedAfter != null   
+		Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT+0"));
+		cal.setTime(q.@closedAfter);
+		assert cal.get(Calendar.YEAR) == 2009
+		assert cal.get(Calendar.MONTH) == 11 // calendar is 0-based
+		assert cal.get(Calendar.DAY_OF_MONTH) == 25
+		assert cal.get(Calendar.HOUR_OF_DAY) == 10
+		assert cal.get(Calendar.MINUTE) == 0
+		assert cal.get(Calendar.SECOND) == 0
+		
+		// OK
+		q = parser.parse("time=2009-12-25T10:00:00Z,2009-11-25T10:00:00Z")
+		assert q!= null
+		assert q.@closedAfter != null
+		assert q.@createdBefore != null
+		
+		// should fail
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("time=asdf")               
+		}   		
+	}
+	
+	@Test 
+	public void test_bbox() {
+		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
+		def ChangesetQuery q
+		
+		// OK
+		q = parser.parse("bbox=-1,-1,1,1")
+		assert q != null
+		assert q.@bounds != null
+		
+		// should fail
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("bbox=-91,-1,1,1")               
+		}           
+				
+		// should fail
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("bbox=-1,-181,1,1")               
+		}           
+		
+		// should fail
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("bbox=-1,-1,91,1")               
+		}           
+		// should fail
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("bbox=-1,-1,1,181")               
+		}  
+		// should fail
+		shouldFail(ChangesetQueryUrlException) {
+			q = parser.parse("bbox=-1,-1,1")               
+		}  
+	}
+}
Index: trunk/test/unit/org/openstreetmap/josm/io/ChangsetQueryUrlParserTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/ChangsetQueryUrlParserTest.groovy	(revision 2914)
+++ 	(revision )
@@ -1,191 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
-
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.TimeZone;
-
-import org.junit.Test 
-import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlException;
-import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlParser;
-
-
-import static org.junit.Assert.*;
-
-class ChangsetQueryUrlParserTest {
-	final shouldFail = new GroovyTestCase().&shouldFail
-	
-	@Test
-	public void test_constructor() {
-	    ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-	}
-	
-	@Test
-	public void test_parse_basic() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		
-		// OK
-		parser.parse ""
-		
-		// should be OK
-		ChangesetQuery q = parser.parse(null)
-		assert q != null
-		
-		// should be OK
-		q = parser.parse("")
-		assert q != null
-	}
-	
-	@Test 
-	public void test_uid() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// OK
-		q = parser.parse("uid=1234")
-		assert q != null
-		
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("uid=0")				
-		}
-		
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("uid=-1")               
-		}
-		
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("uid=abc")               
-		}
-	}
-	
-	@Test 
-	public void test_display_name() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// OK
-		q = parser.parse("display_name=abcd")
-		assert q != null
-		assert q.@userName == "abcd"
-	}
-	
-	
-	@Test 
-	public void test_open() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// OK
-		q = parser.parse("open=true")
-		assert q != null
-		assert q.@open == true
-		
-		// OK
-		q = parser.parse("open=false")
-		assert q != null
-		assert q.@open == false
-		
-		// illegal value for open 
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("open=abcd")               
-		}   		
-	}
-	
-	@Test 
-	public void test_closed() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// OK
-		q = parser.parse("closed=true")
-		assert q != null
-		assert q.@closed == true
-		
-		// OK
-		q = parser.parse("closed=false")
-		assert q != null
-		assert q.@closed == false
-		
-		// illegal value for open 
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("closed=abcd")               
-		}           
-	}
-	
-	
-	@Test 
-	public void test_uid_and_display_name() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// we can't have both an uid and a display name 
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("uid=1&display_name=abcd")               
-		}		
-	}
-	
-	@Test 
-	public void test_time() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// OK
-		q = parser.parse("time=2009-12-25T10:00:00Z")
-		assert q != null
-		assert q.@closedAfter != null   
-		Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT+0"));
-		cal.setTime(q.@closedAfter);
-		assert cal.get(Calendar.YEAR) == 2009
-		assert cal.get(Calendar.MONTH) == 11 // calendar is 0-based
-		assert cal.get(Calendar.DAY_OF_MONTH) == 25
-		assert cal.get(Calendar.HOUR_OF_DAY) == 10
-		assert cal.get(Calendar.MINUTE) == 0
-		assert cal.get(Calendar.SECOND) == 0
-		
-		// OK
-		q = parser.parse("time=2009-12-25T10:00:00Z,2009-11-25T10:00:00Z")
-		assert q!= null
-		assert q.@closedAfter != null
-		assert q.@createdBefore != null
-		
-		// should fail
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("time=asdf")               
-		}   		
-	}
-	
-	@Test 
-	public void test_bbox() {
-		ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
-		def ChangesetQuery q
-		
-		// OK
-		q = parser.parse("bbox=-1,-1,1,1")
-		assert q != null
-		assert q.@bounds != null
-		
-		// should fail
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("bbox=-91,-1,1,1")               
-		}           
-				
-		// should fail
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("bbox=-1,-181,1,1")               
-		}           
-		
-		// should fail
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("bbox=-1,-1,91,1")               
-		}           
-		// should fail
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("bbox=-1,-1,1,181")               
-		}  
-		// should fail
-		shouldFail(ChangesetQueryUrlException) {
-			q = parser.parse("bbox=-1,-1,1")               
-		}  
-	}
-}
