Index: trunk/src/org/openstreetmap/josm/actions/upload/CyclicUploadDependencyException.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/CyclicUploadDependencyException.java	(revision 12672)
+++ 	(revision )
@@ -1,61 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions.upload;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Stack;
-
-import org.openstreetmap.josm.data.osm.Relation;
-
-/**
- * This is an exception that is thrown if the user attempts to upload a list of relations with a cyclic dependency in them
- */
-public class CyclicUploadDependencyException extends Exception {
-    private final List<Relation> cycle;
-
-    /**
-     * Creates a new {@link CyclicUploadDependencyException}
-     * @param cycle The cycle that was found
-     */
-    public CyclicUploadDependencyException(Stack<Relation> cycle) {
-        this.cycle = new ArrayList<>(cycle);
-    }
-
-    protected String formatRelation(Relation r) {
-        StringBuilder sb = new StringBuilder();
-        if (r.getName() != null) {
-            sb.append('\'').append(r.getName()).append('\'');
-        } else if (!r.isNew()) {
-            sb.append(r.getId());
-        } else {
-            sb.append("relation@").append(r.hashCode());
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String getMessage() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(tr("Cyclic dependency between relations:"))
-          .append('[');
-        for (int i = 0; i < cycle.size(); i++) {
-            if (i > 0) {
-                sb.append(',');
-            }
-            sb.append(formatRelation(cycle.get(i)));
-        }
-        sb.append(']');
-        return sb.toString();
-    }
-
-    /**
-     * Gets the cycle
-     * @return The cycle that was detected
-     */
-    public List<Relation> getCyclicUploadDependency() {
-        return Collections.unmodifiableList(cycle);
-    }
-}
Index: trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java	(revision 12672)
+++ trunk/src/org/openstreetmap/josm/actions/upload/RelationUploadOrderHook.java	(revision 12673)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.ExtendedDialog;
Index: trunk/src/org/openstreetmap/josm/data/APIDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 12672)
+++ trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 12673)
@@ -15,6 +15,6 @@
 import java.util.stream.Stream;
 
-import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.IPrimitive;
Index: trunk/src/org/openstreetmap/josm/data/osm/CyclicUploadDependencyException.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/CyclicUploadDependencyException.java	(revision 12673)
+++ trunk/src/org/openstreetmap/josm/data/osm/CyclicUploadDependencyException.java	(revision 12673)
@@ -0,0 +1,60 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Stack;
+
+/**
+ * This is an exception that is thrown if the user attempts to upload a list of relations with a cyclic dependency in them
+ * @since 12673 (moved from {@code action.upload} package)
+ */
+public class CyclicUploadDependencyException extends Exception {
+    private final List<Relation> cycle;
+
+    /**
+     * Creates a new {@link CyclicUploadDependencyException}
+     * @param cycle The cycle that was found
+     */
+    public CyclicUploadDependencyException(Stack<Relation> cycle) {
+        this.cycle = new ArrayList<>(cycle);
+    }
+
+    protected String formatRelation(Relation r) {
+        StringBuilder sb = new StringBuilder();
+        if (r.getName() != null) {
+            sb.append('\'').append(r.getName()).append('\'');
+        } else if (!r.isNew()) {
+            sb.append(r.getId());
+        } else {
+            sb.append("relation@").append(r.hashCode());
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public String getMessage() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(tr("Cyclic dependency between relations:"))
+          .append('[');
+        for (int i = 0; i < cycle.size(); i++) {
+            if (i > 0) {
+                sb.append(',');
+            }
+            sb.append(formatRelation(cycle.get(i)));
+        }
+        sb.append(']');
+        return sb.toString();
+    }
+
+    /**
+     * Gets the cycle
+     * @return The cycle that was detected
+     */
+    public List<Relation> getCyclicUploadDependency() {
+        return Collections.unmodifiableList(cycle);
+    }
+}
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java	(revision 12672)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java	(revision 12673)
@@ -9,7 +9,7 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.IPrimitive;
