Index: /applications/editors/josm/plugins/sds/build.xml
===================================================================
--- /applications/editors/josm/plugins/sds/build.xml	(revision 36050)
+++ /applications/editors/josm/plugins/sds/build.xml	(revision 36051)
@@ -5,5 +5,5 @@
     <property name="commit.message" value=""/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18650"/>
 
     <property name="plugin.author" value="Frederik Ramm"/>
Index: /applications/editors/josm/plugins/sds/src/org/openstreetmap/hot/sds/SdsCredentialAgent.java
===================================================================
--- /applications/editors/josm/plugins/sds/src/org/openstreetmap/hot/sds/SdsCredentialAgent.java	(revision 36050)
+++ /applications/editors/josm/plugins/sds/src/org/openstreetmap/hot/sds/SdsCredentialAgent.java	(revision 36051)
@@ -7,9 +7,10 @@
 import java.net.Authenticator.RequestorType;
 import java.net.PasswordAuthentication;
-import java.util.HashMap;
+import java.util.EnumMap;
 import java.util.Map;
 
 import javax.swing.text.html.HTMLEditorKit;
 
+import org.openstreetmap.josm.data.oauth.IOAuthToken;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.io.CredentialDialog;
@@ -27,11 +28,11 @@
 public class SdsCredentialAgent extends AbstractCredentialsAgent {
 
-    Map<RequestorType, PasswordAuthentication> sdsMemoryCredentialsCache = new HashMap<>();
+    private final Map<RequestorType, PasswordAuthentication> sdsMemoryCredentialsCache = new EnumMap<>(RequestorType.class);
 
     /**
-     * @see CredentialsAgent#lookup(RequestorType)
+     * @see CredentialsAgent#lookup(RequestorType, String)
      */
     @Override
-    public PasswordAuthentication lookup(RequestorType requestorType, String host) throws CredentialsAgentException {
+    public PasswordAuthentication lookup(RequestorType requestorType, String host) {
         if (requestorType == null)
             return null;
@@ -56,5 +57,5 @@
 
     /**
-     * @see CredentialsAgent#store(RequestorType, PasswordAuthentication)
+     * @see CredentialsAgent#store(RequestorType, String, PasswordAuthentication)
      */
     @Override
@@ -87,8 +88,7 @@
      *
      * @return the current OAuth Access Token to access the OSM server.
-     * @throws CredentialsAgentException thrown if something goes wrong
      */
     @Override
-    public OAuthToken lookupOAuthAccessToken() throws CredentialsAgentException {
+    public OAuthToken lookupOAuthAccessToken() {
         String accessTokenKey = Config.getPref().get("oauth.access-token.key", null);
         String accessTokenSecret = Config.getPref().get("oauth.access-token.secret", null);
@@ -96,4 +96,9 @@
             return null;
         return new OAuthToken(accessTokenKey, accessTokenSecret);
+    }
+
+    @Override
+    public IOAuthToken lookupOAuthAccessToken(String host) {
+        throw new UnsupportedOperationException("SDS does not support OAuth tokens");
     }
 
@@ -123,8 +128,11 @@
 
     @Override
-    public void storeOAuthAccessToken(OAuthToken accessToken)
-            throws CredentialsAgentException {
+    public void storeOAuthAccessToken(OAuthToken accessToken) {
         // no-op
-
+    }
+
+    @Override
+    public void storeOAuthAccessToken(String host, IOAuthToken accessToken) {
+        throw new UnsupportedOperationException("SDS does not support OAuth tokens");
     }
 
@@ -158,6 +166,6 @@
          * (noSuccessWithLastResponse == true).
          */
-        } else if (noSuccessWithLastResponse || username.equals("") || password.equals("")) {
-            CredentialDialog dialog = null;
+        } else if (noSuccessWithLastResponse || "".equals(username) || "".equals(password)) {
+            CredentialDialog dialog;
             switch(requestorType) {
             case SERVER:
@@ -167,4 +175,6 @@
                 dialog = CredentialDialog.getHttpProxyCredentialDialog(username, password, host, getSaveUsernameAndPasswordCheckboxText());
                 break;
+            default:
+                return null;
             }
             dialog.setVisible(true);
