Index: /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 9465)
+++ /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 9466)
@@ -227,4 +227,11 @@
                 return exporter.filter;
         }
+        // if extension did not match defaultExtension of any exporter,
+        // scan all supported extensions
+        File file = new File("file." + extension);
+        for (FileExporter exporter : exporters) {
+            if (exporter.filter.accept(file))
+                return exporter.filter;
+        }
         return new AllFormatsImporter().filter;
     }
@@ -242,4 +249,5 @@
     public static void applyChoosableImportFileFilters(AbstractFileChooser fileChooser, String extension, boolean allTypes) {
         for (ExtensionFileFilter filter: getImportExtensionFileFilters()) {
+
             if (allTypes || filter.acceptName("file."+extension)) {
                 fileChooser.addChoosableFileFilter(filter);
Index: /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 9465)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 9466)
@@ -169,8 +169,8 @@
             // No filefilter accepts current filename, add default extension
             String fn = file.getPath();
-            if (ff instanceof ExtensionFileFilter) {
+            if (extension != null) {
+                fn += '.' + extension;
+            } else if (ff instanceof ExtensionFileFilter) {
                 fn += '.' + ((ExtensionFileFilter) ff).getDefaultExtension();
-            } else if (extension != null) {
-                fn += '.' + extension;
             }
             file = new File(fn);
