Index: applications/editors/josm/plugins/validator/build.xml
===================================================================
--- applications/editors/josm/plugins/validator/build.xml	(revision 17539)
+++ applications/editors/josm/plugins/validator/build.xml	(revision 17540)
@@ -26,5 +26,5 @@
                 <attribute name="Plugin-Description" value="An OSM data validator. It checks for problems in data, and provides fixes for the common ones. Spellcheck integrated for tag names."/>
                 <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/index.php/JOSM/Plugins/Validator"/>
-                <attribute name="Plugin-Mainversion" value="2067"/>
+                <attribute name="Plugin-Mainversion" value="2082"/>
                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
             </manifest>
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java	(revision 17539)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java	(revision 17540)
@@ -156,4 +156,6 @@
     }
 
+    private ValidateUploadHook uploadHook;
+    
     @Override
     public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
@@ -168,15 +170,10 @@
             Layer.listeners.remove(this);
 
-        LinkedList<UploadHook> hooks = ((UploadAction) Main.main.menu.upload).uploadHooks;
-        Iterator<UploadHook> hooksIt = hooks.iterator();
-        while (hooksIt.hasNext()) {
-            if (hooksIt.next() instanceof ValidateUploadHook) {
-                if (newFrame == null)
-                    hooksIt.remove();
-                break;
-            }
-        }
-        if (newFrame != null)
-            hooks.add(0, new ValidateUploadHook(this));
+        if (newFrame != null) {
+        	UploadAction.registerUploadHook(uploadHook = new ValidateUploadHook(this));
+        } else {
+        	UploadAction.unregisterUploadHook(uploadHook);
+        	uploadHook = null;
+        }
     }
 
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java	(revision 17539)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java	(revision 17540)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.UploadAction.UploadHook;
+import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -42,5 +43,5 @@
      * Validate the modified data before uploading
      */
-    public boolean checkUpload(Collection<OsmPrimitive> add, Collection<OsmPrimitive> update, Collection<OsmPrimitive> delete)
+    public boolean checkUpload(APIDataSet apiDataSet)
     {
         Collection<Test> tests = OSMValidatorPlugin.getEnabledTests(true);
@@ -49,6 +50,6 @@
 
         AgregatePrimitivesVisitor v = new AgregatePrimitivesVisitor();
-        v.visit(add);
-        Collection<OsmPrimitive> selection = v.visit(update);
+        v.visit(apiDataSet.getPrimitivesToAdd());
+        Collection<OsmPrimitive> selection = v.visit(apiDataSet.getPrimitivesToUpdate());
 
         List<TestError> errors = new ArrayList<TestError>(30);
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java	(revision 17539)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java	(revision 17540)
@@ -119,9 +119,9 @@
             if(r.isUsable() && "multipolygon".equals(r.get("type")))
             {
-                for (RelationMember m : r.members)
+                for (RelationMember m : r.getMembers())
                 {
-                    if(m.member != null && m.member instanceof Way &&
-                    m.member.isUsable() && !m.member.isTagged())
-                        multipolygonways.add((Way)m.member);
+                    if(m.getMember() != null && m.getMember() instanceof Way &&
+                    m.getMember().isUsable() && !m.getMember().isTagged())
+                        multipolygonways.add((Way)m.getMember());
                 }
             }
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/AgregatePrimitivesVisitor.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/AgregatePrimitivesVisitor.java	(revision 17539)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/AgregatePrimitivesVisitor.java	(revision 17540)
@@ -65,6 +65,6 @@
         if (!aggregatedData.contains(r)) {
             aggregatedData.add(r);
-            for (RelationMember m : r.members) {
-                m.member.visit(this);
+            for (RelationMember m : r.getMembers()) {
+                m.getMember().visit(this);
             }
         }
