Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/PermissionPrefWithDefault.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/PermissionPrefWithDefault.java	(revision 19424)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/PermissionPrefWithDefault.java	(revision 19425)
@@ -27,4 +27,7 @@
     public static final PermissionPrefWithDefault IMPORT_DATA =
             new PermissionPrefWithDefault("remotecontrol.permission.import", true, tr("Import data from URL"));
+    /** Export data from JOSM */
+    public static final PermissionPrefWithDefault EXPORT_DATA =
+            new PermissionPrefWithDefault("remotecontrol.permission.export", false, tr("Export data from JOSM"));
     /** Open local files */
     public static final PermissionPrefWithDefault OPEN_FILES =
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java	(revision 19424)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java	(revision 19425)
@@ -38,4 +38,5 @@
 import org.openstreetmap.josm.io.remotecontrol.handler.ImageryHandler;
 import org.openstreetmap.josm.io.remotecontrol.handler.ImportHandler;
+import org.openstreetmap.josm.io.remotecontrol.handler.ExportHandler;
 import org.openstreetmap.josm.io.remotecontrol.handler.LoadAndZoomHandler;
 import org.openstreetmap.josm.io.remotecontrol.handler.LoadDataHandler;
@@ -173,4 +174,5 @@
             addRequestHandlerClass(LoadDataHandler.command, LoadDataHandler.class, true);
             addRequestHandlerClass(ImportHandler.command, ImportHandler.class, true);
+            addRequestHandlerClass(ExportHandler.command, ExportHandler.class, true);
             addRequestHandlerClass(OpenFileHandler.command, OpenFileHandler.class, true);
             PermissionPrefWithDefault.addPermissionPref(PermissionPrefWithDefault.ALLOW_WEB_RESOURCES);
@@ -333,5 +335,5 @@
                 handler.handle();
                 sendHeader(out, "200 OK", handler.getContentType(), false);
-                out.write("Content-length: " + handler.getContent().length()
+                out.write("Content-length: " + handler.getContent().getBytes().length
                         + "\r\n");
                 out.write("\r\n");
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ExportHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ExportHandler.java	(revision 19425)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ExportHandler.java	(revision 19425)
@@ -0,0 +1,80 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.io.remotecontrol.handler;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.OsmWriter;
+import org.openstreetmap.josm.io.OsmWriterFactory;
+import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+
+/**
+ * Export map data into .osm format
+ * For instance, {@code /export]}.
+ * @since 19425
+ */
+public class ExportHandler extends RequestHandler {
+
+    /**
+     * The remote control command name used to export data from JOSM.
+     */
+    public static final String command = "export";
+
+    @Override
+    public String[] getMandatoryParams() {
+        return new String[]{};
+    }
+
+    @Override
+    public String[] getOptionalParams() {
+        return new String[] {};
+    }
+
+    @Override
+    public String getUsage() {
+        return "export data from JOSM";
+    }
+
+    @Override
+    public String[] getUsageExamples() {
+        return new String[] {"/export"};
+    }
+
+    @Override
+    protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
+        Layer layer = MainApplication.getLayerManager().getActiveLayer();
+        if (!(layer instanceof OsmDataLayer)) {
+            content = "";
+            return;
+        }
+        OsmDataLayer osmLayer = (OsmDataLayer) layer;
+        StringWriter sw = new StringWriter();
+        OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(sw), false, osmLayer.data.getVersion());
+        osmLayer.data.getReadLock().lock();
+        try {
+            w.write(osmLayer.data);
+        } finally {
+            osmLayer.data.getReadLock().unlock();
+        }
+        contentType = "application/xml";
+        content = sw.toString();
+    }
+
+    @Override
+    public String getPermissionMessage() {
+        return tr("Remote Control has been asked to export data from JOSM");
+    }
+
+    @Override
+    public PermissionPrefWithDefault getPermissionPref() {
+        return PermissionPrefWithDefault.EXPORT_DATA;
+    }
+
+    @Override
+    protected void validateRequest() throws RequestHandlerBadRequestException {}
+}
