Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java	(revision 34660)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java	(revision 34661)
@@ -61,10 +61,10 @@
     @Override
     public String[] getPatterns() {
-        String pattern = "";
+        StringBuilder pattern = new StringBuilder();
         for (String ext : NetworkReader.FILE_AND_ARCHIVE_READERS.keySet()) {
-            if (!pattern.isEmpty()) {
-                pattern += "|";
+            if (pattern.length() > 0) {
+                pattern.append('|');
             }
-            pattern += "."+ext;
+            pattern.append('.').append(ext);
         }
         return new String[]{".*(" + pattern + ")"};
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 34660)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 34661)
@@ -160,5 +160,5 @@
     }
 
-    protected String getOverpassApiQueries(String bbox, String ... conditions) {
+    protected String getOverpassApiQueries(String bbox, String... conditions) {
         String[] mpconditions = new String[conditions.length+1];
         mpconditions[0] = OverpassApi.hasKey("type", "multipolygon");
@@ -177,8 +177,8 @@
     @Override
     protected String getOverpassApiRequest(String bbox) {
-        String result = "";
+        StringBuilder result = new StringBuilder();
         if (this.relevantUnion) {
             for (Tag tag : this.relevantTags) {
-                result += getOverpassApiQueries(bbox, OverpassApi.hasKey(tag.getKey(), tag.getValue()));
+                result.append(getOverpassApiQueries(bbox, OverpassApi.hasKey(tag.getKey(), tag.getValue())));
             }
             result = OverpassApi.union(result);
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OverpassApi.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OverpassApi.java	(revision 34660)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OverpassApi.java	(revision 34661)
@@ -43,26 +43,26 @@
     }
 
-    public static final String union(String... queries) {
-        String result = "<union>\n";
-        for (String query : queries) {
+    public static final StringBuilder union(CharSequence... queries) {
+        StringBuilder result = new StringBuilder("<union>\n");
+        for (CharSequence query : queries) {
             if (query != null) {
-                result += query + "\n";
+                result.append(query).append('\n');
             }
         }
-        result += "</union>";
+        result.append("</union>");
         return result;
     }
 
-    public static final String query(String bbox, OaQueryType type, String... conditions) {
-        String result = "<query type=\""+type+"\" >\n";
+    public static final StringBuilder query(String bbox, OaQueryType type, CharSequence... conditions) {
+        StringBuilder result = new StringBuilder("<query type=\"").append(type).append("\" >\n");
         if (bbox != null) {
-            result += "<bbox-query "+bbox+"/>\n";
+            result.append("<bbox-query ").append(bbox).append("/>\n");
         }
-        for (String condition : conditions) {
+        for (CharSequence condition : conditions) {
             if (condition != null) {
-                result += condition + "\n";
+                result.append(condition).append('\n');
             }
         }
-        result += "</query>";
+        result.append("</query>");
         return result;
     }
