Index: trunk/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java	(revision 6601)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java	(revision 6602)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard;
 import org.openstreetmap.josm.gui.oauth.TestAccessTokenTask;
+import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -160,4 +161,5 @@
      */
     public void initFromPreferences() {
+        setApiUrl(Main.pref.get("osm-server.url", OsmApi.DEFAULT_API_URL).trim());
         refreshView();
     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(revision 6601)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(revision 6602)
@@ -34,4 +34,5 @@
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -52,6 +53,8 @@
     /** indicates whether to use the default OSM URL or not */
     private JCheckBox cbUseDefaultServerUrl;
-
-    protected JPanel buildDefultServerUrlPanel() {
+    
+    private ApiUrlPropagator propagator;
+
+    protected JPanel buildDefaultServerUrlPanel() {
         JPanel pnl = new JPanel(new GridBagLayout());
         GridBagConstraints gc = new GridBagConstraints();
@@ -84,5 +87,5 @@
         gc.insets = new Insets(0,0,0,0);
         gc.gridwidth  = 4;
-        add(buildDefultServerUrlPanel(), gc);
+        add(buildDefaultServerUrlPanel(), gc);
 
 
@@ -101,5 +104,5 @@
         valOsmServerUrl = new ApiUrlValidator(tfOsmServerUrl);
         valOsmServerUrl.validate();
-        ApiUrlPropagator propagator = new ApiUrlPropagator();
+        propagator = new ApiUrlPropagator();
         tfOsmServerUrl.addActionListener(propagator);
         tfOsmServerUrl.addFocusListener(propagator);
@@ -131,9 +134,9 @@
         if (url.trim().equals(OsmApi.DEFAULT_API_URL)) {
             cbUseDefaultServerUrl.setSelected(true);
-            firePropertyChange(API_URL_PROP, null, OsmApi.DEFAULT_API_URL);
+            propagator.propagate(OsmApi.DEFAULT_API_URL);
         } else {
             cbUseDefaultServerUrl.setSelected(false);
             tfOsmServerUrl.setText(url);
-            firePropertyChange(API_URL_PROP, null, url);
+            propagator.propagate(url);
         }
     }
@@ -143,17 +146,18 @@
      */
     public void saveToPreferences() {
-        String old_url = Main.pref.get("osm-server.url", OsmApi.DEFAULT_API_URL);
+        String oldUrl = Main.pref.get("osm-server.url", OsmApi.DEFAULT_API_URL);
+        String hmiUrl = getStrippedApiUrl();
         if (cbUseDefaultServerUrl.isSelected()) {
             Main.pref.put("osm-server.url", null);
-        } else if (tfOsmServerUrl.getText().trim().equals(OsmApi.DEFAULT_API_URL)) {
+        } else if (hmiUrl.equals(OsmApi.DEFAULT_API_URL)) {
             Main.pref.put("osm-server.url", null);
         } else {
-            Main.pref.put("osm-server.url", tfOsmServerUrl.getText().trim());
-        }
-        String new_url = Main.pref.get("osm-server.url", OsmApi.DEFAULT_API_URL);
+            Main.pref.put("osm-server.url", hmiUrl);
+        }
+        String newUrl = Main.pref.get("osm-server.url", OsmApi.DEFAULT_API_URL);
 
         // When API URL changes, re-initialize API connection so we may adjust
         // server-dependent settings.
-        if (!old_url.equals(new_url)) {
+        if (!oldUrl.equals(newUrl)) {
             try {
                 OsmApi.getOsmApi().initialize(null);
@@ -163,4 +167,15 @@
         }
     }
+    
+    /**
+     * Returns the entered API URL, stripped of leading and trailing white characters.
+     * @return the entered API URL, stripped of leading and trailing white characters. 
+     *         May be an empty string if nothing has been entered. In this case, it means the user wants to use {@link OsmApi#DEFAULT_API_URL}.
+     * @see Utils#strip(String)
+     * @since 6602
+     */
+    public final String getStrippedApiUrl() {
+        return Utils.strip(tfOsmServerUrl.getText());
+    }
 
     class ValidateApiUrlAction extends AbstractAction implements DocumentListener {
@@ -175,5 +190,5 @@
         @Override
         public void actionPerformed(ActionEvent arg0) {
-            final String url = tfOsmServerUrl.getText().trim();
+            final String url = getStrippedApiUrl();
             final ApiUrlTestTask task = new ApiUrlTestTask(OsmApiUrlInputPanel.this, url);
             Main.worker.submit(task);
@@ -204,7 +219,6 @@
 
         protected void updateEnabledState() {
-            boolean enabled =
-                !tfOsmServerUrl.getText().trim().isEmpty()
-                && !tfOsmServerUrl.getText().trim().equals(lastTestedUrl);
+            String url = getStrippedApiUrl();
+            boolean enabled = !url.isEmpty() && !url.equals(lastTestedUrl);
             if (enabled) {
                 lblValid.setIcon(null);
@@ -281,5 +295,5 @@
             case ItemEvent.SELECTED:
                 setApiUrlInputEnabled(false);
-                firePropertyChange(API_URL_PROP, null, OsmApi.DEFAULT_API_URL);
+                propagator.propagate(OsmApi.DEFAULT_API_URL);
                 break;
             case ItemEvent.DESELECTED:
@@ -287,5 +301,5 @@
                 valOsmServerUrl.validate();
                 tfOsmServerUrl.requestFocusInWindow();
-                firePropertyChange(API_URL_PROP, null, tfOsmServerUrl.getText());
+                propagator.propagate();
                 break;
             }
@@ -295,5 +309,9 @@
     class ApiUrlPropagator extends FocusAdapter implements ActionListener {
         public void propagate() {
-            firePropertyChange(API_URL_PROP, null, tfOsmServerUrl.getText());
+            propagate(getStrippedApiUrl());
+        }
+
+        public void propagate(String url) {
+            firePropertyChange(API_URL_PROP, null, url);
         }
 
