Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6870)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6872)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.data.preferences.CollectionProperty;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
@@ -32,5 +33,5 @@
 
 /**
- * Tests if there are overlapping ways
+ * Tests if there are overlapping ways.
  *
  * @author frsantos
@@ -49,4 +50,7 @@
     protected static final int OVERLAPPING_AREA = 120;
     protected static final int DUPLICATE_WAY_SEGMENT = 121;
+
+    protected static final CollectionProperty IGNORED_KEYS = new CollectionProperty(
+            "overlapping-ways.ignored-keys", Arrays.asList("barrier", "building"));
 
     /** Constructor */
@@ -154,7 +158,15 @@
         // see ticket #9598 - only report if at least 3 segments are shared
         for (TestError error : preliminaryErrors) {
-            if (error.getHighlighted().size() / error.getPrimitives().size() >= 3
-                    && !Utils.exists(error.getPrimitives(), Predicates.hasKey("building"))) {
-                errors.add(error);
+            if (error.getHighlighted().size() / error.getPrimitives().size() >= 3) {
+                boolean ignore = false;
+                for (String ignoredKey : IGNORED_KEYS.get()) {
+                    if (Utils.exists(error.getPrimitives(), Predicates.hasKey(ignoredKey))) {
+                        ignore = true;
+                        break;
+                    }
+                }
+                if (!ignore) {
+                    errors.add(error);
+                }
             }
         }
