Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java	(revision 2070)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java	(revision 2071)
@@ -11,5 +11,4 @@
 import java.util.Arrays;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -81,7 +80,6 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
-        n.modified = false;
+        n.setOsmId(1,1);
+        n.setModified(false);
         n.put("key1", "value1");
         my.addPrimitive(n);
@@ -90,7 +88,6 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
-        n1.modified = false;
+        n1.setOsmId(1,1);
+        n1.setModified(false);
         n1.put("key1", "value1");
         their.addPrimitive(n1);
@@ -102,7 +99,7 @@
         Node n2 = (Node)my.getPrimitiveById(1);
         assertTrue(visitor.getConflicts().isEmpty());
-        assertEquals(1, n2.id);
-        assertEquals(1, n2.version);
-        assertEquals(false, n2.modified);
+        assertEquals(1, n2.getId());
+        assertEquals(1, n2.getVersion());
+        assertEquals(false, n2.isModified());
         assertEquals("value1", n2.get("key1"));
     }
@@ -118,7 +115,6 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
-        n.modified = false;
+        n.setOsmId(1,1);
+        n.setModified(false);
         n.put("key1", "value1");
         my.addPrimitive(n);
@@ -127,7 +123,6 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 2;
-        n1.modified = false;
+        n1.setOsmId(1,2);
+        n1.setModified(false);
         n1.put("key1", "value1-new");
         n1.put("key2", "value2");
@@ -140,7 +135,7 @@
         Node n2 = (Node)my.getPrimitiveById(1);
         assertTrue(visitor.getConflicts().isEmpty());
-        assertEquals(1, n2.id);
-        assertEquals(2, n2.version);
-        assertEquals(false, n2.modified);
+        assertEquals(1, n2.getId());
+        assertEquals(2, n2.getVersion());
+        assertEquals(false, n2.isModified());
         assertEquals("value1-new", n2.get("key1"));
         assertEquals("value2", n2.get("key2"));
@@ -159,7 +154,6 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
-        n.modified = true;
+        n.setOsmId(1,1);
+        n.setModified(true);
         n.put("key1", "value1");
         n.put("key2", "value2");
@@ -169,7 +163,6 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 2;
-        n1.modified = false;
+        n1.setOsmId(1,2);
+        n1.setModified(false);
         n1.put("key1", "value1-new");
 
@@ -196,7 +189,8 @@
         DataSet my = new DataSet();
         my.version = "0.6";
-        Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.delete(true);
+        Node n = new Node(1);
+        n.setCoor(new LatLon(0,0));
+        n.incomplete = false;
+        n.setDeleted(true);
         n.put("key1", "value1");
         my.addPrimitive(n);
@@ -205,7 +199,6 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 2;
-        n1.modified = false;
+        n1.setOsmId(1,1);
+        n1.setModified(false);
         n1.put("key1", "value1-new");
         n1.put("key2", "value2");
@@ -231,8 +224,7 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
-        n.modified = false;
-        n.visible = true;
+        n.setOsmId(1,1);
+        n.setModified(false);
+        n.setVisible(true);
         my.addPrimitive(n);
 
@@ -240,8 +232,8 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 2;
-        n1.modified = false;
-        n1.visible = false;
+        n1.setOsmId(1,2);
+
+        n1.setModified(false);
+        n1.setVisible(false);
         their.addPrimitive(n1);
 
@@ -252,5 +244,5 @@
         Node n2 = (Node)my.getPrimitiveById(1);
         assertEquals(1,visitor.getConflicts().size());
-        assertEquals(true, n2.visible);
+        assertEquals(true, n2.isVisible());
     }
 
@@ -265,7 +257,6 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
-        n.delete(true);
+        n.setOsmId(1,1);
+        n.setDeleted(true);
         my.addPrimitive(n);
 
@@ -273,6 +264,5 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        n1.setOsmId(1,1);
         their.addPrimitive(n1);
 
@@ -283,5 +273,5 @@
         Node n2 = (Node)my.getPrimitiveById(1);
         assertEquals(0,visitor.getConflicts().size());
-        assertEquals(true, n2.visible);
+        assertEquals(true, n2.isVisible());
     }
 
@@ -297,6 +287,5 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(1,1));
-        n.id = 0;
-        n.delete(true);
+        n.setDeleted(true);
         my.addPrimitive(n);
 
@@ -304,5 +293,4 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(1,1));
-        n1.id = 0;
         their.addPrimitive(n1);
 
@@ -325,6 +313,5 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(1,1));
-        n.id = 0;
-        n.delete(true);
+        n.setDeleted(true);
         my.addPrimitive(n);
 
@@ -332,6 +319,5 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(1,1));
-        n1.id = 0;
-        n1.delete(true);
+        n1.setDeleted(true);
         their.addPrimitive(n1);
 
@@ -353,7 +339,6 @@
         my.version = "0.6";
         Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
-        n.delete(true);
+        n.setOsmId(1,1);
+        n.setDeleted(true);
         my.addPrimitive(n);
 
@@ -361,7 +346,6 @@
         their.version = "0.6";
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 2;
-        n1.version = 1;
-        n1.visible = false;
+        n1.setOsmId(2,1);
+        n1.setVisible(false);
         their.addPrimitive(n1);
 
@@ -387,15 +371,12 @@
 
         Calendar cal = GregorianCalendar.getInstance();
-        User myUser = User.get("my");
-        myUser.uid = "1111";
-
-        User theirUser = User.get("their");
-        myUser.uid = "222";
-
-        DataSet my = new DataSet();
-        my.version = "0.6";
-        Node n = new Node(new LatLon(0,0));
-        n.id = 0;
-        n.version = -1;
+        User myUser = User.createOsmUser(1111, "my");
+
+        User theirUser = User.createOsmUser(222, "their");
+
+        DataSet my = new DataSet();
+        my.version = "0.6";
+        Node n = new Node();
+        n.setCoor(new LatLon(0,0));
         n.put("key1", "value1");
         n.user = myUser;
@@ -406,7 +387,6 @@
         DataSet their = new DataSet();
         their.version = "0.6";
-        Node n1 = new Node(new LatLon(0,0));
-        n1.id = 0;
-        n1.version = -1;
+        Node n1 = new Node();
+        n1.setCoor(new LatLon(0,0));
         n1.put("key1", "value1");
         cal.add(Calendar.HOUR, 1);
@@ -438,7 +418,7 @@
         DataSet my = new DataSet();
         my.version = "0.6";
-        Node n = new Node(new LatLon(0,0));
-        n.id = 1;
-        n.version = 1;
+        Node n = new Node();
+        n.setCoor(new LatLon(0,0));
+        n.setOsmId(1,1);
         n.incomplete = true;
         my.addPrimitive(n);
@@ -446,7 +426,7 @@
         DataSet their = new DataSet();
         their.version = "0.6";
-        Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        Node n1 = new Node();
+        n1.setCoor(new LatLon(0,0));
+        n1.setOsmId(1,1);
         n1.put("key1", "value1");
         Date timestamp = new Date();
@@ -479,17 +459,18 @@
         my.version = "0.6";
 
-        Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        Node n1 = new Node();
+        n1.setCoor(new LatLon(0,0));
+        n1.setOsmId(1,1);
         my.addPrimitive(n1);
 
-        Node n2 = new Node(new LatLon(1,1));
-        n2.id = 2;
-        n2.version = 1;
+
+        Node n2 = new Node();
+        n2.setCoor(new LatLon(0,0));
+        n2.setOsmId(2,1);
+
         my.addPrimitive(n2);
 
         Way myWay = new Way();
-        myWay.id = 3;
-        myWay.version = 1;
+        myWay.setOsmId(3,1);
         myWay.put("key1", "value1");
         myWay.addNode(n1);
@@ -501,16 +482,13 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 1;
-        n3.version = 1;
+        n3.setOsmId(1,1);
         their.addPrimitive(n3);
 
         Node n4 = new Node(new LatLon(1,1));
-        n4.id = 2;
-        n4.version = 1;
+        n4.setOsmId(2,1);
         their.addPrimitive(n4);
 
         Way theirWay = new Way();
-        theirWay.id = 3;
-        theirWay.version = 2;
+        theirWay.setOsmId(3,2);
         theirWay.put("key1", "value1");
         theirWay.put("key2", "value2");
@@ -527,9 +505,9 @@
         assertEquals("value1",merged.get("key1"));
         assertEquals("value2",merged.get("key2"));
-        assertEquals(3,merged.id);
-        assertEquals(2,merged.version);
+        assertEquals(3,merged.getId());
+        assertEquals(2,merged.getVersion());
         assertEquals(2,merged.getNodesCount());
-        assertEquals(1,merged.getNode(0).id);
-        assertEquals(2,merged.getNode(1).id);
+        assertEquals(1,merged.getNode(0).getId());
+        assertEquals(2,merged.getNode(1).getId());
 
     }
@@ -549,16 +527,13 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        n1.setOsmId(1,1);
         my.addPrimitive(n1);
 
         Node n2 = new Node(new LatLon(1,1));
-        n2.id = 2;
-        n2.version = 1;
+        n2.setOsmId(2,1);
         my.addPrimitive(n2);
 
         Way myWay = new Way();
-        myWay.id = 3;
-        myWay.version = 1;
+        myWay.setOsmId(3,1);
         myWay.addNode(n1);
         myWay.addNode(n2);
@@ -569,11 +544,10 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 1;
-        n3.version = 1;
+        n3.setOsmId(1,1);
         their.addPrimitive(n3);
 
         Node n5 = new Node(new LatLon(1,1));
-        n5.id = 4;
-        n5.version = 1;
+        n5.setOsmId(4,1);
+
         their.addPrimitive(n5);
 
@@ -581,6 +555,5 @@
 
         Node n4 = new Node(new LatLon(2,2));
-        n4.id = 2;
-        n4.version = 2;
+        n4.setOsmId(2,2);
         n4.put("key1", "value1");
         their.addPrimitive(n4);
@@ -588,6 +561,5 @@
 
         Way theirWay = new Way();
-        theirWay.id = 3;
-        theirWay.version = 2;
+        theirWay.setOsmId(3,2);
         theirWay.addNode(n3);
         theirWay.addNode(n5); // insert a node
@@ -601,10 +573,10 @@
         Way merged = (Way)my.getPrimitiveById(3);
         assertEquals(0,visitor.getConflicts().size());
-        assertEquals(3,merged.id);
-        assertEquals(2,merged.version);
+        assertEquals(3,merged.getId());
+        assertEquals(2,merged.getVersion());
         assertEquals(3,merged.getNodesCount());
-        assertEquals(1,merged.getNode(0).id);
-        assertEquals(4,merged.getNode(1).id);
-        assertEquals(2,merged.getNode(2).id);
+        assertEquals(1,merged.getNode(0).getId());
+        assertEquals(4,merged.getNode(1).getId());
+        assertEquals(2,merged.getNode(2).getId());
         assertEquals("value1",merged.getNode(2).get("key1"));
     }
@@ -623,19 +595,17 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        n1.setOsmId(1,1);
         my.addPrimitive(n1);
 
         Node n2 = new Node(new LatLon(1,1));
-        n2.id = 2;
-        n2.version = 1;
+        n2.setOsmId(2,1);
         my.addPrimitive(n2);
 
         Way myWay = new Way();
-        myWay.id = 3;
-        myWay.version = 1;
+        myWay.setOsmId(3,1);
+
         myWay.addNode(n1);
         myWay.addNode(n2);
-        myWay.modified = true;
+        myWay.setModified(true);
         myWay.put("key1", "value1");
         my.addPrimitive(myWay);
@@ -645,11 +615,9 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 1;
-        n3.version = 1;
+        n3.setOsmId(1,1);
         their.addPrimitive(n3);
 
         Node n5 = new Node(new LatLon(1,1));
-        n5.id = 4;
-        n5.version = 1;
+        n5.setOsmId(4,1);
         their.addPrimitive(n5);
 
@@ -657,6 +625,5 @@
 
         Node n4 = new Node(new LatLon(2,2));
-        n4.id = 2;
-        n4.version = 2;
+        n4.setOsmId(2,1);
         n4.put("key1", "value1");
         their.addPrimitive(n4);
@@ -664,6 +631,6 @@
 
         Way theirWay = new Way();
-        theirWay.id = 3;
-        theirWay.version = 2;
+        theirWay.setOsmId(3,2);
+
         theirWay.addNode(n3);
         theirWay.addNode(n5); // insert a node
@@ -677,9 +644,9 @@
         Way merged = (Way)my.getPrimitiveById(3);
         assertEquals(1,visitor.getConflicts().size());
-        assertEquals(3,merged.id);
-        assertEquals(1,merged.version);
+        assertEquals(3,merged.getId());
+        assertEquals(1,merged.getVersion());
         assertEquals(2,merged.getNodesCount());
-        assertEquals(1,merged.getNode(0).id);
-        assertEquals(2,merged.getNode(1).id);
+        assertEquals(1,merged.getNode(0).getId());
+        assertEquals(2,merged.getNode(1).getId());
         assertEquals("value1",merged.get("key1"));
     }
@@ -699,16 +666,13 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        n1.setOsmId(1,1);
         my.addPrimitive(n1);
 
         Node n2 = new Node(new LatLon(1,1));
-        n2.id = 2;
-        n2.version = 1;
+        n2.setOsmId(2,1);
         my.addPrimitive(n2);
 
         Way myWay = new Way();
-        myWay.id = 3;
-        myWay.version = 1;
+        myWay.setOsmId(3,1);
         myWay.addNode(n1);
         myWay.addNode(n2);
@@ -719,7 +683,6 @@
 
         Way theirWay = new Way();
-        theirWay.id = 3;
-        theirWay.version = 2;
-        theirWay.visible = false;
+        theirWay.setOsmId(3,2);
+        theirWay.setVisible(false);
         their.addPrimitive(theirWay);
 
@@ -749,16 +712,12 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
+        n1.setOsmId(1,1);
         my.addPrimitive(n1);
 
         Node n2 = new Node(new LatLon(1,1));
-        n2.id = 2;
-        n2.version = 1;
+        n2.setOsmId(2,1);
         my.addPrimitive(n2);
 
         Way myWay = new Way();
-        myWay.id = 0;
-        myWay.version = -1;
         myWay.addNode(n1);
         myWay.addNode(n2);
@@ -769,20 +728,15 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 1;
-        n3.version = 1;
+        n3.setOsmId(1,1);
         their.addPrimitive(n3);
 
         Node n4 = new Node(new LatLon(1,1));
-        n4.id = 2;
-        n4.version = 1;
+        n4.setOsmId(2,1);
         their.addPrimitive(n4);
 
         Way theirWay = new Way();
-        theirWay.id = 0;
-        theirWay.version = -1;
         theirWay.addNode(n3);
         theirWay.addNode(n4);
-        theirWay.user = User.get("their");
-        theirWay.user.uid = "1111";
+        theirWay.user = User.createOsmUser(1111, "their");
         theirWay.setTimestamp(new Date());
         their.addPrimitive(theirWay);
@@ -792,7 +746,7 @@
 
         assertEquals(0,visitor.getConflicts().size());
-        assertEquals("their", myWay.user.name);
-        assertEquals("1111", myWay.user.uid);
-        assertEquals("1111", myWay.user.uid);
+        assertEquals("their", myWay.user.getName());
+        assertEquals(1111, myWay.user.getId());
+        assertEquals(1111, myWay.user.getId());
         assertEquals(theirWay.getTimestamp(), myWay.getTimestamp());
     }
@@ -811,16 +765,10 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 0;
-        n1.version = -1;
         my.addPrimitive(n1);
 
         Node n2 = new Node(new LatLon(1,1));
-        n2.id = 0;
-        n2.version = -1;
         my.addPrimitive(n2);
 
         Way myWay = new Way();
-        myWay.id = 0;
-        myWay.version = -1;
         myWay.addNode(n1);
         myWay.addNode(n2);
@@ -831,20 +779,13 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 0;
-        n3.version = -1;
         their.addPrimitive(n3);
 
         Node n4 = new Node(new LatLon(1,1));
-        n4.id = 0;
-        n4.version = -1;
         their.addPrimitive(n4);
 
         Way theirWay = new Way();
-        theirWay.id = 0;
-        theirWay.version = -1;
         theirWay.addNode(n3);
         theirWay.addNode(n4);
-        theirWay.user = User.get("their");
-        theirWay.user.uid = "1111";
+        theirWay.user = User.createOsmUser(1111, "their");
         theirWay.setTimestamp(new Date());
         their.addPrimitive(theirWay);
@@ -854,7 +795,7 @@
 
         assertEquals(0,visitor.getConflicts().size());
-        assertEquals("their", myWay.user.name);
-        assertEquals("1111", myWay.user.uid);
-        assertEquals("1111", myWay.user.uid);
+        assertEquals("their", myWay.user.getName());
+        assertEquals(1111, myWay.user.getId());
+        assertEquals(1111, myWay.user.getId());
         assertEquals(theirWay.getTimestamp(), myWay.getTimestamp());
     }
@@ -876,7 +817,6 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
-        n1.delete(true);
+        n1.setOsmId(1,1);
+        n1.setDeleted(true);
         my.addPrimitive(n1);
 
@@ -885,27 +825,22 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 1;
-        n3.version = 1;
+        n3.setOsmId(1,1);
         their.addPrimitive(n3);
 
         Node n4 = new Node(new LatLon(1,1));
-        n4.id = 2;
-        n4.version = 1;
+        n4.setOsmId(2,1);
         their.addPrimitive(n4);
 
         Node n5 = new Node(new LatLon(2,2));
-        n5.id = 3;
-        n5.version = 1;
+        n5.setOsmId(3,1);
         their.addPrimitive(n5);
 
 
         Way theirWay = new Way();
-        theirWay.id = 4;
-        theirWay.version = 1;
+        theirWay.setOsmId(4,1);
         theirWay.addNode(n3);
         theirWay.addNode(n4);
         theirWay.addNode(n5);
-        theirWay.user = User.get("their");
-        theirWay.user.uid = "1111";
+        theirWay.user = User.createOsmUser(1111, "their");
         theirWay.setTimestamp(new Date());
         their.addPrimitive(theirWay);
@@ -938,7 +873,6 @@
 
         Node n1 = new Node(new LatLon(0,0));
-        n1.id = 1;
-        n1.version = 1;
-        n1.delete(true);
+        n1.setOsmId(1,1);
+        n1.setDeleted(true);
         my.addPrimitive(n1);
 
@@ -947,22 +881,19 @@
 
         Node n3 = new Node(new LatLon(0,0));
-        n3.id = 1;
-        n3.version = 1;
+        n3.setOsmId(1,1);
         their.addPrimitive(n3);
 
         Node n4 = new Node(new LatLon(1,1));
-        n4.id = 2;
-        n4.version = 1;
+        n4.setOsmId(2,1);
         their.addPrimitive(n4);
 
         Node n5 = new Node(new LatLon(2,2));
-        n5.id = 3;
-        n5.version = 1;
+        n5.setOsmId(3,1);
         their.addPrimitive(n5);
 
 
         Relation theirRelation = new Relation();
-        theirRelation.id = 4;
-        theirRelation.version = 1;
+        theirRelation.setOsmId(4,1);
+
         theirRelation.addMember(new RelationMember("", n3));
         theirRelation.addMember(new RelationMember("", n4));
@@ -993,11 +924,7 @@
 
         Node n1 = new Node(1);
-        n1.version = 1;
-        n1.incomplete = true;
         their.addPrimitive(n1);
 
         Node n2 = new Node(2);
-        n2.version = 1;
-        n2.incomplete = true;
         their.addPrimitive(n2);
 
@@ -1043,14 +970,13 @@
         their.version = "0.6";
 
+        // an incomplete node
         Node n1 = new Node(1);
-        n1.version = 1;
-        n1.incomplete = true;
-        their.addPrimitive(n1);
-
+        their.addPrimitive(n1);
+
+        // another incomplete node
         Node n2 = new Node(2);
-        n2.version = 1;
-        n2.incomplete = true;
         their.addPrimitive(n2);
 
+        // an incomplete way with two incomplete nodes
         Way w3 = new Way(3);
         w3.incomplete = true;
@@ -1062,13 +988,9 @@
 
         Node n4 = new Node(new LatLon(0,0));
-        n4.id = 1;
-        n4.version = 1;
-        n4.incomplete = false;
+        n4.setOsmId(1,1);
         my.addPrimitive(n4);
 
         Node n5 = new Node(new LatLon(1,1));
-        n5.id = 2;
-        n5.version = 1;
-        n5.incomplete = false;
+        n5.setOsmId(2,1);
         my.addPrimitive(n5);
 
