Index: trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 16085)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 16086)
@@ -9,5 +9,4 @@
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Set;
 import java.util.regex.Matcher;
@@ -204,8 +203,7 @@
                 for (final String condition : conditional.conditions) {
                     if (condition.matches(".*[0-9]:[0-9]{2}.*")) {
-                        final List<OpeningHourTest.OpeningHoursTestError> errors = openingHourTest.checkOpeningHourSyntax(
-                                "", condition, true, Locale.getDefault());
+                        final List<TestError> errors = openingHourTest.checkOpeningHourSyntax("", condition);
                         if (!errors.isEmpty()) {
-                            return errors.get(0).getMessage();
+                            return errors.get(0).getDescription();
                         }
                     }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 16085)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 16086)
@@ -5,4 +5,6 @@
 
 import java.io.StringReader;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -29,4 +31,6 @@
 public class OpeningHourTest extends TagTest {
 
+    private static final Collection<String> KEYS_TO_CHECK = Arrays.asList("opening_hours", "collection_times", "service_times");
+
     /**
      * Constructs a new {@code OpeningHourTest}.
@@ -38,67 +42,20 @@
 
     /**
-     * An error concerning invalid syntax for an "opening_hours"-like tag.
+     * Returns the real test error given to JOSM validator.
+     * @param severity The error severity
+     * @param message The error message
+     * @param key The incriminated key, used for display.
+     * @param prettifiedValue The prettified value
+     * @param p The incriminated OSM primitive.
+     * @return The real test error given to JOSM validator. Can be fixable or not if a prettified values has been determined.
      */
-    public class OpeningHoursTestError {
-        private final Severity severity;
-        private final String message;
-        private final String prettifiedValue;
-
-        /**
-         * Constructs a new {@code OpeningHoursTestError} with a known prettified value.
-         * @param message The error message
-         * @param severity The error severity
-         * @param prettifiedValue The prettified value
-         */
-        public OpeningHoursTestError(String message, Severity severity, String prettifiedValue) {
-            this.message = message;
-            this.severity = severity;
-            this.prettifiedValue = prettifiedValue;
-        }
-
-        /**
-         * Returns the real test error given to JOSM validator.
-         * @param p The incriminated OSM primitive.
-         * @param key The incriminated key, used for display.
-         * @return The real test error given to JOSM validator. Can be fixable or not if a prettified values has been determined.
-         */
-        public TestError getTestError(final OsmPrimitive p, final String key) {
-            final TestError.Builder error = TestError.builder(OpeningHourTest.this, severity, 2901)
-                    .message(tr("Opening hours syntax"), message) // todo obtain English message for ignore functionality
-                    .primitives(p);
-            if (prettifiedValue == null || prettifiedValue.equals(p.get(key))) {
-                return error.build();
-            } else {
-                return error.fix(() -> new ChangePropertyCommand(p, key, prettifiedValue)).build();
-            }
-        }
-
-        /**
-         * Returns the error message.
-         * @return The error message.
-         */
-        public String getMessage() {
-            return message;
-        }
-
-        /**
-         * Returns the prettified value.
-         * @return The prettified value.
-         */
-        public String getPrettifiedValue() {
-            return prettifiedValue;
-        }
-
-        /**
-         * Returns the error severity.
-         * @return The error severity.
-         */
-        public Severity getSeverity() {
-            return severity;
-        }
-
-        @Override
-        public String toString() {
-            return getMessage() + " => " + getPrettifiedValue();
+    private TestError createTestError(Severity severity, String message, String key, String prettifiedValue, OsmPrimitive p) {
+        final TestError.Builder error = TestError.builder(this, severity, 2901)
+                .message(tr("Opening hours syntax"), message) // todo obtain English message for ignore functionality
+                .primitives(p);
+        if (prettifiedValue == null || prettifiedValue.equals(p.get(key))) {
+            return error.build();
+        } else {
+            return error.fix(() -> new ChangePropertyCommand(p, key, prettifiedValue)).build();
         }
     }
@@ -111,6 +68,6 @@
      * @return a list of {@link TestError} or an empty list
      */
-    public List<OpeningHoursTestError> checkOpeningHourSyntax(final String key, final String value) {
-        return checkOpeningHourSyntax(key, value, false, Locale.getDefault());
+    public List<TestError> checkOpeningHourSyntax(final String key, final String value) {
+        return checkOpeningHourSyntax(key, value, null, Locale.getDefault());
     }
 
@@ -120,9 +77,9 @@
      * @param key the OSM key (should be "opening_hours", "collection_times" or "service_times").
      * @param value the opening hour value to be checked.
-     * @param ignoreOtherSeverity whether to ignore errors with {@link Severity#OTHER}.
+     * @param p the primitive to check/fix.
      * @param locale the locale code used for localizing messages
      * @return a list of {@link TestError} or an empty list
      */
-    public List<OpeningHoursTestError> checkOpeningHourSyntax(final String key, final String value, boolean ignoreOtherSeverity, Locale locale) {
+    List<TestError> checkOpeningHourSyntax(final String key, final String value, OsmPrimitive p, Locale locale) {
         if (value == null || value.isEmpty()) {
             return Collections.emptyList();
@@ -139,18 +96,12 @@
             }
         } catch (ParseException e) {
-            return Collections.singletonList(new OpeningHoursTestError(e.getMessage(), Severity.WARNING, prettifiedValue));
+            return Collections.singletonList(createTestError(Severity.WARNING, e.getMessage(), key, prettifiedValue, p));
         }
 
-        if (ignoreOtherSeverity || Objects.equals(value, prettifiedValue)) {
+        if (!includeOtherSeverityChecks() || Objects.equals(value, prettifiedValue) || p == null) {
             return Collections.emptyList();
         } else {
-            return Collections.singletonList(
-                    new OpeningHoursTestError(tr("{0} value can be prettified", key), Severity.OTHER, prettifiedValue));
-        }
-    }
-
-    protected void check(final OsmPrimitive p, final String key) {
-        for (OpeningHoursTestError e : checkOpeningHourSyntax(key, p.get(key))) {
-            errors.add(e.getTestError(p, key));
+            final String message = tr("{0} value can be prettified", key);
+            return Collections.singletonList(createTestError(Severity.OTHER, message, key, prettifiedValue, p));
         }
     }
@@ -158,7 +109,7 @@
     @Override
     public void check(final OsmPrimitive p) {
-        check(p, "opening_hours");
-        check(p, "collection_times");
-        check(p, "service_times");
+        for (String key : KEYS_TO_CHECK) {
+            errors.addAll(checkOpeningHourSyntax(key, p.get(key), p, Locale.getDefault()));
+        }
     }
 }
