Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 5623)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 5624)
@@ -54,4 +54,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -121,5 +122,5 @@
         }
 
-        public static PresetType forPrimitiveType(org.openstreetmap.josm.data.osm.OsmPrimitiveType type) {
+        public static PresetType forPrimitiveType(OsmPrimitiveType type) {
             switch (type) {
             case NODE:
@@ -1589,10 +1590,10 @@
 
     public String suggestRoleForOsmPrimitive(OsmPrimitive osm) {
-        if (roles == null) {
-            return null;
-        }
-        for (Role i : roles.roles) {
-            if (i.memberExpression != null && i.memberExpression.match(osm)) {
-                return i.key;
+        if (roles != null && osm != null) {
+            for (Role i : roles.roles) {
+                if (i.memberExpression != null && i.memberExpression.match(osm) 
+                        && (i.types == null || i.types.isEmpty() || i.types.contains(PresetType.forPrimitive(osm)) )) {
+                    return i.key;
+                }
             }
         }
