Index: applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/fallback/FallbackProvider.java	(revision 35665)
@@ -91,6 +91,5 @@
         byte[] randomArray = new byte[36];
         new SecureRandom().nextBytes(randomArray);
-        if (_save(SAMPLE_KEY, (SAMPLE_KEY + new String(randomArray, StandardCharsets.UTF_8)).toCharArray(),
-                "Sample value ensuring that decryption is working.")) {
+        if (_save(SAMPLE_KEY, (SAMPLE_KEY + new String(randomArray, StandardCharsets.UTF_8)).toCharArray())) {
             LOG.fine("saved sample key");
             return true;
@@ -117,7 +116,8 @@
     @Override
     public void save(String key, char[] password, String description) {
-        _save(key, password, description);
+        _save(key, password);
     }
-    private boolean _save(String key, char[] password, String description) {
+
+    private boolean _save(String key, char[] password) {
         try {
             prefs.putByteArray(key, encryption.encrypt(password));
Index: applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java	(revision 35665)
@@ -43,5 +43,5 @@
 package org.netbeans.modules.keyring.gnome;
 
-import com.sun.jna.DefaultTypeMapper;
+import com.sun.jna.DefaultTypeMapper; // NOSONAR
 import com.sun.jna.FromNativeContext;
 import com.sun.jna.Library;
@@ -68,7 +68,7 @@
         // http://packages.ubuntu.com/search?suite=precise&arch=any&mode=exactfilename&searchon=contents&keywords=libgnome-keyring.so.0
         private static final String EXPLICIT_ONEIRIC = "/usr/lib/libgnome-keyring.so.0";
-        private static Object load(Map<String,?> options) {
+        private static GnomeKeyringLibrary load(Map<String,?> options) {
             try {
-                return Native.loadLibrary(GENERIC, GnomeKeyringLibrary.class, options);
+                return Native.load(GENERIC, GnomeKeyringLibrary.class, options);
             } catch (UnsatisfiedLinkError x) {
                 // #203735: on Oneiric, may have trouble finding right lib.
@@ -76,5 +76,5 @@
                 // Unclear if this workaround is still needed for Oneiric with 3.4, but seems harmless to leave it in for now.
                 if (new File(EXPLICIT_ONEIRIC).isFile()) {
-                    return Native.loadLibrary(EXPLICIT_ONEIRIC, GnomeKeyringLibrary.class, options);
+                    return Native.load(EXPLICIT_ONEIRIC, GnomeKeyringLibrary.class, options);
                 } else {
                     throw x;
@@ -85,5 +85,5 @@
     }
 
-    GnomeKeyringLibrary LIBRARY = (GnomeKeyringLibrary) LibFinder.load(Collections.singletonMap(OPTION_TYPE_MAPPER, new DefaultTypeMapper() {
+    GnomeKeyringLibrary LIBRARY = LibFinder.load(Collections.singletonMap(OPTION_TYPE_MAPPER, new DefaultTypeMapper() {
         {
             addTypeConverter(Boolean.TYPE, new TypeConverter() { // #198921
@@ -107,5 +107,5 @@
 
     // GnomeKeyringAttributeList gnome_keyring_attribute_list_new() = g_array_new(FALSE, FALSE, sizeof(GnomeKeyringAttribute))
-    int GnomeKeyringAttribute_SIZE = Pointer.SIZE * 3; // conservatively: 2 pointers + 1 enum
+    int GnomeKeyringAttribute_SIZE = Native.POINTER_SIZE * 3; // conservatively: 2 pointers + 1 enum
 
     void gnome_keyring_attribute_list_append_string(
@@ -146,10 +146,10 @@
         @Override
         protected List<String> getFieldOrder() {
-            return Arrays.asList( new String[] {
+            return Arrays.asList(
                 "keyring",
                 "item_id",
                 "attributes",
-                "secret",
-            } );
+                "secret"
+            );
         }
     }
Index: applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/kde/KWalletProvider.java	(revision 35665)
@@ -54,8 +54,8 @@
 
 /**
- *
+ * JNA wrapper for certain functions from KDE Wallet API.
  * @author psychollek, ynov
  */
-public class KWalletProvider implements KeyringProvider{
+public class KWalletProvider implements KeyringProvider {
 
     private static final Logger logger = Logger.getLogger(KWalletProvider.class.getName());
Index: applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/mac/SecurityLibrary.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/mac/SecurityLibrary.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/mac/SecurityLibrary.java	(revision 35665)
@@ -43,5 +43,5 @@
 package org.netbeans.modules.keyring.mac;
 
-import com.sun.jna.Library;
+import com.sun.jna.Library; // NOSONAR
 import com.sun.jna.Native;
 import com.sun.jna.Pointer;
@@ -52,5 +52,5 @@
 public interface SecurityLibrary extends Library {
 
-    SecurityLibrary LIBRARY = (SecurityLibrary) Native.loadLibrary("Security", SecurityLibrary.class);
+    SecurityLibrary LIBRARY = Native.load("Security", SecurityLibrary.class);
 
     int SecKeychainAddGenericPassword(
Index: applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/netbeans/modules/keyring/win32/Win32Protect.java	(revision 35665)
@@ -43,5 +43,5 @@
 package org.netbeans.modules.keyring.win32;
 
-import com.sun.jna.Memory;
+import com.sun.jna.Memory; // NOSONAR
 import com.sun.jna.Native;
 import com.sun.jna.Pointer;
@@ -126,5 +126,5 @@
 
     public interface CryptLib extends StdCallLibrary {
-        CryptLib INSTANCE = (CryptLib) Native.loadLibrary("Crypt32", CryptLib.class); // NOI18N
+        CryptLib INSTANCE = Native.load("Crypt32", CryptLib.class); // NOI18N
         /** @see <a href="http://msdn.microsoft.com/en-us/library/aa380261(VS.85,printer).aspx">Reference</a> */
         boolean CryptProtectData(
@@ -167,8 +167,8 @@
         @Override
         protected List<String> getFieldOrder() {
-            return Arrays.asList( new String[] {
+            return Arrays.asList(
                 "cbData",
-                "pbData",
-            } );
+                "pbData"
+            );
         }
     }
Index: applications/editors/josm/plugins/native-password-manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgent.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgent.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/openstreetmap/josm/plugins/npm/NPMCredentialsAgent.java	(revision 35665)
@@ -25,5 +25,4 @@
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.spi.preferences.Config;
-import org.openstreetmap.josm.tools.Utils;
 
 public class NPMCredentialsAgent extends AbstractCredentialsAgent {
@@ -245,5 +244,5 @@
         }
         if (!sensitive.isEmpty()) {
-            text.append(tr("<br><strong>Warning:</strong> There may be sensitive data left in your preference file. ({0})", Utils.join(", ", sensitive)));
+            text.append(tr("<br><strong>Warning:</strong> There may be sensitive data left in your preference file. ({0})", String.join(", ", sensitive)));
         }
         pnlMessage.setText(text.toString());
@@ -255,5 +254,3 @@
         return tr("Save user and password ({0})", type.getName());
     }
-
-    
 }
Index: applications/editors/josm/plugins/native-password-manager/src/org/openstreetmap/josm/plugins/npm/NPMType.java
===================================================================
--- applications/editors/josm/plugins/native-password-manager/src/org/openstreetmap/josm/plugins/npm/NPMType.java	(revision 35664)
+++ applications/editors/josm/plugins/native-password-manager/src/org/openstreetmap/josm/plugins/npm/NPMType.java	(revision 35665)
@@ -41,16 +41,12 @@
             tr("Encrypt data with Windows logon credentials")
     );
-    
+
     private static String genericIntro(String name) {
         return tr("The native password manager plugin detected {0} on your system.", name);
-//                + "You can let {1} handle your sensitive data from now on. "
-//                + "This means your username and password is no longer saved in plain text in your preferences file. "
-//                + "(It is still transferred over the network unencrypted, though.)", name, name);
     }
-    
+
     private final String prefString;
-    private final Class<? extends KeyringProvider> providerClass;
     private final String name;
-    private KeyringProvider provider;
+    private final KeyringProvider provider;
     private final String introText;
     private final String selectionText;
@@ -58,5 +54,13 @@
     NPMType(String prefString, Class<? extends KeyringProvider> providerClass, String name, String selectionText) {
         this.prefString = prefString;
-        this.providerClass = providerClass;
+        if (providerClass != null) {
+            try {
+                this.provider = providerClass.getDeclaredConstructor().newInstance();
+            } catch (IllegalArgumentException | ReflectiveOperationException | SecurityException ex) {
+                throw new JosmRuntimeException(ex);
+            }
+        } else {
+            this.provider = null;
+        }
         this.name = name;
         this.introText = genericIntro(name);
@@ -90,12 +94,4 @@
     
     public KeyringProvider getProvider() {
-        if (providerClass == null) return null;
-        if (provider == null) {
-            try {
-                provider = providerClass.getDeclaredConstructor().newInstance();
-            } catch (IllegalArgumentException | ReflectiveOperationException | SecurityException ex) {
-                throw new JosmRuntimeException(ex);
-            }
-        }
         return provider;
     }
