Index: trunk/src/org/openstreetmap/josm/data/validation/TestError.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 16177)
+++ trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 16178)
@@ -220,10 +220,9 @@
          *
          * @return a new test error with the specified values
-         * @throws IllegalArgumentException when {@link #message} or {@link #primitives} is null/empty.
+         * @throws IllegalArgumentException when {@link #message} or {@link #primitives} is null.
          */
         public TestError build() {
             CheckParameterUtil.ensureParameterNotNull(message, "message not set");
             CheckParameterUtil.ensureParameterNotNull(primitives, "primitives not set");
-            CheckParameterUtil.ensureThat(!primitives.isEmpty(), "primitives is empty");
             if (this.highlighted == null) {
                 this.highlighted = Collections.emptySet();
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 16177)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 16178)
@@ -46,13 +46,14 @@
      * @param message The error message
      * @param key The incriminated key, used for display.
+     * @param value The incriminated value, used for comparison with prettified value.
      * @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.
      */
-    private TestError createTestError(Severity severity, String message, String key, String prettifiedValue, OsmPrimitive p) {
+    private TestError createTestError(Severity severity, String message, String key, String value, 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))) {
+                .primitives(p != null ? new OsmPrimitive[] {p} : new OsmPrimitive[] {});
+        if (p == null || prettifiedValue == null || prettifiedValue.equals(value)) {
             return error.build();
         } else {
@@ -96,12 +97,12 @@
             }
         } catch (ParseException e) {
-            return Collections.singletonList(createTestError(Severity.WARNING, e.getMessage(), key, prettifiedValue, p));
+            return Collections.singletonList(createTestError(Severity.WARNING, e.getMessage(), key, value, prettifiedValue, p));
         }
 
-        if (!includeOtherSeverityChecks() || Objects.equals(value, prettifiedValue) || p == null) {
+        if (!includeOtherSeverityChecks() || Objects.equals(value, prettifiedValue)) {
             return Collections.emptyList();
         } else {
             final String message = tr("{0} value can be prettified", key);
-            return Collections.singletonList(createTestError(Severity.OTHER, message, key, prettifiedValue, p));
+            return Collections.singletonList(createTestError(Severity.OTHER, message, key, value, prettifiedValue, p));
         }
     }
