Index: /trunk/src/org/openstreetmap/josm/data/validation/Test.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 6590)
+++ /trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 6591)
@@ -88,4 +88,34 @@
 
     /**
+     * A test that forwards all primitives to {@link #check(OsmPrimitive)}.
+     */
+    public static abstract class TagTest extends Test {
+        public TagTest(String name, String description) {
+            super(name, description);
+        }
+
+        public TagTest(String name) {
+            super(name);
+        }
+
+        public abstract void check(final OsmPrimitive p);
+
+        @Override
+        public void visit(Node n) {
+            check(n);
+        }
+
+        @Override
+        public void visit(Way w) {
+            check(w);
+        }
+
+        @Override
+        public void visit(Relation r) {
+            check(r);
+        }
+    }
+
+    /**
      * Initializes any global data used this tester.
      * @throws Exception When cannot initialize the test
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 6590)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 6591)
@@ -56,5 +56,5 @@
  * @since 6506
  */
-public class MapCSSTagChecker extends Test {
+public class MapCSSTagChecker extends Test.TagTest {
 
     /**
@@ -338,5 +338,6 @@
      * @param p The primitive to inspect.
      */
-    public void visit(OsmPrimitive p) {
+    @Override
+    public void check(OsmPrimitive p) {
         for (TagCheck check : checks) {
             final TestError error = check.getErrorForPrimitive(p);
@@ -346,19 +347,4 @@
             }
         }
-    }
-
-    @Override
-    public void visit(Node n) {
-        visit((OsmPrimitive) n);
-    }
-
-    @Override
-    public void visit(Way w) {
-        visit((OsmPrimitive) w);
-    }
-
-    @Override
-    public void visit(Relation r) {
-        visit((OsmPrimitive) r);
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java	(revision 6590)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java	(revision 6591)
@@ -29,5 +29,5 @@
  * @author Skela
  */
-public class NameMismatch extends Test {
+public class NameMismatch extends Test.TagTest {
     protected static final int NAME_MISSING = 1501;
     protected static final int NAME_TRANSLATION_MISSING = 1502;
@@ -57,4 +57,5 @@
      * @param p The primitive to be tested
      */
+    @Override
     public void check(OsmPrimitive p) {
         HashSet<String> names = new HashSet<String>();
@@ -100,17 +101,3 @@
         }
     }
-
-    /**
-     * Checks a name mismatch in all primitives.
-     *
-     * @param selection The primitives to be tested
-     */
-    @Override
-    public void visit(Collection<OsmPrimitive> selection) {
-        for (OsmPrimitive p : selection) {
-            if (!p.isDeleted() && !p.isIncomplete()) {
-                check(p);
-            }
-        }
-    }
 }
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 6590)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 6591)
@@ -35,5 +35,5 @@
  * @since 6370
  */
-public class OpeningHourTest extends Test {
+public class OpeningHourTest extends Test.TagTest {
 
     /**
@@ -222,23 +222,9 @@
     }
 
-    protected void check(final OsmPrimitive p) {
+    @Override
+    public void check(final OsmPrimitive p) {
         check(p, "opening_hours", CheckMode.TIME_RANGE);
         check(p, "collection_times", CheckMode.BOTH);
         check(p, "service_times", CheckMode.BOTH);
     }
-
-    @Override
-    public void visit(final Node n) {
-        check(n);
-    }
-
-    @Override
-    public void visit(final Relation r) {
-        check(r);
-    }
-
-    @Override
-    public void visit(final Way w) {
-        check(w);
-    }
 }
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 6590)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 6591)
@@ -66,5 +66,5 @@
  * @author frsantos
  */
-public class TagChecker extends Test {
+public class TagChecker extends Test.TagTest {
     
     /** The default data file of tagchecker rules */
@@ -317,19 +317,4 @@
     }
 
-    @Override
-    public void visit(Node n) {
-        checkPrimitive(n);
-    }
-
-    @Override
-    public void visit(Relation n) {
-        checkPrimitive(n);
-    }
-
-    @Override
-    public void visit(Way w) {
-        checkPrimitive(w);
-    }
-
     /**
      * Checks given string (key or value) if it contains characters with code below 0x20 (either newline or some other special characters)
@@ -350,5 +335,6 @@
      * @param p The primitive to check
      */
-    private void checkPrimitive(OsmPrimitive p) {
+    @Override
+    public void check(OsmPrimitive p) {
         // Just a collection to know if a primitive has been already marked with error
         MultiMap<OsmPrimitive, String> withErrors = new MultiMap<OsmPrimitive, String>();
