Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java	(revision 34646)
@@ -3,4 +3,5 @@
 
 import java.awt.event.ActionEvent;
+import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -42,5 +43,5 @@
                     OpenBrowser.displayUrl(uri);
                 }
-            } catch (Exception e2) {
+            } catch (IOException | URISyntaxException e2) {
                 Logging.error(e2);
             }
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 34646)
@@ -40,5 +40,5 @@
         Tag tag;
         String[] kv = relevantTag.split("=");
-        if (kv != null && kv.length == 2) {
+        if (kv.length == 2) {
             tag = new Tag(kv[0], kv[1]);
         } else {
@@ -48,10 +48,10 @@
     }
 
-    public SimpleDataSetHandler(boolean relevantUnion, String ... relevantTags) {
+    public SimpleDataSetHandler(boolean relevantUnion, String... relevantTags) {
         addRelevantTag(relevantTags);
         this.relevantUnion = relevantUnion;
     }
 
-    public SimpleDataSetHandler(String ... relevantTags) {
+    public SimpleDataSetHandler(String... relevantTags) {
         this(false, relevantTags);
     }
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ChooserLauncher.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ChooserLauncher.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ChooserLauncher.java	(revision 34646)
@@ -21,5 +21,5 @@
     public void run() {
         Component parent = progressMonitor == null ? MainApplication.getMainFrame() : progressMonitor.getWindowParent();
-        ProjectionChooser dialog = (ProjectionChooser) new ProjectionChooser(parent).showDialog();
+        ProjectionChooser dialog = new ProjectionChooser(parent).showDialog();
         if (dialog.getValue() == 1) {
             proj = dialog.getProjection();
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ModulePreference.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ModulePreference.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ModulePreference.java	(revision 34646)
@@ -98,6 +98,6 @@
 
     private JTextField tfFilter;
-    private ModuleListPanel pnlModulePreferences;
-    private ModulePreferencesModel model;
+    private final ModulePreferencesModel model = new ModulePreferencesModel();
+    private final ModuleListPanel pnlModulePreferences = new ModuleListPanel(model);
     private JScrollPane spModulePreferences;
 
@@ -140,6 +140,5 @@
         JPanel pnl = new JPanel(new BorderLayout());
         pnl.add(buildSearchFieldPanel(), BorderLayout.NORTH);
-        model = new ModulePreferencesModel();
-        spModulePreferences = new JScrollPane(pnlModulePreferences = new ModuleListPanel(model));
+        spModulePreferences = new JScrollPane(pnlModulePreferences);
         spModulePreferences.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
         spModulePreferences.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ProjectionChooser.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ProjectionChooser.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ProjectionChooser.java	(revision 34646)
@@ -158,3 +158,9 @@
         }
     }
+
+    @Override
+    public ProjectionChooser showDialog() {
+        super.showDialog();
+        return this;
+    }
 }
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 34646)
@@ -267,5 +267,5 @@
             Datum datum1 = ((AbstractSingleCRS) crs1).getDatum();
             Datum datum2 = ((AbstractSingleCRS) crs2).getDatum();
-            if (!compareDebug("datum", datum1, datum2)) {
+            if (!compareDebug("datum", datum1, datum2) && datum1 instanceof AbstractIdentifiedObject) {
                 AbstractIdentifiedObject adatum1 = (AbstractIdentifiedObject) datum1;
                 AbstractIdentifiedObject adatum2 = (AbstractIdentifiedObject) datum2;
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlKmzImporter.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlKmzImporter.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlKmzImporter.java	(revision 34646)
@@ -13,4 +13,7 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.AbstractImporter;
 
+/**
+ * Keyhole Markup Language (KML/KMZ) importer.
+ */
 public class KmlKmzImporter extends AbstractImporter {
 
@@ -27,5 +30,5 @@
             throws IllegalDataException {
         try {
-            if (file.getName().toLowerCase().endsWith(OdConstants.KML_EXT)) {
+            if (file != null && file.getName().toLowerCase().endsWith(OdConstants.KML_EXT)) {
                 return KmlReader.parseDataSet(in, instance);
             } else {
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java	(revision 34646)
@@ -60,6 +60,6 @@
     private File file;
     private InputStream stream;
-    protected Charset charset;
-    protected BufferedReader midReader;
+    private Charset charset;
+    private BufferedReader midReader;
 
     private Character delimiter = '\t';
@@ -166,4 +166,6 @@
             params += param(Param.lat_0, originLat);
             break;
+        default:
+            Logging.trace("originLat not set for " + proj);
         }
 
@@ -182,4 +184,6 @@
             params += param(Param.lat_1, stdP1);
             break;
+        default:
+            Logging.trace("stdP1 not set for " + proj);
         }
 
@@ -193,4 +197,6 @@
             params += param(Param.lat_2, stdP2);
             break;
+        default:
+            Logging.trace("stdP2 not set for " + proj);
         }
 
@@ -216,4 +222,6 @@
             params += param(Param.k_0, scaleFactor);
             break;
+        default:
+            Logging.trace("scaleFactor not set for " + proj);
         }
 
@@ -249,4 +257,6 @@
             params += param(Param.y_0, falseNorthing);
             break;
+        default:
+            Logging.trace("falseEasting/falseNorthing not set for " + proj);
         }
 
@@ -257,4 +267,6 @@
             Double.parseDouble(words[8+offset]);
             // TODO: what's proj4 parameter ?
+        default:
+            Logging.trace("range not set for " + proj);
         }
 
@@ -276,4 +288,6 @@
             }
             break;
+        default:
+            Logging.trace("josmProj not set for " + proj);
         }
 
@@ -592,5 +606,5 @@
     }
 
-    protected void readAttributes(OsmPrimitive p) throws IOException {
+    private void readAttributes(OsmPrimitive p) throws IOException {
         if (midReader != null) {
             String midLine = midReader.readLine();
@@ -613,5 +627,5 @@
     }
 
-    protected Node createNode(String x, String y) {
+    private Node createNode(String x, String y) {
         Node node = new Node(josmProj.eastNorth2latlon(new EastNorth(Double.parseDouble(x), Double.parseDouble(y))));
         ds.addPrimitive(node);
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifTabImporter.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifTabImporter.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifTabImporter.java	(revision 34646)
@@ -14,4 +14,7 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.AbstractImporter;
 
+/**
+ * MapInfo (MIF/TAB) importer.
+ */
 public class MifTabImporter extends AbstractImporter {
 
@@ -28,5 +31,5 @@
             throws IllegalDataException {
         try {
-            if (file.getName().toLowerCase().endsWith(OdConstants.MIF_EXT)) {
+            if (file != null && file.getName().toLowerCase().endsWith(OdConstants.MIF_EXT)) {
                 return MifReader.parseDataSet(in, file, handler, instance);
             } else {
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpImporter.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpImporter.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpImporter.java	(revision 34646)
@@ -14,6 +14,9 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.AbstractImporter;
 
+/**
+ * Shapefile (SHP) importer.
+ */
 public class ShpImporter extends AbstractImporter {
-    
+
     public static final ExtensionFileFilter SHP_FILE_FILTER = new ExtensionFileFilter(
             OdConstants.SHP_EXT, OdConstants.SHP_EXT, tr("Shapefiles") + " (*."+OdConstants.SHP_EXT+")");
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java	(revision 34646)
@@ -9,4 +9,6 @@
 import java.util.zip.ZipInputStream;
 
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.jopendocument.io.SaxContentUnmarshaller;
 import org.jopendocument.model.OpenDocument;
@@ -14,4 +16,5 @@
 import org.openstreetmap.josm.tools.XmlUtils;
 import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
@@ -51,5 +54,5 @@
             }
 
-        } catch (Exception e) {
+        } catch (IOException | SAXException | ParserConfigurationException e) {
             Logging.error(e);
         }
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleHandler.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleHandler.java	(revision 34646)
@@ -175,4 +175,6 @@
                 Config.getPref().put(togglePreferenceKey, "never");
                 break;
+            default:
+                Logging.trace(Integer.toString(ret));
             }
         } else {
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleInformation.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleInformation.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleInformation.java	(revision 34646)
@@ -139,4 +139,5 @@
     }
 
+    @SuppressWarnings("unused")
     private void scanManifest(Manifest manifest) {
         String lang = LanguageInfo.getLanguageCodeManifest();
@@ -149,6 +150,5 @@
         if (s != null) {
             try {
-                @SuppressWarnings("unused")
-                URL url = new URL(s);
+                new URL(s);
             } catch (MalformedURLException e) {
                 Logging.error(tr("Invalid URL ''{0}'' in module {1}", s, name));
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleListParser.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleListParser.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleListParser.java	(revision 34646)
@@ -101,16 +101,13 @@
                 url = x[1];
                 manifest = new StringBuilder();
-
             }
             if (name != null) {
                 ModuleInformation info = createInfo(name, url, manifest.toString());
-                if (info != null) {
-                    for (Module module : ModuleHandler.moduleList) {
-                        if (module.getModuleInformation().name.equals(info.getName())) {
-                            info.localversion = module.getModuleInformation().localversion;
-                        }
+                for (Module module : ModuleHandler.moduleList) {
+                    if (module.getModuleInformation().name.equals(info.getName())) {
+                        info.localversion = module.getModuleInformation().localversion;
                     }
-                    ret.add(info);
                 }
+                ret.add(info);
             }
             return ret;
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/NamesFrUtils.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/NamesFrUtils.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/NamesFrUtils.java	(revision 34646)
@@ -16,4 +16,7 @@
 import org.openstreetmap.josm.tools.Logging;
 
+/**
+ * Utilities for French names.
+ */
 public abstract class NamesFrUtils {
 
@@ -36,4 +39,5 @@
                 SimpleDataSetHandler.class.getResourceAsStream(OdConstants.DICTIONARY_FR), OdConstants.UTF8))) {
             String line = reader.readLine(); // Skip first line
+            Logging.trace(line);
             while ((line = reader.readLine()) != null) {
                 String[] tab = line.split(";");
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java	(revision 34645)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java	(revision 34646)
@@ -34,5 +34,5 @@
             if (append) {
                 int index = result.size()-1;
-                if (split[i].endsWith("\"") && StringUtils.countMatches(split[i], "\"") % 2 == 1) {
+                if (split[i].endsWith("\"") && StringUtils.countMatches(split[i], "\"") % 2 != 0) {
                     append = false;
                 }
