Index: /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 7149)
+++ /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 7150)
@@ -14,5 +14,4 @@
 import java.nio.charset.StandardCharsets;
 import java.text.MessageFormat;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
@@ -24,9 +23,10 @@
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
+import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
 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.Relation;
@@ -128,13 +128,12 @@
      * @throws OsmTransferException
      */
-    static public void createDataSetOnServer(DataSet ds) throws OsmTransferException {
+    static public void createDataSetOnServer(APIDataSet ds) throws OsmTransferException, CyclicUploadDependencyException {
         logger.info("creating data set on the server ...");
-        ArrayList<OsmPrimitive> primitives = new ArrayList<>();
-        primitives.addAll(ds.getNodes());
-        primitives.addAll(ds.getWays());
-        primitives.addAll(ds.getRelations());
+        ds.adjustRelationUploadOrder();
         OsmServerWriter writer = new OsmServerWriter();
         Changeset cs  = new Changeset();
-        writer.uploadOsm(new UploadStrategySpecification().setStrategy(UploadStrategy.SINGLE_REQUEST_STRATEGY), primitives, cs, NullProgressMonitor.INSTANCE);
+        writer.uploadOsm(
+                new UploadStrategySpecification().setStrategy(UploadStrategy.SINGLE_REQUEST_STRATEGY),
+                ds.getPrimitives(), cs, NullProgressMonitor.INSTANCE);
         OsmApi.getOsmApi().closeChangeset(cs, NullProgressMonitor.INSTANCE);
     }
@@ -143,5 +142,5 @@
 
     @BeforeClass
-    public static void init() throws OsmTransferException {
+    public static void init() throws OsmTransferException, CyclicUploadDependencyException {
         logger.info("initializing ...");
 
@@ -169,5 +168,5 @@
         testDataSet = buildTestDataSet();
         logger.info("uploading test data set ...");
-        createDataSetOnServer(testDataSet);
+        createDataSetOnServer(new APIDataSet(testDataSet));
 
         try (
@@ -212,4 +211,5 @@
         reader.setReadFull(false);
         DataSet referers = reader.parseOsm(NullProgressMonitor.INSTANCE);
+        printNumberOfPrimitives(referers);
         assertEquals(10, referers.getNodes().size());
         assertEquals(1, referers.getWays().size());
@@ -221,4 +221,10 @@
     }
 
+    private void printNumberOfPrimitives(DataSet referers) {
+        System.out.println("#nodes=" + referers.getNodes().size() +
+                " #ways=" + referers.getWays().size() +
+                " #relations=" + referers.getRelations().size());
+    }
+
     @Test
     public void testBackrefrenceForNode_Full() throws OsmTransferException {
@@ -231,4 +237,5 @@
         reader.setReadFull(true);
         DataSet referers = reader.parseOsm(NullProgressMonitor.INSTANCE);
+        printNumberOfPrimitives(referers);
         assertEquals(10, referers.getNodes().size());
         assertEquals(1, referers.getWays().size());
@@ -251,4 +258,5 @@
         reader.setReadFull(false);
         DataSet referers = reader.parseOsm(NullProgressMonitor.INSTANCE);
+        printNumberOfPrimitives(referers);
         assertEquals(0, referers.getNodes().size()); // no nodes loaded
         assertEquals(6, referers.getWays().size());  // 6 ways referred by two relations
@@ -310,4 +318,5 @@
         reader.setReadFull(false);
         DataSet referers = reader.parseOsm(NullProgressMonitor.INSTANCE);
+        printNumberOfPrimitives(referers);
 
         Set<Long> referringRelationsIds = new HashSet<>();
