Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/oauth/OAuthUtils.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/oauth/OAuthUtils.java	(revision 31794)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/oauth/OAuthUtils.java	(revision 31795)
@@ -37,7 +37,9 @@
         "Bearer " + Main.pref.get("mapillary.access-token"));
 
-    BufferedReader in = new BufferedReader(new InputStreamReader(
-        con.getInputStream()));
-    return Json.createReader(in).readObject();
+    try (
+      BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))
+    ) {
+      return Json.createReader(in).readObject();
+    }
   }
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyph.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyph.java	(revision 31794)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyph.java	(revision 31795)
@@ -10,5 +10,5 @@
 import javax.json.JsonReader;
 
-public class TrafficoGlyph {
+public final class TrafficoGlyph {
   private TrafficoGlyph() {
     // private constructor to avoid instantiation
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSign.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSign.java	(revision 31794)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSign.java	(revision 31795)
@@ -9,5 +9,4 @@
 import java.util.Map;
 import java.util.Set;
-import java.util.TreeMap;
 
 import javax.json.Json;
@@ -15,12 +14,7 @@
 import javax.json.JsonObject;
 
-public class TrafficoSign {
-  private static final Map<String, String> isIn = new TreeMap<>();
-
-  static {
-    isIn.put("be", "europe");
-    isIn.put("de", "europe");
-    isIn.put("dk", "europe");
-    isIn.put("es", "europe");
+public final class TrafficoSign {
+  private TrafficoSign() {
+    // private constructor to avoid instantiation
   }
 
@@ -31,6 +25,5 @@
       System.out.println("Read signs for " + country);
       InputStream countryStream = TrafficoSign.class
-          .getResourceAsStream("/data/fonts/traffico/signs/" + country
-              + ".json");
+          .getResourceAsStream("/data/fonts/traffico/signs/" + country + ".json");
       if (countryStream == null) {
         return null;
@@ -89,7 +82,4 @@
       return signs.get(country).get(signName);
     }
-    if (isIn.containsKey(country)) {
-      return TrafficoSign.getSign(isIn.get(country), signName);
-    }
     return null;
   }
Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyphTest.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyphTest.java	(revision 31794)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoGlyphTest.java	(revision 31795)
@@ -3,7 +3,6 @@
 import static org.junit.Assert.assertEquals;
 
-import java.lang.reflect.Constructor;
-
 import org.junit.Test;
+import org.openstreetmap.josm.plugins.mapillary.utils.TestUtil;
 
 public class TrafficoGlyphTest {
@@ -17,12 +16,7 @@
   }
 
-  /**
-   * The following test has the only purpose to provide code coverage for the private constructor.
-   */
   @Test
-  public void testPrivateConstructor() throws Exception {
-    Constructor<?> c = TrafficoGlyph.class.getDeclaredConstructors()[0];
-    c.setAccessible(true);
-    c.newInstance();
+  public void testUtilityClass() {
+    TestUtil.testUtilityClass(TrafficoGlyph.class);
   }
 
Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSignTest.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSignTest.java	(revision 31795)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/traffico/TrafficoSignTest.java	(revision 31795)
@@ -0,0 +1,27 @@
+package org.openstreetmap.josm.plugins.mapillary.traffico;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import org.junit.Test;
+import org.openstreetmap.josm.plugins.mapillary.utils.TestUtil;
+
+public class TrafficoSignTest {
+
+  @Test
+  public void test() {
+    assertArrayEquals(null, TrafficoSign.getSign("de", ""));
+    TrafficoSignElement[] trafficSignals = TrafficoSign.getSign("de", "traffic-signals-ahead");
+    assertNotEquals(null, trafficSignals);
+    assertEquals(5, trafficSignals.length);
+    assertArrayEquals(null, TrafficoSign.getSign("us", ""));
+    assertArrayEquals(null, TrafficoSign.getSign("xyz", ""));
+  }
+
+  @Test
+  public void testUtilityClass() {
+    TestUtil.testUtilityClass(TrafficoSign.class);
+  }
+
+}
Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/TestUtil.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/TestUtil.java	(revision 31794)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/TestUtil.java	(revision 31795)
@@ -1,4 +1,10 @@
 package org.openstreetmap.josm.plugins.mapillary.utils;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 
 import org.openstreetmap.josm.Main;
@@ -41,3 +47,29 @@
   }
 
+  /**
+   * This method tests utility classes for common coding standards (exactly one constructor that's private,
+   * only static methods, …) and fails the current test if one of those standards is not met.
+   * This is inspired by http://stackoverflow.com/questions/4520216 .
+   * @param c the class under test
+   */
+  public static void testUtilityClass(final Class<?> c) {
+    try {
+      // class must be final
+      assertTrue(Modifier.isFinal(c.getModifiers()));
+      // with exactly one constructor
+      assertEquals(1, c.getDeclaredConstructors().length);
+      final Constructor<?> constructor = c.getDeclaredConstructors()[0];
+      // constructor has to be private
+      assertTrue(!constructor.isAccessible() && Modifier.isPrivate(constructor.getModifiers()));
+      constructor.setAccessible(true);
+      // Call private constructor for code coverage
+      constructor.newInstance();
+      for (Method m : c.getMethods()) {
+        // Check if all methods are static
+        assertTrue(m.getDeclaringClass() != c || Modifier.isStatic(m.getModifiers()));
+      }
+    } catch (Exception e) {
+      assertTrue(e.getMessage(), false);
+    }
+  }
 }
