Index: /applications/editors/josm/oldplugins/public_transport_layer/src/ptl/DistanceBetweenStops.java
===================================================================
--- /applications/editors/josm/oldplugins/public_transport_layer/src/ptl/DistanceBetweenStops.java	(revision 36121)
+++ /applications/editors/josm/oldplugins/public_transport_layer/src/ptl/DistanceBetweenStops.java	(revision 36122)
@@ -14,5 +14,4 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
-import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.Node;
@@ -46,7 +45,7 @@
         final List<Node> routeNodes = new ArrayList<>();
         for (final RelationMember member : route.getMembers()) {
-            if (member.hasRole("stop", "stop_exit_only", "stop_entry_only") && OsmPrimitiveType.NODE.equals(member.getType())) {
+            if (member.hasRole("stop", "stop_exit_only", "stop_entry_only") && OsmPrimitiveType.NODE == member.getType()) {
                 stopNodes.add(member.getNode());
-            } else if (member.hasRole("") && OsmPrimitiveType.WAY.equals(member.getType())) {
+            } else if (member.hasRole("") && OsmPrimitiveType.WAY == member.getType()) {
                 routeSegments.add(member);
             }
@@ -123,10 +122,6 @@
         Node lastN = null;
         for (Node n : nodes) {
-            if (lastN != null) {
-                LatLon lastNcoor = lastN.getCoor();
-                LatLon coor = n.getCoor();
-                if (lastNcoor != null && coor != null) {
-                    length += coor.greatCircleDistance(lastNcoor);
-                }
+            if (lastN != null && n != null && lastN.isLatLonKnown() && n.isLatLonKnown()) {
+                length += n.greatCircleDistance(lastN);
             }
             lastN = n;
@@ -153,17 +148,14 @@
         }
 
-        new ExtendedDialog(MainApplication.getMainFrame(), getValue(NAME).toString(), new String[]{tr("Close")}) {
-            {
-                setButtonIcons(new String[]{"ok.png"});
-                final JosmTextArea jte = new JosmTextArea();
-                jte.setFont(GuiHelper.getMonospacedFont(jte));
-                jte.setEditable(false);
-                jte.append(sb.toString());
-                jte.setSelectionStart(0);
-                jte.setSelectionEnd(0);
-                setContent(jte);
-            }
-
-        }.showDialog();
+        ExtendedDialog extendedDialog = new ExtendedDialog(MainApplication.getMainFrame(), getValue(NAME).toString(), tr("Close"));
+        extendedDialog.setButtonIcons("ok");
+        final JosmTextArea jte = new JosmTextArea();
+        jte.setFont(GuiHelper.getMonospacedFont(jte));
+        jte.setEditable(false);
+        jte.append(sb.toString());
+        jte.setSelectionStart(0);
+        jte.setSelectionEnd(0);
+        extendedDialog.setContent(jte);
+        extendedDialog.showDialog();
     }
 }
Index: /applications/editors/josm/oldplugins/public_transport_layer/src/ptl/PublicTransportLayer.java
===================================================================
--- /applications/editors/josm/oldplugins/public_transport_layer/src/ptl/PublicTransportLayer.java	(revision 36121)
+++ /applications/editors/josm/oldplugins/public_transport_layer/src/ptl/PublicTransportLayer.java	(revision 36122)
@@ -38,5 +38,4 @@
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -71,5 +70,5 @@
             Node previousNode = null;
             for (final RelationMember member : relation.getMembers()) {
-                if (OsmPrimitiveType.NODE.equals(member.getType()) && "stop".equals(member.getRole())) {
+                if (OsmPrimitiveType.NODE == member.getType() && "stop".equals(member.getRole())) {
                     way.addNode(member.getNode());
                     if (previousNode != null) {
@@ -83,6 +82,6 @@
             try {
                 color = ColorHelper.html2color(relation.get("colour"));
-            } catch (RuntimeException ignore) {
-                Logging.trace(ignore);
+            } catch (RuntimeException runtimeException) {
+                Logging.trace(runtimeException);
             }
             renderer.drawWay(way, color, new BasicStroke(1), null, null, 0, doDrawArrows, false, false, false);
@@ -103,5 +102,5 @@
 
         for (Pair<Node, Node> nodePair : segmentRefs.keySet()) {
-            final String label = Utils.join(tr(", "), new TreeSet<>(segmentRefs.get(nodePair)));
+            final String label = String.join(", ", new TreeSet<>(segmentRefs.get(nodePair)));
             c.put(StyleKeys.TEXT, label);
             final TextLabel text = TextLabel.create(env, color, false);
Index: /applications/editors/josm/plugins/MicrosoftStreetside/gradle.properties
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/gradle.properties	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/gradle.properties	(revision 36122)
@@ -8,10 +8,10 @@
 # Minimum required JOSM version to run this plugin, choose the lowest version possible that is compatible.
 # You can check if the plugin compiles against this version by executing `./gradlew compileJava_minJosm`.
-plugin.main.version=18494
+plugin.main.version=18723
 #plugin.version=
 # Version of JOSM against which the plugin is compiled
 # Please check, if the specified version is available for download from https://josm.openstreetmap.de/download/ .
 # If not, choose the next higher number that is available, or the gradle build will break.
-plugin.compile.version=18494
+plugin.compile.version=18724
 plugin.requires=apache-commons;apache-http;jackson;javafx;log4j;utilsplugin2
 
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/oauth/OAuthUtils.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/oauth/OAuthUtils.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/oauth/OAuthUtils.java	(revision 36122)
@@ -8,8 +8,8 @@
 import java.net.URL;
 
-import javax.json.Json;
-import javax.json.JsonException;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
+import jakarta.json.Json;
+import jakarta.json.JsonException;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
 
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoder.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoder.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoder.java	(revision 36122)
@@ -9,16 +9,15 @@
 import java.util.function.Function;
 
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonValue;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonValue;
 
-import org.apache.log4j.Logger;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.tools.I18n;
+import org.openstreetmap.josm.tools.Logging;
 
 public final class JsonDecoder {
-
-  final static Logger logger = Logger.getLogger(JsonDecoder.class);
+  private static final double[] EMPTY_DOUBLE = new double[0];
 
   private JsonDecoder() {
@@ -65,5 +64,5 @@
   static LatLon decodeLatLon(final JsonArray json) {
     final double[] result = decodeDoublePair(json);
-    if (result != null) {
+    if (result.length == 2) {
       return new LatLon(result[1], result[0]);
     }
@@ -77,5 +76,4 @@
    *         if the parameter was not a {@link JsonArray} of exactly size 2 containing two {@link JsonNumber}s
    */
-  @SuppressWarnings("PMD.ReturnEmptyArrayRatherThanNull")
   static double[] decodeDoublePair(final JsonArray json) {
     if (
@@ -87,5 +85,5 @@
       return new double[]{json.getJsonNumber(0).doubleValue(), json.getJsonNumber(1).doubleValue()};
     }
-    return null;
+    return EMPTY_DOUBLE;
   }
 
@@ -96,5 +94,5 @@
    * @return the point in time as a {@link Long} value representing the UNIX epoch time, or <code>null</code> if the
    *   parameter does not match the required format (this also triggers a warning via
-   *   {@link Logger}, or the parameter is <code>null</code>).
+   *   {@link Logging}, or the parameter is <code>null</code>).
    */
   static Long decodeTimestamp(final String timestamp) {
@@ -104,5 +102,5 @@
       } catch (ParseException e) {
         StackTraceElement calledBy = e.getStackTrace()[Math.min(e.getStackTrace().length - 1, 2)];
-        logger.warn(I18n.tr(String.format(
+        Logging.warn(I18n.tr(String.format(
           "Could not decode time from the timestamp `%s` (called by %s.%s:%d)",
           timestamp, calledBy.getClassName(), calledBy.getMethodName(), calledBy.getLineNumber()
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetectionDecoder.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetectionDecoder.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetectionDecoder.java	(revision 36122)
@@ -5,12 +5,12 @@
 import java.awt.geom.Path2D;
 
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonValue;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonValue;
 
-import org.apache.log4j.Logger;
 import org.openstreetmap.josm.plugins.streetside.model.ImageDetection;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL.APIv3;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -19,6 +19,4 @@
  */
 public final class JsonImageDetectionDecoder {
-
-  final static Logger logger = Logger.getLogger(JsonImageDetectionDecoder.class);
 
   private JsonImageDetectionDecoder() {
@@ -50,5 +48,5 @@
     if (json instanceof JsonObject) {
       if (!"Polygon".equals(((JsonObject) json).getString("type", null))) {
-        logger.warn(
+        Logging.warn(
           String.format("Image detections using shapes with type=%s are currently not supported!",
           ((JsonObject) json).getString("type", "‹no type set›"))
@@ -93,7 +91,7 @@
     json.forEach(val -> {
       double[] coord = JsonDecoder.decodeDoublePair(val instanceof JsonArray ? (JsonArray) val : null);
-      if (shape.getCurrentPoint() == null && coord != null) {
+      if (shape.getCurrentPoint() == null && coord.length == 2) {
         shape.moveTo(coord[0], coord[1]);
-      } else if (coord != null) {
+      } else if (coord != null && coord.length == 2) {
         shape.lineTo(coord[0], coord[1]);
       }
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonSequencesDecoder.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonSequencesDecoder.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonSequencesDecoder.java	(revision 36122)
@@ -5,9 +5,9 @@
 import java.util.function.Function;
 
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonString;
-import javax.json.JsonValue;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonString;
+import jakarta.json.JsonValue;
 
 import org.openstreetmap.josm.data.coor.LatLon;
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonStreetsideDecoder.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonStreetsideDecoder.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonStreetsideDecoder.java	(revision 36122)
@@ -2,23 +2,16 @@
 package org.openstreetmap.josm.plugins.streetside.utils.api;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Locale;
 import java.util.function.Function;
 
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonValue;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.tools.Logging;
 
-import org.apache.log4j.Logger;
-import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.tools.I18n;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
 
 public final class JsonStreetsideDecoder {
-
-  final static Logger logger = Logger.getLogger(JsonStreetsideDecoder.class);
 
   private JsonStreetsideDecoder() {
@@ -38,20 +31,5 @@
    */
   public static <T> Collection<T> decodeFeatureCollection(final JsonObject json, Function<JsonObject, T> featureDecoder) {
-    final Collection<T> result = new HashSet<>();
-    if (
-      json != null && "FeatureCollection".equals(json.getString("type", null)) && json.containsKey("features")
-    ) {
-      final JsonValue features = json.get("features");
-      for (int i = 0; features instanceof JsonArray && i < ((JsonArray) features).size(); i++) {
-        final JsonValue val = ((JsonArray) features).get(i);
-        if (val instanceof JsonObject) {
-          final T feature = featureDecoder.apply((JsonObject) val);
-          if (feature != null) {
-            result.add(feature);
-          }
-        }
-      }
-    }
-    return result;
+    return JsonDecoder.decodeFeatureCollection(json, featureDecoder);
   }
 
@@ -64,28 +42,5 @@
    */
   static LatLon decodeLatLon(final JsonArray json) {
-    final double[] result = decodeDoublePair(json);
-    if (result != null) {
-      return new LatLon(result[1], result[0]);
-    }
-    return null;
-  }
-
-  /**
-   * Decodes a pair of double values, which are stored in a {@link JsonArray} of exactly size 2.
-   * @param json the {@link JsonArray} containing the two values
-   * @return a double array which contains the two values in the same order, or <code>null</code>
-   *         if the parameter was not a {@link JsonArray} of exactly size 2 containing two {@link JsonNumber}s
-   */
-  @SuppressWarnings("PMD.ReturnEmptyArrayRatherThanNull")
-  static double[] decodeDoublePair(final JsonArray json) {
-    if (
-      json != null &&
-      json.size() == 2 &&
-      json.get(0) instanceof JsonNumber &&
-      json.get(1) instanceof JsonNumber
-    ) {
-      return new double[]{json.getJsonNumber(0).doubleValue(), json.getJsonNumber(1).doubleValue()};
-    }
-    return null;
+    return JsonDecoder.decodeLatLon(json);
   }
 
@@ -96,19 +51,8 @@
    * @return the point in time as a {@link Long} value representing the UNIX epoch time, or <code>null</code> if the
    *   parameter does not match the required format (this also triggers a warning via
-   *   {@link Logger}, or the parameter is <code>null</code>).
+   *   {@link Logging}, or the parameter is <code>null</code>).
    */
   static Long decodeTimestamp(final String timestamp) {
-    if (timestamp != null) {
-      try {
-        return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.UK).parse(timestamp).getTime();
-      } catch (ParseException e) {
-        StackTraceElement calledBy = e.getStackTrace()[Math.min(e.getStackTrace().length - 1, 2)];
-        logger.warn(I18n.tr(String.format(
-          "Could not decode time from the timestamp `%s` (called by %s.%s:%d)",
-          timestamp, calledBy.getClassName(), calledBy.getMethodName(), calledBy.getLineNumber()
-        ), e));
-      }
-    }
-    return null;
+    return JsonDecoder.decodeTimestamp(timestamp);
   }
 }
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonStreetsideSequencesDecoder.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonStreetsideSequencesDecoder.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonStreetsideSequencesDecoder.java	(revision 36122)
@@ -5,9 +5,9 @@
 import java.util.function.Function;
 
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonString;
-import javax.json.JsonValue;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonString;
+import jakarta.json.JsonValue;
 
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -113,5 +113,6 @@
 
     if (json.getString("id", null) != null && json.getString("la", null) != null && json.getString("lo", null) != null) {
-        result = new StreetsideSequence(json.getString("id", null), json.getJsonNumber("la").doubleValue(), json.getJsonNumber("lo").doubleValue(), json.getJsonNumber("cd").longValue());
+        result = new StreetsideSequence(json.getString("id", null),
+                json.getJsonNumber("la").doubleValue(), json.getJsonNumber("lo").doubleValue(), json.getJsonNumber("cd").longValue());
     }
 
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/JsonUtil.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/JsonUtil.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/JsonUtil.java	(revision 36122)
@@ -5,6 +5,6 @@
 import java.nio.charset.StandardCharsets;
 
-import javax.json.Json;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
 
 public final class JsonUtil {
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoderTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoderTest.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoderTest.java	(revision 36122)
@@ -3,4 +3,5 @@
 
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
@@ -9,6 +10,6 @@
 import java.util.function.Function;
 
-import javax.json.Json;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
 
 import org.junit.jupiter.api.Test;
@@ -24,5 +25,5 @@
   @Test
   void testDecodeDoublePair() {
-    assertNull(JsonDecoder.decodeDoublePair(null));
+    assertArrayEquals(new double[0], JsonDecoder.decodeDoublePair(null));
   }
 
Index: /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonSequencesDecoderTest.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonSequencesDecoderTest.java	(revision 36121)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonSequencesDecoderTest.java	(revision 36122)
@@ -13,8 +13,8 @@
 import java.util.function.Function;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonValue;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonValue;
 
 import org.junit.jupiter.api.Assertions;
Index: /applications/editors/josm/plugins/cadastre-fr/build.xml
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/build.xml	(revision 36121)
+++ /applications/editors/josm/plugins/cadastre-fr/build.xml	(revision 36122)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="recompile for compatibility with JOSM r17896"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="17896"/>
+    <property name="plugin.main.version" value="18723"/>
     
     <!-- Configure these properties (replace "..." accordingly).
Index: /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/api/CadastreAPI.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/api/CadastreAPI.java	(revision 36121)
+++ /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/api/CadastreAPI.java	(revision 36122)
@@ -5,14 +5,15 @@
 
 import java.io.IOException;
-import java.io.StringReader;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonStructure;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
+import jakarta.json.JsonStructure;
 
 import org.openstreetmap.josm.data.Bounds;
@@ -55,6 +56,7 @@
      */
     public static Set<String> getSheets(double minlon, double minlat, double maxlon, double maxlat) throws IOException {
-        URL url = new URL(API_ENDPOINT.get() + "/feuilles?bbox=" + String.join(",",
-                Double.toString(minlon), Double.toString(minlat), Double.toString(maxlon), Double.toString(maxlat)));
+        URL url = URI.create(API_ENDPOINT.get() + "/feuilles?bbox=" + String.join(",",
+                Double.toString(minlon), Double.toString(minlat), Double.toString(maxlon), Double.toString(maxlat)))
+                .toURL();
         try {
             Response response = HttpClient.create(url).connect();
@@ -65,10 +67,12 @@
                         "geo@data.gouv.fr"));
             }
-            JsonStructure json = Json.createReader(new StringReader(response.fetchContent())).read();
-            if (json instanceof JsonArray) {
-                return json.asJsonArray().stream().map(x -> x.asJsonObject().getString("id")).collect(Collectors.toSet());
-            } else {
-                JsonObject obj = json.asJsonObject();
-                throw new IOException(new OsmApiException(obj.getInt("code"), null, obj.getString("message"), url.toExternalForm()));
+            try (JsonReader reader = Json.createReader(response.getContentReader())) {
+                JsonStructure json = reader.read();
+                if (json instanceof JsonArray) {
+                    return json.asJsonArray().stream().map(x -> x.asJsonObject().getString("id")).collect(Collectors.toSet());
+                } else {
+                    JsonObject obj = json.asJsonObject();
+                    throw new IOException(new OsmApiException(obj.getInt("code"), null, obj.getString("message"), url.toExternalForm()));
+                }
             }
         } catch (MalformedURLException e) {
Index: /applications/editors/josm/plugins/geochat/build.xml
===================================================================
--- /applications/editors/josm/plugins/geochat/build.xml	(revision 36121)
+++ /applications/editors/josm/plugins/geochat/build.xml	(revision 36122)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="[josm_geochat] copypaste from keyboard, font size advanced parameters"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="18494"/>
+    <property name="plugin.main.version" value="18723"/>
 
     <property name="plugin.author" value="Ilya Zverev"/>
Index: /applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java
===================================================================
--- /applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java	(revision 36121)
+++ /applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java	(revision 36122)
@@ -15,7 +15,7 @@
 import java.util.Set;
 
-import javax.json.JsonArray;
-import javax.json.JsonException;
-import javax.json.JsonObject;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonException;
+import jakarta.json.JsonObject;
 
 import org.openstreetmap.josm.data.coor.ILatLon;
@@ -41,6 +41,6 @@
     private String userName;
     private static ChatServerConnection instance;
-    private Set<ChatServerConnectionListener> listeners;
-    private LogRequest requestThread;
+    private final Set<ChatServerConnectionListener> listeners;
+    private final LogRequest requestThread;
 
     private ChatServerConnection() {
@@ -123,4 +123,5 @@
                 }
             } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
                 Logging.warn(e);
             }
@@ -279,9 +280,9 @@
         double l = lat / 180 * Math.PI;
         double pf = Math.log(Math.tan(l) + (1 / Math.cos(l)));
-        return Math.pow(2.0, zoom - 1) * (Math.PI - pf) / Math.PI;
+        return Math.pow(2.0, zoom - 1d) * (Math.PI - pf) / Math.PI;
     }
 
     private static double lonToTileX(double lon, int zoom) {
-        return Math.pow(2.0, zoom - 3) * (lon + 180.0) / 45.0;
+        return Math.pow(2.0, zoom - 3d) * (lon + 180.0) / 45.0;
     }
 
@@ -305,15 +306,14 @@
         double factor = screenPixels / tilePixels;
         double result = Math.log(factor) / Math.log(2) / 2 + 1;
-        int intResult = (int) Math.floor(result);
-        return intResult;
+        return (int) Math.floor(result);
     }
 
     private class LogRequest implements Runnable {
         private static final int MAX_JUMP = 20000; // in meters
-        private LatLon lastPosition = null;
-        private long lastUserId = 0;
-        private long lastId = 0;
-        private boolean lastStatus = false;
-        private boolean stopping = false;
+        private LatLon lastPosition;
+        private long lastUserId;
+        private long lastId;
+        private boolean lastStatus;
+        private boolean stopping;
 
         @Override
@@ -324,7 +324,9 @@
                 process();
                 try {
-                    Thread.sleep(interval * 1000);
+                    Thread.sleep(interval * 1000L);
                 } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
                     stopping = true;
+                    Logging.trace(e);
                 }
             }
@@ -367,4 +369,5 @@
                 json = JsonQueryUtil.query(query, true);
             } catch (IOException ex) {
+                Logging.trace(ex);
                 json = null; // ?
             }
Index: /applications/editors/josm/plugins/geochat/src/geochat/JsonQueryCallback.java
===================================================================
--- /applications/editors/josm/plugins/geochat/src/geochat/JsonQueryCallback.java	(revision 36121)
+++ /applications/editors/josm/plugins/geochat/src/geochat/JsonQueryCallback.java	(revision 36122)
@@ -2,5 +2,5 @@
 package geochat;
 
-import javax.json.JsonObject;
+import jakarta.json.JsonObject;
 
 /**
Index: /applications/editors/josm/plugins/geochat/src/geochat/JsonQueryUtil.java
===================================================================
--- /applications/editors/josm/plugins/geochat/src/geochat/JsonQueryUtil.java	(revision 36121)
+++ /applications/editors/josm/plugins/geochat/src/geochat/JsonQueryUtil.java	(revision 36122)
@@ -5,9 +5,10 @@
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
+import java.net.URI;
 
-import javax.json.Json;
-import javax.json.JsonException;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonException;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
 
 import org.openstreetmap.josm.gui.MainApplication;
@@ -43,6 +44,6 @@
     public static JsonObject query(String query, boolean logAtDebug) throws IOException {
         String serverURL = Config.getPref().get("geochat.server", "https://zverik.dev.openstreetmap.org/osmochat.php?action=");
-        URL url = new URL(serverURL + query);
-        Response connection = HttpClient.create(url).setLogAtDebug(logAtDebug).connect();
+        URI url = URI.create(serverURL + query);
+        Response connection = HttpClient.create(url.toURL()).setLogAtDebug(logAtDebug).connect();
         if (connection.getResponseCode() != 200) {
             throw new IOException("HTTP Response code " + connection.getResponseCode() + " (" + connection.getResponseMessage() + ")");
@@ -51,6 +52,6 @@
         if (inp == null)
             throw new IOException("Empty response");
-        try {
-            return Json.createReader(inp).readObject();
+        try (JsonReader reader = Json.createReader(inp)){
+            return reader.readObject();
         } catch (JsonException e) {
             throw new IOException("Failed to parse JSON: " + e.getMessage(), e);
Index: /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsAcquirer.java
===================================================================
--- /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsAcquirer.java	(revision 36121)
+++ /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsAcquirer.java	(revision 36122)
@@ -16,8 +16,9 @@
 import java.util.List;
 
-import javax.json.Json;
-import javax.json.JsonException;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonException;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
 
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -28,14 +29,14 @@
  */
 public class LiveGpsAcquirer implements Runnable {
-    private String gpsdHost;
-    private int gpsdPort;
+    private final String gpsdHost;
+    private final int gpsdPort;
 
     private Socket gpsdSocket;
     private BufferedReader gpsdReader;
-    private boolean connected = false;
-    private boolean shutdownFlag = false;
+    private boolean connected;
+    private boolean shutdownFlag;
     private boolean JSONProtocol = true;
-    private long skipTime = 0L;
-    private int skipNum = 0;
+    private long skipTime;
+    private int skipNum;
 
     private final List<PropertyChangeListener> propertyChangeListener = new ArrayList<>();
@@ -122,5 +123,5 @@
     public void run() {
         LiveGpsData oldGpsData = null;
-        LiveGpsData gpsData = null;
+        LiveGpsData gpsData;
 
         shutdownFlag = false;
@@ -131,9 +132,11 @@
                     connect();
                 } catch (IOException iox) {
+                    Logging.trace(iox);
                     fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTION_FAILED, tr("Connection Failed"));
                     try {
                         Thread.sleep(1000);
-                    } catch (InterruptedException ignore) {
-                        Logging.trace(ignore);
+                    } catch (InterruptedException interruptedException) {
+                        Logging.trace(interruptedException);
+                        Thread.currentThread().interrupt();
                     }
                 }
@@ -155,5 +158,5 @@
                     throw new IOException();
 
-                if (JSONProtocol == true)
+                if (JSONProtocol)
                     gpsData = parseJSON(line);
                 else
@@ -173,6 +176,7 @@
                 try {
                     Thread.sleep(1000);
-                } catch (InterruptedException ignore) {
-                    Logging.trace(ignore);
+                } catch (InterruptedException interruptedException) {
+                    Logging.trace(interruptedException);
+                    Thread.currentThread().interrupt();
                 }
                 // send warning to layer
@@ -219,5 +223,5 @@
         }
 
-        if (gpsdSocket == null || gpsdSocket.isConnected() == false) {
+        if (gpsdSocket == null || !gpsdSocket.isConnected()) {
             if (skipTime == 0)
                 skipTime = System.currentTimeMillis()+60000;
@@ -237,8 +241,8 @@
             return;
 
-        try {
-            greeting = Json.createReader(new StringReader(line)).readObject();
+        try (JsonReader reader = Json.createReader(new StringReader(line))) {
+            greeting = reader.readObject();
             type = greeting.getString("class");
-            if (type.equals("VERSION")) {
+            if ("VERSION".equals(type)) {
                 release = greeting.getString("release");
                 Logging.info("LiveGps: Connected to gpsd " + release);
@@ -252,7 +256,8 @@
                 fireGpsStatusChangeEvent(LiveGpsStatus.GpsStatus.CONNECTED, tr("Connected"));
             }
-        }
-
-        if (JSONProtocol == true) {
+            Logging.trace(jex);
+        }
+
+        if (JSONProtocol) {
             JsonObject watch = Json.createObjectBuilder()
                     .add("enable", true)
@@ -276,10 +281,11 @@
             gpsdSocket.close();
             gpsdSocket = null;
-        } catch (Exception e) {
+        } catch (IOException e) {
             Logging.warn("LiveGps: Unable to close socket; reconnection may not be possible");
-        }
-    }
-
-    private LiveGpsData parseJSON(String line) {
+            Logging.trace(e);
+        }
+    }
+
+    private static LiveGpsData parseJSON(String line) {
         JsonObject report;
         double lat, lon;
@@ -289,11 +295,12 @@
         float epy = 0;
 
-        try {
-            report = Json.createReader(new StringReader(line)).readObject();
+        try (JsonReader reader = Json.createReader(new StringReader(line))) {
+            report = reader.readObject();
         } catch (JsonException jex) {
             Logging.warn("LiveGps: line read from gpsd is not a JSON object:" + line);
+            Logging.trace(jex);
             return null;
         }
-        if (!report.getString("class").equals("TPV") || report.getInt("mode") < 2)
+        if (!"TPV".equals(report.getString("class")) || report.getInt("mode") < 2)
             return null;
 
@@ -322,13 +329,13 @@
     }
 
-    private LiveGpsData parseOld(String line) {
+    private static LiveGpsData parseOld(String line) {
         String[] words;
-        double lat = 0;
-        double lon = 0;
+        double lat;
+        double lon;
         float speed = 0;
         float course = 0;
 
         words = line.split(",");
-        if ((words.length == 0) || !words[0].equals("GPSD"))
+        if ((words.length == 0) || !"GPSD".equals(words[0]))
             return null;
 
Index: /applications/editors/josm/plugins/opendata/build.xml
===================================================================
--- /applications/editors/josm/plugins/opendata/build.xml	(revision 36121)
+++ /applications/editors/josm/plugins/opendata/build.xml	(revision 36122)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <project name="opendata" default="dist" basedir=".">
-    <property name="plugin.main.version" value="18494"/>
+    <property name="plugin.main.version" value="18723"/>
     <property name="plugin.author" value="Don-vip"/>
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.opendata.OdPlugin"/>
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 36121)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 36122)
@@ -18,8 +18,8 @@
 import java.util.TreeMap;
 
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
-import javax.json.spi.JsonProvider;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
+import jakarta.json.spi.JsonProvider;
 import javax.swing.JOptionPane;
 
@@ -238,6 +238,7 @@
                 // CHECKSTYLE.OFF: LineLength
                 dlg.setContent("<html>" +
-                        tr("JOSM was unable to find a strict mathematical transformation between ''{0}'' and WGS84.<br /><br />"+
-                        "Do you want to try a <i>lenient</i> method, which will perform a non-precise transformation (<b>with location errors up to 1 km</b>) ?<br/><br/>"+
+                        tr("JOSM was unable to find a strict mathematical transformation between ''{0}'' and WGS84.<br /><br />" +
+                        "Do you want to try a <i>lenient</i> method, which will perform a non-precise transformation " +
+                        "(<b>with location errors up to 1 km</b>) ?<br/><br/>"+
                         "If so, <b>do NOT upload</b> such data to OSM !", crs.getName())+
                         "</html>");
Index: /applications/editors/josm/plugins/pointInfo/build.xml
===================================================================
--- /applications/editors/josm/plugins/pointInfo/build.xml	(revision 36121)
+++ /applications/editors/josm/plugins/pointInfo/build.xml	(revision 36122)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="PointInfo: Switch to SVG icons"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18723"/>
 
     <!-- plugin can load at runtime -->
Index: /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/PointInfoPlugin.java
===================================================================
--- /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/PointInfoPlugin.java	(revision 36121)
+++ /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/PointInfoPlugin.java	(revision 36122)
@@ -73,7 +73,7 @@
         if (Config.getPref().getBoolean("plugin.pointinfo.automode", true)) {
             ReverseRecord r = ReverseFinder.queryNominatim(pos);
-            Iterator i = modules.values().iterator();
+            Iterator<AbstractPointInfoModule> i = modules.values().iterator();
             while (module == null && i.hasNext()) {
-                AbstractPointInfoModule m = (AbstractPointInfoModule) i.next();
+                AbstractPointInfoModule m = i.next();
                 if (r.matchAnyArea(m.getArea())) {
                     module = m;
Index: /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ReverseFinder.java
===================================================================
--- /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ReverseFinder.java	(revision 36121)
+++ /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ReverseFinder.java	(revision 36122)
@@ -4,11 +4,11 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.net.URL;
+import java.net.URI;
 import java.nio.charset.StandardCharsets;
 import java.util.Locale;
 
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
 
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -19,5 +19,5 @@
  * @author Javier Sánchez Portero
  */
-public class ReverseFinder {
+public final class ReverseFinder {
 
     public static final String NOMINATIM_URL = "https://nominatim.openstreetmap.org/reverse?format=json&lat=%f&lon=%f";
@@ -34,10 +34,9 @@
     public static ReverseRecord queryNominatim(LatLon pos) throws IOException {
         String request = String.format(Locale.ENGLISH, NOMINATIM_URL, pos.lat(), pos.lon());
-        String result = HttpClient.create(new URL(request)).connect().fetchContent();
+        String result = HttpClient.create(URI.create(request).toURL()).connect().fetchContent();
         JsonReader jsonReader = Json.createReader(new ByteArrayInputStream(result.getBytes(StandardCharsets.UTF_8)));
         JsonObject obj = jsonReader.readObject();
         jsonReader.close();
-        ReverseRecord record = new ReverseRecord(obj);
-        return record;
+        return new ReverseRecord(obj);
     }
 }
Index: /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ReverseRecord.java
===================================================================
--- /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ReverseRecord.java	(revision 36121)
+++ /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ReverseRecord.java	(revision 36122)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.pointinfo;
 
-import javax.json.JsonObject;
+import jakarta.json.JsonObject;
 
 /**
@@ -73,5 +73,5 @@
      * @return match area matched
      */
-    public Boolean matchAnyArea(String area) {
+    public boolean matchAnyArea(String area) {
         if (area.equals(countryCode)) return true;
         if (area.equals(country)) return true;
Index: /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/catastro/CatastroRecord.java
===================================================================
--- /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/catastro/CatastroRecord.java	(revision 36121)
+++ /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/catastro/CatastroRecord.java	(revision 36122)
@@ -2,6 +2,5 @@
 package org.openstreetmap.josm.plugins.pointinfo.catastro;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.ByteArrayInputStream;
@@ -9,9 +8,11 @@
 import java.util.ArrayList;
 
-import javax.json.Json;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.NodeList;
@@ -20,5 +21,5 @@
 
 import org.openstreetmap.josm.tools.Logging;
-import java.util.logging.Level;
+import org.xml.sax.SAXException;
 
 /**
@@ -50,6 +51,6 @@
      */
     private void init() {
-        errors = new ArrayList<JsonObject>();
-        coords = new ArrayList<JsonObject>();
+        errors = new ArrayList<>();
+        coords = new ArrayList<>();
     }
 
@@ -68,53 +69,45 @@
             parseErrors(doc);
             parseCoordenadas(doc);
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, e);
+        } catch (ParserConfigurationException | SAXException | IOException e) {
+            Logging.warn(e);
         }
     }
 
     private void parseErrors(Document doc) {
-        try {
-            NodeList nList = doc.getElementsByTagName("err");
-            for (int temp = 0; temp < nList.getLength(); temp++) {
-                Node nNode = nList.item(temp);            
-                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
-                    Element eElement = (Element) nNode;
-                    String code = eElement.getElementsByTagName("cod").item(0).getTextContent();
-                    String desc = eElement.getElementsByTagName("des").item(0).getTextContent();
-                    JsonObject error = Json.createObjectBuilder()
-                        .add("code", code)
-                        .add("desc", desc)
-                        .build();
-                    errors.add(error);
-                    Logging.info("Error: (" + code + ") " + desc);
-                }
+        NodeList nList = doc.getElementsByTagName("err");
+        for (int temp = 0; temp < nList.getLength(); temp++) {
+            Node nNode = nList.item(temp);
+            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+                Element eElement = (Element) nNode;
+                String code = eElement.getElementsByTagName("cod").item(0).getTextContent();
+                String desc = eElement.getElementsByTagName("des").item(0).getTextContent();
+                JsonObject error = Json.createObjectBuilder()
+                    .add("code", code)
+                    .add("desc", desc)
+                    .build();
+                errors.add(error);
+                Logging.info("Error: (" + code + ") " + desc);
             }
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, "errors:", e);
         }
     }
     
     private void parseCoordenadas(Document doc) {
-        try {
-            NodeList nList = doc.getElementsByTagName("coord");
-            for (int temp = 0; temp < nList.getLength(); temp++) {
-                Node nNode = nList.item(temp);            
-                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
-                    Element eElement = (Element) nNode;
-                    String ref = eElement.getElementsByTagName("pc1").item(0).getTextContent()
-                        + eElement.getElementsByTagName("pc2").item(0).getTextContent();
-                    String address = eElement.getElementsByTagName("ldt")
-                        .item(0).getTextContent();
-                    JsonObject coord = Json.createObjectBuilder()
-                        .add("ref", ref)
-                        .add("address", address)
-                        .build();
-                    coords.add(coord);
-                    Logging.info("Referencia Catastral: " + ref);
-                    Logging.info("Dirección: " + address);
-                }
+        NodeList nList = doc.getElementsByTagName("coord");
+        for (int temp = 0; temp < nList.getLength(); temp++) {
+            Node nNode = nList.item(temp);
+            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+                Element eElement = (Element) nNode;
+                String ref = eElement.getElementsByTagName("pc1").item(0).getTextContent()
+                    + eElement.getElementsByTagName("pc2").item(0).getTextContent();
+                String address = eElement.getElementsByTagName("ldt")
+                    .item(0).getTextContent();
+                JsonObject coord = Json.createObjectBuilder()
+                    .add("ref", ref)
+                    .add("address", address)
+                    .build();
+                coords.add(coord);
+                Logging.info("Referencia Catastral: " + ref);
+                Logging.info("Dirección: " + address);
             }
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, "coordenadas:", e);
         }
     }
@@ -130,18 +123,19 @@
         for (JsonObject coord: coords) {
             r.append("<i><u>Información de la parcela</u></i><br/>");
-            r.append("<b>Referencia Catastral: </b>" + coord.getString("ref") + "<br/>");
-            r.append("<b>Dirección: </b>" + coord.getString("address") + "<br/>");
-            r.append("<b>Fotografía de fachada:</b> <a href=\"" 
-                + fURL + coord.getString("ref") + "\">"
-                + "Enlace a web de Catastro</a> (<a href=\""
-                + eURL + fURL + coord.getString("ref")
-                + "\">metadatos</a>)<br/><br/>");
+            r.append("<b>Referencia Catastral: </b>").append(coord.getString("ref")).append("<br/>");
+            r.append("<b>Dirección: </b>").append(coord.getString("address")).append("<br/>");
+            r.append("<b>Fotografía de fachada:</b> <a href=\"").append(fURL)
+                    .append(coord.getString("ref"))
+                    .append("\">")
+                    .append("Enlace a web de Catastro</a> (<a href=\"")
+                    .append(eURL).append(fURL)
+                    .append(coord.getString("ref")).append("\">metadatos</a>)<br/><br/>");
         }
-        if (errors.size() > 0) {
+        if (!errors.isEmpty()) {
             r.append("<i><u>Errores</u></i><br/>");
         }
         for (JsonObject error: errors) {
-            r.append("(" + error.getString("code") + ") ");
-            r.append(error.getString("desc") + "<br/>");
+            r.append("(").append(error.getString("code")).append(") ");
+            r.append(error.getString("desc")).append("<br/>");
         }
         r.append("<hr/>");
Index: /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ruian/RuianRecord.java
===================================================================
--- /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ruian/RuianRecord.java	(revision 36121)
+++ /applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ruian/RuianRecord.java	(revision 36122)
@@ -9,13 +9,15 @@
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.IllegalFormatException;
 import java.util.LinkedList;
 import java.util.logging.Level;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
-import javax.json.JsonValue;
-
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
+import jakarta.json.JsonValue;
+
+import org.apache.commons.jcs3.access.exception.InvalidArgumentException;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.Command;
@@ -39,42 +41,42 @@
 
     // CHECKSTYLE.OFF: SingleSpaceSeparator
-    private double   m_coor_lat, m_coor_lon;
-    private String   m_source;
-
-    private long     m_objekt_ruian_id;
-    private int      m_objekt_podlazi;
-    private int      m_objekt_byty;
-    private String   m_objekt_zpusob_vyuziti;
-    private String   m_objekt_zpusob_vyuziti_kod;
-    private String   m_objekt_zpusob_vyuziti_key;
-    private String   m_objekt_zpusob_vyuziti_val;
-    private String   m_objekt_dokonceni;
-    private String   m_objekt_plati_od;
-
-    private String  m_err_user;
-    private String  m_err_date;
-    private String  m_err_type;
-    private String  m_err_note;
-
-    private ArrayList<ObjectWithoutGeometry> m_so_bez_geometrie;
-
-    private ArrayList<AddrPlaces> m_adresni_mista;
-
-    private long     m_parcela_ruian_id;
-    private String   m_parcela_druh_pozemku;
-    private String   m_parcela_zpusob_vyuziti;
-    private String   m_parcela_plati_od;
-
-    private long     m_ulice_ruian_id;
-    private String   m_ulice_jmeno;
-
-    private long     m_katastr_ruian_id;
-    private String   m_katastr_nazev;
-    private long     m_katastr_obec_kod;
-    private String   m_katastr_obec;
-    private long     m_katastr_okres_kod;
-    private String   m_katastr_okres;
-    private long     m_katastr_kraj_kod;
-    private String   m_katastr_kraj;
+    private double mCoorLat, mCoorLon;
+    private String mSource;
+
+    private long mObjektRuianId;
+    private int mObjektPodlazi;
+    private int mObjektByty;
+    private String mObjektZpusobVyuziti;
+    private String mObjektZpusobVyuzitiKod;
+    private String mObjektZpusobVyuzitiKey;
+    private String mObjektZpusobVyuzitiVal;
+    private String mObjektDokonceni;
+    private String mObjektPlatiOd;
+
+    private String mErrUser;
+    private String mErrDate;
+    private String mErrType;
+    private String mErrNote;
+
+    private ArrayList<ObjectWithoutGeometry> mSoBezGeometrie;
+
+    private ArrayList<AddrPlaces> mAdresniMista;
+
+    private long mParcelaRuianId;
+    private String mParcelaDruhPozemku;
+    private String mParcelaZpusobVyuziti;
+    private String mParcelaPlatiOd;
+
+    private long mUliceRuianId;
+    private String mUliceJmeno;
+
+    private long mKatastrRuianId;
+    private String mKatastrNazev;
+    private long mKatastrObecKod;
+    private String mKatastrObec;
+    private long mKatastrOkresKod;
+    private String mKatastrOkres;
+    private long mKatastrKrajKod;
+    private String mKatastrKraj;
     // CHECKSTYLE.ON: SingleSpaceSeparator
 
@@ -93,42 +95,42 @@
     private void init() {
 
-        m_coor_lat = 0;
-        m_coor_lon = 0;
-        m_source = "";
-
-        m_objekt_ruian_id = 0;
-        m_objekt_podlazi = 0;
-        m_objekt_byty = 0;
-        m_objekt_zpusob_vyuziti = "";
-        m_objekt_zpusob_vyuziti_kod = "";
-        m_objekt_zpusob_vyuziti_key = "";
-        m_objekt_zpusob_vyuziti_val = "";
-        m_objekt_dokonceni = "";
-        m_objekt_plati_od = "";
-
-        m_err_user = "";
-        m_err_date = "";
-        m_err_type = "";
-        m_err_note = "";
-
-        m_so_bez_geometrie = new ArrayList<>();
-        m_adresni_mista = new ArrayList<>();
-
-        m_parcela_ruian_id = 0;
-        m_parcela_druh_pozemku = "";
-        m_parcela_zpusob_vyuziti = "";
-        m_parcela_plati_od = "";
-
-        m_ulice_ruian_id = 0;
-        m_ulice_jmeno = "";
-
-        m_katastr_ruian_id = 0;
-        m_katastr_nazev = "";
-        m_katastr_obec_kod = 0;
-        m_katastr_obec = "";
-        m_katastr_okres_kod = 0;
-        m_katastr_okres = "";
-        m_katastr_kraj_kod = 0;
-        m_katastr_kraj = "";
+        mCoorLat = 0;
+        mCoorLon = 0;
+        mSource = "";
+
+        mObjektRuianId = 0;
+        mObjektPodlazi = 0;
+        mObjektByty = 0;
+        mObjektZpusobVyuziti = "";
+        mObjektZpusobVyuzitiKod = "";
+        mObjektZpusobVyuzitiKey = "";
+        mObjektZpusobVyuzitiVal = "";
+        mObjektDokonceni = "";
+        mObjektPlatiOd = "";
+
+        mErrUser = "";
+        mErrDate = "";
+        mErrType = "";
+        mErrNote = "";
+
+        mSoBezGeometrie = new ArrayList<>();
+        mAdresniMista = new ArrayList<>();
+
+        mParcelaRuianId = 0;
+        mParcelaDruhPozemku = "";
+        mParcelaZpusobVyuziti = "";
+        mParcelaPlatiOd = "";
+
+        mUliceRuianId = 0;
+        mUliceJmeno = "";
+
+        mKatastrRuianId = 0;
+        mKatastrNazev = "";
+        mKatastrObecKod = 0;
+        mKatastrObec = "";
+        mKatastrOkresKod = 0;
+        mKatastrOkres = "";
+        mKatastrKrajKod = 0;
+        mKatastrKraj = "";
     }
 
@@ -169,5 +171,5 @@
     }
 
-    private JsonObject getSafeJsonObject(JsonObject obj, String key) {
+    private static JsonObject getSafeJsonObject(JsonObject obj, String key) {
         JsonValue val = obj.get(key);
         if (val instanceof JsonObject) {
@@ -187,23 +189,23 @@
 
             try {
-                m_coor_lat = Double.parseDouble(coorObjekt.getString("lat"));
+                mCoorLat = Double.parseDouble(coorObjekt.getString("lat"));
             } catch (NumberFormatException e) {
-                Logging.log(Level.WARNING, "coordinates.lat:", e);
-            }
-
-            try {
-                m_coor_lon = Double.parseDouble(coorObjekt.getString("lon"));
+                Logging.warn("coordinates.lat: {0}", e);
+            }
+
+            try {
+                mCoorLon = Double.parseDouble(coorObjekt.getString("lon"));
             } catch (NumberFormatException e) {
-                Logging.log(Level.WARNING, "coordinates.lon:", e);
-            }
-
-            try {
-                m_source = obj.getString("source");
+                Logging.warn("coordinates.lon: {0}", e);
+            }
+
+            try {
+                mSource = obj.getString("source");
             } catch (RuntimeException e) {
-                Logging.log(Level.WARNING, "source:", e);
-            }
-
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, "coordinates:", e);
+                Logging.warn("source: {0}", e);
+            }
+
+        } catch (ClassCastException e) {
+            Logging.warn("coordinates: {0}", e);
         }
     }
@@ -214,59 +216,35 @@
 
             try {
-                m_objekt_ruian_id = Long.parseLong(stavebniObjekt.getString("ruian_id"));
-            } catch (Exception e) {
+                mObjektRuianId = Long.parseLong(stavebniObjekt.getString("ruian_id", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "stavebni_objekt.ruian_id:", e);
             }
 
             try {
-                m_objekt_podlazi = Integer.parseInt(stavebniObjekt.getString("pocet_podlazi"));
-            } catch (Exception e) {
+                mObjektPodlazi = Integer.parseInt(stavebniObjekt.getString("pocet_podlazi", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "stavebni_objekt.pocet_podlazi:", e);
             }
 
             try {
-                m_objekt_byty = Integer.parseInt(stavebniObjekt.getString("pocet_bytu"));
-            } catch (Exception e) {
+                mObjektByty = Integer.parseInt(stavebniObjekt.getString("pocet_bytu", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "stavebni_objekt.pocet_bytu:", e);
             }
 
-            try {
-                m_objekt_zpusob_vyuziti = stavebniObjekt.getString("zpusob_vyuziti");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "stavebni_objekt.zpusob_vyuziti:", e);
-            }
-
-            try {
-                m_objekt_zpusob_vyuziti_kod = stavebniObjekt.getString("zpusob_vyuziti_kod");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "stavebni_objekt.m_objekt_zpusob_vyuziti_kod:", e);
-            }
-
-            try {
-                m_objekt_zpusob_vyuziti_key = stavebniObjekt.getString("zpusob_vyuziti_key");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "stavebni_objekt.zpusob_vyuziti_key:", e);
-            }
-
-            try {
-                m_objekt_zpusob_vyuziti_val = stavebniObjekt.getString("zpusob_vyuziti_val");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "stavebni_objekt.m_objekt_zpusob_vyuziti_val:", e);
-            }
-
-            try {
-                m_objekt_plati_od = stavebniObjekt.getString("plati_od");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "stavebni_objekt.plati_od:", e);
-            }
-
-            try {
-                m_objekt_dokonceni = stavebniObjekt.getString("dokonceni");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "stavebni_objekt.dokonceni:", e);
-            }
-
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, "stavebni_objekt:", e);
+            mObjektZpusobVyuziti = stavebniObjekt.getString("zpusob_vyuziti", null);
+
+            mObjektZpusobVyuzitiKod = stavebniObjekt.getString("zpusob_vyuziti_kod", null);
+
+            mObjektZpusobVyuzitiKey = stavebniObjekt.getString("zpusob_vyuziti_key", null);
+
+            mObjektZpusobVyuzitiVal = stavebniObjekt.getString("zpusob_vyuziti_val", null);
+
+            mObjektPlatiOd = stavebniObjekt.getString("plati_od", null);
+
+            mObjektDokonceni = stavebniObjekt.getString("dokonceni", null);
+
+        } catch (IllegalArgumentException e) {
+            Logging.warn("stavebni_objekt: {0}", e);
         }
     }
@@ -276,30 +254,14 @@
             JsonObject errObjekt = getSafeJsonObject(obj, "nahlaseny_problem");
 
-            try {
-                m_err_user = errObjekt.getString("uzivatel");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "nahlaseny_problem.uzivatel:", e);
-            }
-
-            try {
-                m_err_date = errObjekt.getString("datum");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "nahlaseny_problem.datum:", e);
-            }
-
-            try {
-                m_err_type = errObjekt.getString("duvod");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "nahlaseny_problem.duvod:", e);
-            }
-
-            try {
-                m_err_note = errObjekt.getString("poznamka");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "nahlaseny_problem.poznamka:", e);
-            }
-
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, "nahlaseny_problem:", e);
+            mErrUser = errObjekt.getString("uzivatel", null);
+
+            mErrDate = errObjekt.getString("datum", null);
+
+            mErrType = errObjekt.getString("duvod", null);
+
+            mErrNote = errObjekt.getString("poznamka", null);
+
+        } catch (IllegalArgumentException e) {
+            Logging.warn("nahlaseny_problem: {0}", e);
         }
     }
@@ -314,67 +276,43 @@
 
                 try {
-                    so.setRuianID(Long.parseLong(soBezGeom.getString("ruian_id")));
-                } catch (Exception e) {
+                    so.setRuianID(Long.parseLong(soBezGeom.getString("ruian_id", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "so_bez_geometrie.ruian_id:", e);
                 }
 
                 try {
-                    so.setPodlazi(Integer.parseInt(soBezGeom.getString("pocet_podlazi")));
-                } catch (Exception e) {
+                    so.setPodlazi(Integer.parseInt(soBezGeom.getString("pocet_podlazi", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "so_bez_geometrie.pocet_podlazi:", e);
                 }
 
                 try {
-                    so.setByty(Integer.parseInt(soBezGeom.getString("pocet_bytu")));
-                } catch (Exception e) {
+                    so.setByty(Integer.parseInt(soBezGeom.getString("pocet_bytu", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "so_bez_geometrie.pocet_bytu:", e);
                 }
 
-                try {
-                    so.setZpusobVyuziti(soBezGeom.getString("zpusob_vyuziti"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.zpusob_vyuziti:", e);
-                }
-
-                try {
-                    so.setZpusobVyuzitiKod(soBezGeom.getString("zpusob_vyuziti_kod"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.zpusob_vyuziti_kod:", e);
-                }
-
-                try {
-                    so.setZpusobVyuzitiKey(soBezGeom.getString("zpusob_vyuziti_key"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.zpusob_vyuziti_key:", e);
-                }
-
-                try {
-                    so.setZpusobVyuzitiVal(soBezGeom.getString("zpusob_vyuziti_val"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.zpusob_vyuziti_val:", e);
-                }
-
-                try {
-                    so.setDokonceni(soBezGeom.getString("dokonceni"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.dokonceni:", e);
-                }
-
-                try {
-                    so.setPlatiOd(soBezGeom.getString("plati_od"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.plati_od:", e);
-                }
-
-                try {
-                    so.setVzdalenost(Float.parseFloat(soBezGeom.getString("vzdalenost")));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "so_bez_geometrie.vzdalenost:", e);
-                }
-
-                m_so_bez_geometrie.add(so);
-            }
-        } catch (Exception e) {
-            Logging.log(Level.WARNING, "so_bez_geometrie:", e);
+                so.setZpusobVyuziti(soBezGeom.getString("zpusob_vyuziti", null));
+
+                so.setZpusobVyuzitiKod(soBezGeom.getString("zpusob_vyuziti_kod", null));
+
+                so.setZpusobVyuzitiKey(soBezGeom.getString("zpusob_vyuziti_key", null));
+
+                so.setZpusobVyuzitiVal(soBezGeom.getString("zpusob_vyuziti_val", null));
+
+                so.setDokonceni(soBezGeom.getString("dokonceni", null));
+
+                so.setPlatiOd(soBezGeom.getString("plati_od", null));
+
+                try {
+                    so.setVzdalenost(Float.parseFloat(soBezGeom.getString("vzdalenost", null)));
+                } catch (NumberFormatException e) {
+                    Logging.warn("so_bez_geometrie.vzdalenost: {0}", e);
+                }
+
+                mSoBezGeometrie.add(so);
+            }
+        } catch (ClassCastException e) {
+            Logging.warn("so_bez_geometrie: {0}", e);
         }
     }
@@ -389,6 +327,6 @@
 
                 try {
-                    am.setRuianID(Long.parseLong(adresniMisto.getString("ruian_id")));
-                } catch (Exception e) {
+                    am.setRuianID(Long.parseLong(adresniMisto.getString("ruian_id", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.ruian_id:", e);
                 }
@@ -396,123 +334,85 @@
                 try {
                     JsonArray node = adresniMisto.getJsonArray("pozice");
-                    am.setPosition(new LatLon(
-                            LatLon.roundToOsmPrecision(node.getJsonNumber(1).doubleValue()),
-                            LatLon.roundToOsmPrecision(node.getJsonNumber(0).doubleValue()))
-                            );
-                } catch (Exception e) {
+                    if (node.size() >= 2) {
+                        am.setPosition(new LatLon(
+                                LatLon.roundToOsmPrecision(node.getJsonNumber(1).doubleValue()),
+                                LatLon.roundToOsmPrecision(node.getJsonNumber(0).doubleValue()))
+                        );
+                    }
+                } catch (ClassCastException e) {
                     Logging.log(Level.WARNING, "adresni_mista.pozice:", e);
                 }
 
                 try {
-                    am.setBudovaID(Long.parseLong(adresniMisto.getString("budova_kod")));
-                } catch (Exception e) {
+                    am.setBudovaID(Long.parseLong(adresniMisto.getString("budova_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.budova_kod:", e);
                 }
 
-                try {
-                    am.setCisloTyp(adresniMisto.getString("cislo_typ"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.cislo_typ:", e);
-                }
-
-                try {
-                    am.setCisloDomovni(adresniMisto.getString("cislo_domovni"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.cislo_domovni:", e);
-                }
-
-                try {
-                    am.setCisloOrientacni(adresniMisto.getString("cislo_orientacni"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.cislo_orientacni:", e);
-                }
-
-                try {
-                    am.setUliceID(Long.parseLong(adresniMisto.getString("ulice_kod")));
-                } catch (Exception e) {
+                am.setCisloTyp(adresniMisto.getString("cislo_typ", null));
+
+                am.setCisloDomovni(adresniMisto.getString("cislo_domovni", null));
+
+                am.setCisloOrientacni(adresniMisto.getString("cislo_orientacni", null));
+
+                try {
+                    am.setUliceID(Long.parseLong(adresniMisto.getString("ulice_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.ulice_kod:", e);
                 }
 
-                try {
-                    am.setUlice(adresniMisto.getString("ulice"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.ulice:", e);
-                }
-
-                try {
-                    am.setCastObceID(Long.parseLong(adresniMisto.getString("cast_obce_kod")));
-                } catch (Exception e) {
+                am.setUlice(adresniMisto.getString("ulice", null));
+
+                try {
+                    am.setCastObceID(Long.parseLong(adresniMisto.getString("cast_obce_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.cast_obce_kod:", e);
                 }
 
-                try {
-                    am.setCastObce(adresniMisto.getString("cast_obce"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.m_cast_obce:", e);
-                }
-
-                try {
-                    am.setMestskaCastID(Long.parseLong(adresniMisto.getString("mestska_cast_kod")));
-                } catch (Exception e) {
+                am.setCastObce(adresniMisto.getString("cast_obce", null));
+
+                try {
+                    am.setMestskaCastID(Long.parseLong(adresniMisto.getString("mestska_cast_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.mestska_cast_kod:", e);
                 }
 
-                try {
-                    am.setMestskaCast(adresniMisto.getString("mestska_cast"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.mestska_cast:", e);
-                }
-
-                try {
-                    am.setObecID(Long.parseLong(adresniMisto.getString("obec_kod")));
-                } catch (Exception e) {
+                am.setMestskaCast(adresniMisto.getString("mestska_cast", null));
+
+                try {
+                    am.setObecID(Long.parseLong(adresniMisto.getString("obec_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.obec_kod:", e);
                 }
 
-                try {
-                    am.setObec(adresniMisto.getString("obec"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.obec:", e);
-                }
-
-                try {
-                    am.setOkresID(Long.parseLong(adresniMisto.getString("okres_kod")));
-                } catch (Exception e) {
+                am.setObec(adresniMisto.getString("obec", null));
+
+                try {
+                    am.setOkresID(Long.parseLong(adresniMisto.getString("okres_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.okres_kod:", e);
                 }
 
-                try {
-                    am.setOkres(adresniMisto.getString("okres"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.okres:", e);
-                }
-
-                try {
-                    am.setKrajID(Long.parseLong(adresniMisto.getString("kraj_kod")));
-                } catch (Exception e) {
+                am.setOkres(adresniMisto.getString("okres", null));
+
+                try {
+                    am.setKrajID(Long.parseLong(adresniMisto.getString("kraj_kod", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.kraj_kod:", e);
                 }
 
-                try {
-                    am.setKraj(adresniMisto.getString("kraj"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.kraj:", e);
-                }
-
-                try {
-                    am.setPsc(adresniMisto.getString("psc"));
-                } catch (Exception e) {
-                    Logging.log(Level.WARNING, "adresni_mista.psc:", e);
-                }
-
-                try {
-                    am.setVzdalenost(Float.parseFloat(adresniMisto.getString("vzdalenost")));
-                } catch (Exception e) {
+                am.setKraj(adresniMisto.getString("kraj", null));
+
+                am.setPsc(adresniMisto.getString("psc", null));
+
+                try {
+                    am.setVzdalenost(Float.parseFloat(adresniMisto.getString("vzdalenost", null)));
+                } catch (NumberFormatException e) {
                     Logging.log(Level.WARNING, "adresni_mista.vzdalenost:", e);
                 }
 
-                m_adresni_mista.add(am);
-            }
-        } catch (Exception e) {
+                mAdresniMista.add(am);
+            }
+        } catch (ClassCastException e) {
             Logging.log(Level.WARNING, "adresni_mista:", e);
         }
@@ -524,28 +424,15 @@
 
             try {
-                m_parcela_ruian_id = Long.parseLong(parcela.getString("ruian_id"));
-            } catch (Exception e) {
+                mParcelaRuianId = Long.parseLong(parcela.getString("ruian_id", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "parcela.ruian_id:", e);
             }
 
-            try {
-                m_parcela_druh_pozemku = parcela.getString("druh_pozemku");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "parcela.druh_pozemku:", e);
-            }
-
-            try {
-                m_parcela_zpusob_vyuziti = parcela.getString("zpusob_vyuziti");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "parcela.zpusob_vyuziti:", e);
-            }
-
-            try {
-                m_parcela_plati_od = parcela.getString("plati_od");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "parcela.plati_od:", e);
-            }
-
-        } catch (Exception e) {
+            mParcelaDruhPozemku = parcela.getString("druh_pozemku", null);
+
+            mParcelaZpusobVyuziti = parcela.getString("zpusob_vyuziti", null);
+
+            mParcelaPlatiOd = parcela.getString("plati_od", null);
+        } catch (InvalidArgumentException e) {
             Logging.log(Level.WARNING, "parcela:", e);
         }
@@ -557,16 +444,12 @@
 
             try {
-                m_ulice_ruian_id = Long.parseLong(ulice.getString("ruian_id"));
-            } catch (Exception e) {
+                mUliceRuianId = Long.parseLong(ulice.getString("ruian_id", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "ulice.ruian_id:", e);
             }
 
-            try {
-                m_ulice_jmeno = ulice.getString("jmeno");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "ulice.jmeno:", e);
-            }
-
-        } catch (Exception e) {
+            mUliceJmeno = ulice.getString("jmeno", null);
+
+        } catch (IllegalArgumentException e) {
             Logging.log(Level.WARNING, "ulice:", e);
         }
@@ -578,52 +461,36 @@
 
             try {
-                m_katastr_ruian_id = Long.parseLong(katastr.getString("ruian_id"));
-            } catch (Exception e) {
+                mKatastrRuianId = Long.parseLong(katastr.getString("ruian_id", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "katastr.ruian_id:", e);
             }
 
-            try {
-                m_katastr_nazev = katastr.getString("nazev");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "katastr.nazev:", e);
-            }
-
-            try {
-                m_katastr_obec_kod = Long.parseLong(katastr.getString("obec_kod"));
-            } catch (Exception e) {
+            mKatastrNazev = katastr.getString("nazev", null);
+
+            try {
+                mKatastrObecKod = Long.parseLong(katastr.getString("obec_kod", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "katastr.obec_kod:", e);
             }
 
-            try {
-                m_katastr_obec = katastr.getString("obec");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "katastr.okres:", e);
-            }
-
-            try {
-                m_katastr_okres_kod = Long.parseLong(katastr.getString("okres_kod"));
-            } catch (Exception e) {
+            mKatastrObec = katastr.getString("obec", null);
+
+            try {
+                mKatastrOkresKod = Long.parseLong(katastr.getString("okres_kod", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "katastr.okres_kod:", e);
             }
 
-            try {
-                m_katastr_okres = katastr.getString("okres");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "katastr.okres:", e);
-            }
-
-            try {
-                m_katastr_kraj_kod = Long.parseLong(katastr.getString("kraj_kod"));
-            } catch (Exception e) {
+            mKatastrOkres = katastr.getString("okres", null);
+
+            try {
+                mKatastrKrajKod = Long.parseLong(katastr.getString("kraj_kod", null));
+            } catch (NumberFormatException e) {
                 Logging.log(Level.WARNING, "katastr.kraj_kod:", e);
             }
 
-            try {
-                m_katastr_kraj = katastr.getString("kraj");
-            } catch (Exception e) {
-                Logging.log(Level.WARNING, "katastr.kraj:", e);
-            }
-
-        } catch (Exception e) {
+            mKatastrKraj = katastr.getString("kraj", null);
+
+        } catch (IllegalArgumentException e) {
             Logging.log(Level.WARNING, "katastr:", e);
         }
@@ -636,139 +503,151 @@
     public String getHtml() {
 
-        String icon_ext_link = "<img src=" +getClass().getResource(
+        String iconExtLink = "<img src=" +getClass().getResource(
                 "/images/dialogs/open-external-link.png")+" border=0 alt=\"Zobrazit na externích stránkách\"/>";
-        String icon_ext_link_ruian = "<img src=" +getClass().getResource(
+        String iconExtLinkRuian = "<img src=" +getClass().getResource(
                 "/images/dialogs/open-external-link.png")+" border=0 alt=\"Zobrazit na stránkách RUIAN\"/>";
-        String icon_ext_link_kn = "<img src=" +getClass().getResource(
+        String iconExtLinkKn = "<img src=" +getClass().getResource(
                 "/images/dialogs/open-external-link-kn.png")+" border=0 alt=\"Zobrazit na stránkách katastru nemovitostí\"/>";
-        String icon_copy_tags = "<img src=" +getClass().getResource(
+        String iconCopyTags = "<img src=" +getClass().getResource(
                 "/images/dialogs/copy-tags.png")+" border=0 alt=\"Kopírovat tagy\"/>";
-        String icon_create_addr = "<img src=" +getClass().getResource(
+        String iconCreateAddr = "<img src=" +getClass().getResource(
                 "/images/dialogs/create-addr.png")+" border=0 alt=\"Vytvořit adresní bod\"/>";
-        String icon_create_addr_ruian = "<img src=" +getClass().getResource(
+        String iconCreateAddrRuian = "<img src=" +getClass().getResource(
                 "/images/dialogs/create-addr-ruian.png")+" border=0 alt=\"Vytvořit adresní bod dle RUIANu\"/>";
-        String icon_ruian_error = "<img src=" +getClass().getResource(
+        String iconRuianError = "<img src=" +getClass().getResource(
                 "/images/dialogs/create-bug-report.png")+" border=0 alt=\"Nahlásit problém v datech\"/>";
         // CHECKSTYLE.OFF: LineLength
-        String url_cpost = "http://www.postaonline.cz/vyhledani-psc?p_p_id=psc_WAR_pcpvpp&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_psc_WAR_pcpvpp_struts.portlet.action=%2Fview%2FdetailPost&_psc_WAR_pcpvpp_struts.portlet.mode=view&_psc_WAR_pcpvpp_zipCode=";
+        String urlCpost = "https://www.postaonline.cz/vyhledani-psc?p_p_id=psc_WAR_pcpvpp&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_psc_WAR_pcpvpp_struts.portlet.action=%2Fview%2FdetailPost&_psc_WAR_pcpvpp_struts.portlet.mode=view&_psc_WAR_pcpvpp_zipCode=";
         // CHECKSTYLE.ON: LineLength
-        String url_stavebni_objekt = "http://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/";
-        String url_adresni_misto = "http://vdp.cuzk.cz/vdp/ruian/adresnimista/";
-        String url_parcela = "http://vdp.cuzk.cz/vdp/ruian/parcely/";
-        String url_katastralni_uzemi = "http://vdp.cuzk.cz/vdp/ruian/katastralniuzemi/";
-        String url_ulice = "http://vdp.cuzk.cz/vdp/ruian/ulice/";
-        String url_mistni_cast = "http://vdp.cuzk.cz/vdp/ruian/castiobce/";
-        String url_mestska_cast = "http://vdp.cuzk.cz/vdp/ruian/mestskecasti/";
-        String url_obec = "http://vdp.cuzk.cz/vdp/ruian/obce/";
-        String url_okres = "http://vdp.cuzk.cz/vdp/ruian/okresy/";
-        String url_kraj = "http://vdp.cuzk.cz/vdp/ruian/vusc/";
-        String url_vlastnici = "http://vdp.cuzk.cz/vdp/ruian/vlastnici?typ=";
-
-        String url_ruian_error = "http://ruian.poloha.net/building.php?kod=";
+        String urlStavebniObjekt = "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/";
+        String urlAdresniMisto = "https://vdp.cuzk.cz/vdp/ruian/adresnimista/";
+        String urlParcela = "https://vdp.cuzk.cz/vdp/ruian/parcely/";
+        String urlKatastralniUzemi = "https://vdp.cuzk.cz/vdp/ruian/katastralniuzemi/";
+        String urlUlice = "https://vdp.cuzk.cz/vdp/ruian/ulice/";
+        String urlMistniCast = "https://vdp.cuzk.cz/vdp/ruian/castiobce/";
+        String urlMestskaCast = "https://vdp.cuzk.cz/vdp/ruian/mestskecasti/";
+        String urlObec = "https://vdp.cuzk.cz/vdp/ruian/obce/";
+        String urlOkres = "https://vdp.cuzk.cz/vdp/ruian/okresy/";
+        String urlKraj = "https://vdp.cuzk.cz/vdp/ruian/vusc/";
+        String urlVlastnici = "https://vdp.cuzk.cz/vdp/ruian/vlastnici?typ=";
+
+        String urlRuianError = "http://ruian.poloha.net/building.php?kod=";
 
         StringBuilder r = new StringBuilder();
 
-        if (m_objekt_ruian_id == 0 &&
-            m_parcela_ruian_id == 0 &&
-            m_adresni_mista.size() == 0 &&
-            m_ulice_ruian_id == 0 &&
-            m_katastr_ruian_id == 0)
+        if (mObjektRuianId == 0 &&
+            mParcelaRuianId == 0 &&
+            mAdresniMista.isEmpty() &&
+            mUliceRuianId == 0 &&
+            mKatastrRuianId == 0)
             return "";
 
         r.append("<html><body bgcolor=\"white\" color=\"black\" ><table><tr><td>");
         r.append("<br/>");
-        if (m_objekt_ruian_id > 0) {
-            r.append("<i><u>Informace o budově</u></i><br/>")
-             .append("<b>RUIAN id: </b>"+ m_objekt_ruian_id +"&nbsp;&nbsp;<a href="+ url_stavebni_objekt + m_objekt_ruian_id +">"
-                    + icon_ext_link_ruian + "</a>")
-             .append("&nbsp;&nbsp;<a href="+ url_vlastnici + "so&id=" + m_objekt_ruian_id + ">"+ icon_ext_link_kn +"</a>")
-             .append("&nbsp;&nbsp;<a href=file://tags.copy/building>"+ icon_copy_tags +"</a>")
-             .append("&nbsp;&nbsp;<a href=" + url_ruian_error + m_objekt_ruian_id + ">"+ icon_ruian_error +"</a><br/>");
-            if (m_adresni_mista.size() == 0) r.append("<b>Budova: </b> bez č.p./č.e<br/>");
-            else if (m_adresni_mista.get(0).getCisloTyp().equals("Číslo popisné")) r.append("<b>Budova: </b>s číslem popisným<br/>");
+        if (mObjektRuianId > 0) {
+            r.append("<i><u>Informace o budově</u></i><br/>").append("<b>RUIAN id: </b>")
+                    .append(mObjektRuianId).append("&nbsp;&nbsp;<a href=").append(urlStavebniObjekt)
+                    .append(mObjektRuianId).append(">").append(iconExtLinkRuian).append("</a>")
+                    .append("&nbsp;&nbsp;<a href=").append(urlVlastnici).append("so&id=")
+                    .append(mObjektRuianId).append(">").append(iconExtLinkKn).append("</a>")
+                    .append("&nbsp;&nbsp;<a href=file://tags.copy/building>").append(iconCopyTags).append("</a>")
+                    .append("&nbsp;&nbsp;<a href=").append(urlRuianError).append(mObjektRuianId).append(">")
+                    .append(iconRuianError).append("</a><br/>");
+            if (mAdresniMista.isEmpty()) r.append("<b>Budova: </b> bez č.p./č.e<br/>");
+            else if ("Číslo popisné".equals(mAdresniMista.get(0).getCisloTyp())) r.append("<b>Budova: </b>s číslem popisným<br/>");
             else r.append("<b>Budova: </b>s číslem evidenčním<br/>");
-            if (m_objekt_podlazi > 0) r.append("<b>Počet podlaží: </b>" + m_objekt_podlazi + "<br/>");
-            if (m_objekt_byty > 0) r.append("<b>Počet bytů: </b>" + m_objekt_byty + "<br/>");
-            r.append("<b>Způsob využití: </b>" + m_objekt_zpusob_vyuziti + "<br/>")
-             .append("<b>Datum dokončení: </b>" + m_objekt_dokonceni + "<br/>")
-             .append("<b>Platí od: </b>" + m_objekt_plati_od + "<br/>");
-
-            if (m_adresni_mista.size() > 1) {
+            if (mObjektPodlazi > 0) r.append("<b>Počet podlaží: </b>").append(mObjektPodlazi).append("<br/>");
+            if (mObjektByty > 0) r.append("<b>Počet bytů: </b>").append(mObjektByty).append("<br/>");
+            r.append("<b>Způsob využití: </b>").append(mObjektZpusobVyuziti).append("<br/>")
+                    .append("<b>Datum dokončení: </b>").append(mObjektDokonceni).append("<br/>")
+                    .append("<b>Platí od: </b>").append(mObjektPlatiOd).append("<br/>");
+
+            if (mAdresniMista.size() > 1) {
                 r.append("<i><u>Informace o adrese</u></i><br/>");
                 // More address places
                 int i = 0;
-                r.append("<br/>")
-                 .append("<b>" + m_adresni_mista.get(i).getCisloTyp() + "</b> (více adres)<b>: </b>"
-                        + m_adresni_mista.get(i).getCisloDomovni() + "<br/>")
-                 .append("<b>Část obce: </b>" + m_adresni_mista.get(i).getCastObce())
-                 .append("&nbsp;&nbsp;<a href="+ url_mistni_cast + m_adresni_mista.get(i).getCastObceID() +">" + icon_ext_link_ruian + "</a><br/>");
-                if (m_adresni_mista.get(i).getMestskaCast().length() > 0) {
-                    r.append("<b>Městská část: </b>" + m_adresni_mista.get(i).getMestskaCast())
-                     .append("&nbsp;&nbsp;<a href="+ url_mestska_cast + m_adresni_mista.get(i).getMestskaCastID() +">"
-                            + icon_ext_link_ruian + "</a><br/>");
-                }
-                r.append("<b>Obec: </b>" + m_adresni_mista.get(i).getObec())
-                 .append("&nbsp;&nbsp;<a href="+ url_obec + m_adresni_mista.get(i).getObecID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>Okres: </b>" + m_adresni_mista.get(i).getOkres())
-                 .append("&nbsp;&nbsp;<a href="+ url_okres + m_adresni_mista.get(i).getOkresID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>Kraj: </b>" + m_adresni_mista.get(i).getKraj())
-                 .append("&nbsp;&nbsp;<a href="+ url_kraj + m_adresni_mista.get(i).getKrajID() +">" + icon_ext_link_ruian + "</a><br/>");
-
-            } else if (m_adresni_mista.size() == 1
-                    && (m_adresni_mista.get(0).getCisloDomovni() == null || m_adresni_mista.get(0).getCisloDomovni().isEmpty())) {
+                r.append("<br/>").append("<b>").append(mAdresniMista.get(i).getCisloTyp())
+                        .append("</b> (více adres)<b>: </b>").append(mAdresniMista.get(i).getCisloDomovni())
+                        .append("<br/>").append("<b>Část obce: </b>").append(mAdresniMista.get(i).getCastObce())
+                        .append("&nbsp;&nbsp;<a href=").append(urlMistniCast).append(mAdresniMista.get(i).getCastObceID())
+                        .append(">").append(iconExtLinkRuian).append("</a><br/>");
+                if (!mAdresniMista.get(i).getMestskaCast().isEmpty()) {
+                    r.append("<b>Městská část: </b>").append(mAdresniMista.get(i).getMestskaCast())
+                            .append("&nbsp;&nbsp;<a href=").append(urlMestskaCast)
+                            .append(mAdresniMista.get(i).getMestskaCastID()).append(">")
+                            .append(iconExtLinkRuian).append("</a><br/>");
+                }
+                r.append("<b>Obec: </b>").append(mAdresniMista.get(i).getObec()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlObec).append(mAdresniMista.get(i).getObecID()).append(">")
+                        .append(iconExtLinkRuian).append("</a><br/>").append("<b>Okres: </b>")
+                        .append(mAdresniMista.get(i).getOkres()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlOkres).append(mAdresniMista.get(i).getOkresID()).append(">")
+                        .append(iconExtLinkRuian).append("</a><br/>").append("<b>Kraj: </b>")
+                        .append(mAdresniMista.get(i).getKraj()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlKraj).append(mAdresniMista.get(i).getKrajID()).append(">")
+                        .append(iconExtLinkRuian).append("</a><br/>");
+
+            } else if (mAdresniMista.size() == 1
+                    && (mAdresniMista.get(0).getCisloDomovni() == null || mAdresniMista.get(0).getCisloDomovni().isEmpty())) {
                 // Without building number
                 int i = 0;
-                r.append("<br/>")
-                 .append("<i><u>Informace o adrese</u></i><br/>")
-                 .append("<b>Budova: </b>" + m_adresni_mista.get(i).getCisloTyp() + "<br/>");
-                if (m_adresni_mista.get(i).getMestskaCast().length() > 0) {
-                    r.append("<b>Městská část: </b>" + m_adresni_mista.get(i).getMestskaCast())
-                     .append("&nbsp;&nbsp;<a href="+ url_mestska_cast + m_adresni_mista.get(i).getMestskaCastID() +">"
-                            + icon_ext_link_ruian + "</a><br/>");
-                }
-                r.append("<b>Obec: </b>" + m_adresni_mista.get(i).getObec())
-                 .append("&nbsp;&nbsp;<a href="+ url_obec + m_adresni_mista.get(i).getObecID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>Okres: </b>" + m_adresni_mista.get(i).getOkres())
-                 .append("&nbsp;&nbsp;<a href="+ url_okres + m_adresni_mista.get(i).getOkresID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>Kraj: </b>" + m_adresni_mista.get(i).getKraj())
-                 .append("&nbsp;&nbsp;<a href="+ url_kraj + m_adresni_mista.get(i).getKrajID() +">" + icon_ext_link_ruian + "</a><br/>");
-
-            } else if (m_adresni_mista.size() == 1) {
+                r.append("<br/>").append("<i><u>Informace o adrese</u></i><br/>").append("<b>Budova: </b>")
+                        .append(mAdresniMista.get(i).getCisloTyp()).append("<br/>");
+                if (mAdresniMista.get(i).getMestskaCast().length() > 0) {
+                    r.append("<b>Městská část: </b>").append(mAdresniMista.get(i).getMestskaCast())
+                            .append("&nbsp;&nbsp;<a href=").append(urlMestskaCast)
+                            .append(mAdresniMista.get(i).getMestskaCastID()).append(">").append(iconExtLinkRuian)
+                            .append("</a><br/>");
+                }
+                r.append("<b>Obec: </b>").append(mAdresniMista.get(i).getObec()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlObec).append(mAdresniMista.get(i).getObecID()).append(">").append(iconExtLinkRuian)
+                        .append("</a><br/>").append("<b>Okres: </b>").append(mAdresniMista.get(i).getOkres())
+                        .append("&nbsp;&nbsp;<a href=").append(urlOkres).append(mAdresniMista.get(i).getOkresID())
+                        .append(">").append(iconExtLinkRuian).append("</a><br/>").append("<b>Kraj: </b>")
+                        .append(mAdresniMista.get(i).getKraj()).append("&nbsp;&nbsp;<a href=").append(urlKraj)
+                        .append(mAdresniMista.get(i).getKrajID()).append(">").append(iconExtLinkRuian).append("</a><br/>");
+
+            } else if (mAdresniMista.size() == 1) {
                 // Only one address place
                 int i = 0;
                 String x = "";
-                String x_name = "";
-                if (!m_adresni_mista.get(i).getCisloOrientacni().isEmpty()) {
-                    x = "/" + m_adresni_mista.get(i).getCisloOrientacni();
-                    x_name = "/orientační";
+                String xName = "";
+                if (!mAdresniMista.get(i).getCisloOrientacni().isEmpty()) {
+                    x = "/" + mAdresniMista.get(i).getCisloOrientacni();
+                    xName = "/orientační";
                 }
                 r.append("<br/>")
-                 .append("<i><u>Informace o adrese</u></i><br/>")
-                 .append("<b>RUIAN id: </b>"+ m_adresni_mista.get(i).getRuianID() +"&nbsp;&nbsp;<a href="+ url_adresni_misto
-                        + m_adresni_mista.get(i).getRuianID() +">" + icon_ext_link_ruian + "</a>")
-                 .append("&nbsp;&nbsp;<a href=file://tags.copy/address:"+i+">"+ icon_copy_tags +"</a>")
-                 .append("&nbsp;&nbsp;<a href=file://tags.create/address:"+i+">"+ icon_create_addr +"</a>")
-                 .append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:"+i+">"+ icon_create_addr_ruian +"</a><br/>")
-                 .append("<b>" + m_adresni_mista.get(i).getCisloTyp() + x_name + ": </b>" + m_adresni_mista.get(i).getCisloDomovni() + x)
+                        .append("<i><u>Informace o adrese</u></i><br/>").append("<b>RUIAN id: </b>")
+                        .append(mAdresniMista.get(i).getRuianID()).append("&nbsp;&nbsp;<a href=").append(urlAdresniMisto)
+                        .append(mAdresniMista.get(i).getRuianID()).append(">").append(iconExtLinkRuian).append("</a>")
+                        .append("&nbsp;&nbsp;<a href=file://tags.copy/address:").append(i).append(">").append(iconCopyTags)
+                        .append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create/address:").append(i).append(">")
+                        .append(iconCreateAddr).append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:")
+                        .append(i).append(">").append(iconCreateAddrRuian).append("</a><br/>").append("<b>")
+                        .append(mAdresniMista.get(i).getCisloTyp()).append(xName).append(": </b>")
+                        .append(mAdresniMista.get(i).getCisloDomovni()).append(x)
                  .append("<br/>");
-                if (!m_adresni_mista.get(i).getUlice().isEmpty()) {
-                    r.append("<b>Ulice: </b>" + m_adresni_mista.get(i).getUlice())
-                     .append("&nbsp;&nbsp;<a href="+ url_ulice + m_adresni_mista.get(i).getUliceID() +">" + icon_ext_link_ruian + "</a><br/>");
-                }
-                r.append("<b>Část obce: </b>" + m_adresni_mista.get(i).getCastObce())
-                 .append("&nbsp;&nbsp;<a href="+ url_mistni_cast + m_adresni_mista.get(i).getCastObceID() +">" + icon_ext_link_ruian + "</a><br/>");
-                if (m_adresni_mista.get(i).getMestskaCast().length() > 0) {
-                    r.append("<b>Městská část: </b>" + m_adresni_mista.get(i).getMestskaCast())
-                     .append("&nbsp;&nbsp;<a href="+ url_mestska_cast + m_adresni_mista.get(i).getMestskaCastID() +">"
-                            + icon_ext_link_ruian + "</a><br/>");
-                }
-                r.append("<b>Obec: </b>" + m_adresni_mista.get(i).getObec())
-                 .append("&nbsp;&nbsp;<a href="+ url_obec + m_adresni_mista.get(i).getObecID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>Okres: </b>" + m_adresni_mista.get(i).getOkres())
-                 .append("&nbsp;&nbsp;<a href="+ url_okres + m_adresni_mista.get(i).getOkresID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>Kraj: </b>" + m_adresni_mista.get(i).getKraj())
-                 .append("&nbsp;&nbsp;<a href="+ url_kraj + m_adresni_mista.get(i).getKrajID() +">" + icon_ext_link_ruian + "</a><br/>")
-                 .append("<b>PSČ: </b>" + m_adresni_mista.get(i).getPsc())
-                 .append("&nbsp;&nbsp;<a href="+ url_cpost + m_adresni_mista.get(i).getPsc() +">" + icon_ext_link_ruian + "</a><br/>");
+                if (!mAdresniMista.get(i).getUlice().isEmpty()) {
+                    r.append("<b>Ulice: </b>").append(mAdresniMista.get(i).getUlice()).append("&nbsp;&nbsp;<a href=")
+                            .append(urlUlice).append(mAdresniMista.get(i).getUliceID()).append(">").append(iconExtLinkRuian)
+                            .append("</a><br/>");
+                }
+                r.append("<b>Část obce: </b>").append(mAdresniMista.get(i).getCastObce()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlMistniCast).append(mAdresniMista.get(i).getCastObceID()).append(">").append(iconExtLinkRuian)
+                        .append("</a><br/>");
+                if (mAdresniMista.get(i).getMestskaCast().length() > 0) {
+                    r.append("<b>Městská část: </b>").append(mAdresniMista.get(i).getMestskaCast()).append("&nbsp;&nbsp;<a href=")
+                            .append(urlMestskaCast).append(mAdresniMista.get(i).getMestskaCastID()).append(">")
+                            .append(iconExtLinkRuian).append("</a><br/>");
+                }
+                r.append("<b>Obec: </b>").append(mAdresniMista.get(i).getObec()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlObec).append(mAdresniMista.get(i).getObecID()).append(">").append(iconExtLinkRuian)
+                        .append("</a><br/>").append("<b>Okres: </b>").append(mAdresniMista.get(i).getOkres())
+                        .append("&nbsp;&nbsp;<a href=").append(urlOkres).append(mAdresniMista.get(i).getOkresID())
+                        .append(">").append(iconExtLinkRuian).append("</a><br/>").append("<b>Kraj: </b>")
+                        .append(mAdresniMista.get(i).getKraj()).append("&nbsp;&nbsp;<a href=").append(urlKraj)
+                        .append(mAdresniMista.get(i).getKrajID()).append(">").append(iconExtLinkRuian).append("</a><br/>")
+                        .append("<b>PSČ: </b>").append(mAdresniMista.get(i).getPsc()).append("&nbsp;&nbsp;<a href=")
+                        .append(urlCpost).append(mAdresniMista.get(i).getPsc()).append(">").append(iconExtLinkRuian).append("</a><br/>");
 
             }
@@ -777,15 +656,13 @@
 
         // Reported errors
-        if (m_objekt_ruian_id > 0 && !m_err_user.isEmpty()) {
-            r.append("<i><u>Nahlášený problém</u></i>")
-             .append("&nbsp;&nbsp;<a href=" + url_ruian_error + m_objekt_ruian_id + ">"+ icon_ext_link +"</a><br/>")
-             .append("<b>Nahlásil: </b>" + m_err_user)
-             .append("<br/>")
-             .append("<b>Dne: </b>" + m_err_date)
-             .append("<br/>")
-             .append("<b>Typ problému: </b>" + m_err_type)
+        if (mObjektRuianId > 0 && !mErrUser.isEmpty()) {
+            r.append("<i><u>Nahlášený problém</u></i>").append("&nbsp;&nbsp;<a href=").append(urlRuianError)
+                    .append(mObjektRuianId).append(">").append(iconExtLink).append("</a><br/>")
+                    .append("<b>Nahlásil: </b>").append(mErrUser)
+                    .append("<br/>").append("<b>Dne: </b>").append(mErrDate)
+                    .append("<br/>").append("<b>Typ problému: </b>").append(mErrType)
              .append("<br/>");
-            if (!m_err_note.isEmpty()) {
-                r.append("<b>Poznámka: </b>" + m_err_note)
+            if (!mErrNote.isEmpty()) {
+                r.append("<b>Poznámka: </b>").append(mErrNote)
                  .append("<br/>");
             }
@@ -794,19 +671,22 @@
 
         // Address places
-        if (m_adresni_mista.size() > 1 && m_objekt_ruian_id > 0) {
+        if (mAdresniMista.size() > 1 && mObjektRuianId > 0) {
             String x = "";
-            if (m_adresni_mista.get(0).getCisloTyp().equals("Číslo evidenční")) {
+            if ("Číslo evidenční".equals(mAdresniMista.get(0).getCisloTyp())) {
                 x = "ev.";
             }
             r.append("<i><u>Adresní místa</u></i><br/>");
-            for (int i = 0; i < m_adresni_mista.size(); i++) {
-                r.append(m_adresni_mista.get(i).getUlice() + " " + x + m_adresni_mista.get(i).getCisloDomovni());
-                if (!m_adresni_mista.get(i).getCisloOrientacni().isEmpty()) {
-                    r.append("/" + m_adresni_mista.get(i).getCisloOrientacni());
-                }
-                r.append("&nbsp;&nbsp;<a href="+ url_adresni_misto + m_adresni_mista.get(i).getRuianID() + ">"+ icon_ext_link_ruian +"</a> ")
-                 .append("&nbsp;&nbsp;<a href=file://tags.copy/address:"+i+">"+ icon_copy_tags +"</a>")
-                 .append("&nbsp;&nbsp;<a href=file://tags.create/address:"+i+">"+ icon_create_addr +"</a>")
-                 .append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:"+i+">"+ icon_create_addr_ruian +"</a>")
+            for (int i = 0; i < mAdresniMista.size(); i++) {
+                r.append(mAdresniMista.get(i).getUlice()).append(" ").append(x).append(mAdresniMista.get(i).getCisloDomovni());
+                if (!mAdresniMista.get(i).getCisloOrientacni().isEmpty()) {
+                    r.append("/").append(mAdresniMista.get(i).getCisloOrientacni());
+                }
+                r.append("&nbsp;&nbsp;<a href=").append(urlAdresniMisto).append(mAdresniMista.get(i).getRuianID())
+                        .append(">").append(iconExtLinkRuian).append("</a> ")
+                        .append("&nbsp;&nbsp;<a href=file://tags.copy/address:").append(i).append(">")
+                        .append(iconCopyTags).append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create/address:")
+                        .append(i).append(">").append(iconCreateAddr).append("</a>")
+                        .append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:").append(i).append(">")
+                        .append(iconCreateAddrRuian).append("</a>")
                  .append("<br/>");
             }
@@ -815,76 +695,76 @@
 
         // Land
-        if (m_parcela_ruian_id > 0) {
+        if (mParcelaRuianId > 0) {
+            // .append("&nbsp;&nbsp;<a href=file://tags.copy/parcel>"+ icon_copy_tags +"</a>")
             r.append("<i><u>Informace o pozemku</u></i>")
-             .append("<br/>")
-             .append("<b>RUIAN id: </b>"+ m_parcela_ruian_id +"&nbsp;&nbsp;<a href="+ url_parcela + m_parcela_ruian_id +">"
-                    + icon_ext_link_ruian + "</a>")
-             .append("&nbsp;&nbsp;<a href="+ url_vlastnici + "pa&id=" + m_parcela_ruian_id + ">"+ icon_ext_link_kn +"</a><br/>")
-            // .append("&nbsp;&nbsp;<a href=file://tags.copy/parcel>"+ icon_copy_tags +"</a>")
-             .append("<b>Druh pozemku: </b>" + m_parcela_druh_pozemku +"<br/>");
-            if (m_parcela_zpusob_vyuziti != "") r.append("<b>Způsob využití: </b>" + m_parcela_zpusob_vyuziti +"<br/>");
-            r.append("<b>Platí od: </b>" + m_parcela_plati_od +"<br/>")
+                    .append("<br/>").append("<b>RUIAN id: </b>").append(mParcelaRuianId).append("&nbsp;&nbsp;<a href=")
+                    .append(urlParcela).append(mParcelaRuianId).append(">").append(iconExtLinkRuian).append("</a>")
+                    .append("&nbsp;&nbsp;<a href=").append(urlVlastnici).append("pa&id=").append(mParcelaRuianId)
+                    .append(">").append(iconExtLinkKn).append("</a><br/>").append("<b>Druh pozemku: </b>")
+                    .append(mParcelaDruhPozemku).append("<br/>");
+            if (!"".equals(mParcelaZpusobVyuziti)) r.append("<b>Způsob využití: </b>").append(mParcelaZpusobVyuziti).append("<br/>");
+            r.append("<b>Platí od: </b>").append(mParcelaPlatiOd).append("<br/>")
              .append("<br/>");
         }
 
         // Street
-        if (m_ulice_ruian_id > 0) {
-            r.append("<i><u>Informace o ulici</u></i><br/>")
-             .append("<b>RUIAN id: </b>"+ m_ulice_ruian_id +"&nbsp;&nbsp;<a href="+ url_ulice + m_ulice_ruian_id +">" + icon_ext_link_ruian + "</a>")
-             .append("&nbsp;&nbsp;<a href=file://tags.copy/street>"+ icon_copy_tags +"</a><br/>")
-             .append("<b>Jméno: </b>" + m_ulice_jmeno +"<br/>")
+        if (mUliceRuianId > 0) {
+            r.append("<i><u>Informace o ulici</u></i><br/>").append("<b>RUIAN id: </b>").append(mUliceRuianId)
+                    .append("&nbsp;&nbsp;<a href=").append(urlUlice).append(mUliceRuianId).append(">")
+                    .append(iconExtLinkRuian).append("</a>").append("&nbsp;&nbsp;<a href=file://tags.copy/street>")
+                    .append(iconCopyTags).append("</a><br/>").append("<b>Jméno: </b>").append(mUliceJmeno).append("<br/>")
              .append("<br/>");
         }
 
         // Cadastral area
-        if (m_katastr_ruian_id > 0) {
-            r.append("<b>Katastrální území: </b>" + m_katastr_nazev)
-             .append("&nbsp;&nbsp;<a href="+ url_katastralni_uzemi + m_katastr_ruian_id +">" + icon_ext_link_ruian + "</a><br/>")
-             .append("<b>Obec: </b>" + m_katastr_obec)
-             .append("&nbsp;&nbsp;<a href="+ url_obec + m_katastr_obec_kod +">" + icon_ext_link_ruian + "</a><br/>")
-             .append("<b>Okres: </b>" + m_katastr_okres)
-             .append("&nbsp;&nbsp;<a href="+ url_okres + m_katastr_okres_kod +">" + icon_ext_link_ruian + "</a><br/>")
-             .append("<b>Kraj: </b>" + m_katastr_kraj)
-             .append("&nbsp;&nbsp;<a href="+url_kraj + m_katastr_kraj_kod +">" + icon_ext_link_ruian + "</a><br/>")
+        if (mKatastrRuianId > 0) {
+            r.append("<b>Katastrální území: </b>").append(mKatastrNazev).append("&nbsp;&nbsp;<a href=")
+                    .append(urlKatastralniUzemi).append(mKatastrRuianId).append(">").append(iconExtLinkRuian)
+                    .append("</a><br/>").append("<b>Obec: </b>").append(mKatastrObec).append("&nbsp;&nbsp;<a href=")
+                    .append(urlObec).append(mKatastrObecKod).append(">").append(iconExtLinkRuian).append("</a><br/>")
+                    .append("<b>Okres: </b>").append(mKatastrOkres).append("&nbsp;&nbsp;<a href=").append(urlOkres)
+                    .append(mKatastrOkresKod).append(">").append(iconExtLinkRuian).append("</a><br/>")
+                    .append("<b>Kraj: </b>").append(mKatastrKraj).append("&nbsp;&nbsp;<a href=").append(urlKraj)
+                    .append(mKatastrKrajKod).append(">").append(iconExtLinkRuian).append("</a><br/>")
              .append("<br/>");
         }
 
         // Near address places
-        if (!m_adresni_mista.isEmpty() && m_objekt_ruian_id == 0) {
-            String x;
+        if (!mAdresniMista.isEmpty() && mObjektRuianId == 0) {
             r.append("<i><u>Adresní místa v okolí</u></i><br/>")
              .append("<table>");
-            for (int i = 0; i < m_adresni_mista.size(); i++) {
-                x = "";
-                if (m_adresni_mista.get(i).getCisloTyp().equals("Číslo evidenční")) {
-                    x = "ev.";
-                }
-                x += m_adresni_mista.get(i).getCisloDomovni();
-                if (!m_adresni_mista.get(i).getCisloOrientacni().isEmpty()) {
-                    x += "/" + m_adresni_mista.get(i).getCisloOrientacni();
+            for (int i = 0; i < mAdresniMista.size(); i++) {
+                StringBuilder x = new StringBuilder();
+                if ("Číslo evidenční".equals(mAdresniMista.get(i).getCisloTyp())) {
+                    x.append("ev.");
+                }
+                x.append(mAdresniMista.get(i).getCisloDomovni());
+                if (!mAdresniMista.get(i).getCisloOrientacni().isEmpty()) {
+                    x.append("/").append(mAdresniMista.get(i).getCisloOrientacni());
                 }
                 r.append("<tr><td bgcolor=#e5e5ff>");
-                if (!m_adresni_mista.get(i).getUlice().isEmpty()) {
-                    r.append(m_adresni_mista.get(i).getVzdalenost())
-                     .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>")
-                     .append(m_adresni_mista.get(i).getUlice() + " " + x)
-                     .append("<br/><u>" + m_adresni_mista.get(i).getObec() + "</u>")
-                     .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>")
-                     .append("<a href="+ url_adresni_misto + m_adresni_mista.get(i).getRuianID() + ">"+ icon_ext_link_ruian +"</a>")
-                     .append("&nbsp;&nbsp;<a href=file://tags.copy/address:"+i+">"+ icon_copy_tags +"</a>")
-                     .append("&nbsp;&nbsp;<a href=file://tags.create/address:"+i+">"+ icon_create_addr +"</a>")
-                     .append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:"+i+">"+ icon_create_addr_ruian +"</a>");
+                if (!mAdresniMista.get(i).getUlice().isEmpty()) {
+                    r.append(mAdresniMista.get(i).getVzdalenost())
+                            .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>").append(mAdresniMista.get(i).getUlice())
+                            .append(" ").append(x).append("<br/><u>").append(mAdresniMista.get(i).getObec()).append("</u>")
+                            .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>").append("<a href=").append(urlAdresniMisto)
+                            .append(mAdresniMista.get(i).getRuianID()).append(">").append(iconExtLinkRuian).append("</a>")
+                            .append("&nbsp;&nbsp;<a href=file://tags.copy/address:").append(i).append(">").append(iconCopyTags)
+                            .append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create/address:").append(i).append(">")
+                            .append(iconCreateAddr).append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:")
+                            .append(i).append(">").append(iconCreateAddrRuian).append("</a>");
                 } else {
-                    r.append(m_adresni_mista.get(i).getVzdalenost())
-                     .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>")
-                     .append(m_adresni_mista.get(i).getCastObce() + " " + x + "&nbsp;");
-                    if (!m_adresni_mista.get(i).getCastObce().equals(m_adresni_mista.get(i).getObec())) {
-                        r.append("<br/><u>" + m_adresni_mista.get(i).getObec() + "</u>");
+                    r.append(mAdresniMista.get(i).getVzdalenost())
+                            .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>").append(mAdresniMista.get(i).getCastObce())
+                            .append(" ").append(x).append("&nbsp;");
+                    if (!mAdresniMista.get(i).getCastObce().equals(mAdresniMista.get(i).getObec())) {
+                        r.append("<br/><u>").append(mAdresniMista.get(i).getObec()).append("</u>");
                     }
-                    r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>")
-                     .append("<a href="+ url_adresni_misto + m_adresni_mista.get(i).getRuianID() + ">"+ icon_ext_link_ruian +"</a>")
-                     .append("&nbsp;&nbsp;<a href=file://tags.copy/address:"+i+">"+ icon_copy_tags +"</a>")
-                     .append("&nbsp;&nbsp;<a href=file://tags.create/address:"+i+">"+ icon_create_addr +"</a>")
-                     .append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:"+i+">"+ icon_create_addr_ruian +"</a>");
+                    r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>").append("<a href=").append(urlAdresniMisto)
+                            .append(mAdresniMista.get(i).getRuianID()).append(">").append(iconExtLinkRuian).append("</a>")
+                            .append("&nbsp;&nbsp;<a href=file://tags.copy/address:").append(i).append(">").append(iconCopyTags)
+                            .append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create/address:").append(i).append(">")
+                            .append(iconCreateAddr).append("</a>").append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:")
+                            .append(i).append(">").append(iconCreateAddrRuian).append("</a>");
                 }
                 r.append("</td></tr>");
@@ -893,18 +773,18 @@
         }
 
-        if (!m_so_bez_geometrie.isEmpty()) {
+        if (!mSoBezGeometrie.isEmpty()) {
             r.append("<i><u>Budovy bez geometrie v okolí</u></i><br/>")
              .append("<table>");
-            for (int i = 0; i < m_so_bez_geometrie.size(); i++) {
+            for (int i = 0; i < mSoBezGeometrie.size(); i++) {
                 r.append("<tr><td bgcolor=#e5e5ff>")
-                 .append(m_so_bez_geometrie.get(i).getVzdalenost())
+                 .append(mSoBezGeometrie.get(i).getVzdalenost())
                  .append("</td><td valign=\"top\"  bgcolor=#e5e5ff>")
-                 .append(m_so_bez_geometrie.get(i).getRuianID());
-                if (m_so_bez_geometrie.get(i).getZpusobVyuziti().length() > 0) {
-                    r.append(" - " + m_so_bez_geometrie.get(i).getZpusobVyuziti());
-                }
-                r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>")
-                 .append("&nbsp;&nbsp;<a href="+ url_stavebni_objekt + m_so_bez_geometrie.get(i).getRuianID() + ">"+ icon_ext_link_ruian +"</a> ")
-                 .append("&nbsp;&nbsp;<a href=file://tags.copy/ghost:"+i+">"+ icon_copy_tags +"</a></br>")
+                 .append(mSoBezGeometrie.get(i).getRuianID());
+                if (mSoBezGeometrie.get(i).getZpusobVyuziti().length() > 0) {
+                    r.append(" - ").append(mSoBezGeometrie.get(i).getZpusobVyuziti());
+                }
+                r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>").append("&nbsp;&nbsp;<a href=").append(urlStavebniObjekt)
+                        .append(mSoBezGeometrie.get(i).getRuianID()).append(">").append(iconExtLinkRuian).append("</a> ")
+                        .append("&nbsp;&nbsp;<a href=file://tags.copy/ghost:").append(i).append(">").append(iconCopyTags).append("</a></br>")
                  .append("</td></tr>");
             }
@@ -913,6 +793,6 @@
         }
 
-        r.append("<hr/>")
-         .append("<center><i><small>Zdroj: <a href=\"http://www.ruian.cz/\">" + m_source + "</a></small></i></center>")
+        r.append("<hr/>").append("<center><i><small>Zdroj: <a href=\"http://www.ruian.cz/\">").append(mSource)
+                .append("</a></small></i></center>")
          .append("</td></tr></table></body></html>");
 
@@ -926,5 +806,4 @@
      */
     String convertDate(String ruianDate) {
-        String r = new String();
         String[] parts = ruianDate.split("\\.");
         try {
@@ -932,10 +811,10 @@
             int month = Integer.parseInt(parts[1]);
             int year = Integer.parseInt(parts[2]);
-            r = Integer.toString(year) + "-" + String.format("%02d", month) + "-" + String.format("%02d", day);
-        } catch (Exception e) {
+            return year + "-" + String.format("%02d", month) + "-" + String.format("%02d", day);
+        } catch (NumberFormatException | IllegalFormatException e) {
             Logging.warn(e);
         }
 
-        return r;
+        return "";
     }
 
@@ -959,48 +838,48 @@
 
         // Copy building tags to clipboard
-        if (keyType.equals("building") && m_objekt_ruian_id > 0) {
-            c.append(tagToString("ref:ruian:building", Long.toString(m_objekt_ruian_id)));
-            if (!m_objekt_zpusob_vyuziti_key.isEmpty() &&
-                !m_objekt_zpusob_vyuziti_val.isEmpty()
+        if ("building".equals(keyType) && mObjektRuianId > 0) {
+            c.append(tagToString("ref:ruian:building", Long.toString(mObjektRuianId)));
+            if (!mObjektZpusobVyuzitiKey.isEmpty() &&
+                !mObjektZpusobVyuzitiVal.isEmpty()
                     ) {
-                c.append(tagToString(m_objekt_zpusob_vyuziti_key, m_objekt_zpusob_vyuziti_val));
-            }
-            if (m_objekt_podlazi > 0) {
-                c.append(tagToString("building:levels", Integer.toString(m_objekt_podlazi)));
-            }
-            if (m_objekt_byty > 0) {
-                c.append(tagToString("building:flats", Integer.toString(m_objekt_byty)));
-            }
-            if (m_objekt_dokonceni.length() > 0 && convertDate(m_objekt_dokonceni).length() > 0) {
-                c.append(tagToString("start_date", convertDate(m_objekt_dokonceni)));
-            }
-            if (m_objekt_zpusob_vyuziti_kod.length() > 0) {
-                c.append(tagToString("building:ruian:type", m_objekt_zpusob_vyuziti_kod));
+                c.append(tagToString(mObjektZpusobVyuzitiKey, mObjektZpusobVyuzitiVal));
+            }
+            if (mObjektPodlazi > 0) {
+                c.append(tagToString("building:levels", Integer.toString(mObjektPodlazi)));
+            }
+            if (mObjektByty > 0) {
+                c.append(tagToString("building:flats", Integer.toString(mObjektByty)));
+            }
+            if (mObjektDokonceni.length() > 0 && convertDate(mObjektDokonceni).length() > 0) {
+                c.append(tagToString("start_date", convertDate(mObjektDokonceni)));
+            }
+            if (mObjektZpusobVyuzitiKod.length() > 0) {
+                c.append(tagToString("building:ruian:type", mObjektZpusobVyuzitiKod));
             }
             c.append(tagToString("source", "cuzk:ruian"));
         }
 
-        if (keyType.startsWith("ghost") && !m_so_bez_geometrie.isEmpty()) {
+        if (keyType.startsWith("ghost") && !mSoBezGeometrie.isEmpty()) {
             String[] key = keyType.split(":");
             int i = Integer.parseInt(key[1]);
-            System.out.println("Ghost ID: " + i);
-
-            c.append(tagToString("ref:ruian:building", Long.toString(m_so_bez_geometrie.get(i).getRuianID())));
-            if (m_so_bez_geometrie.get(i).getZpusobVyuzitiKey().length() > 0 &&
-                    m_so_bez_geometrie.get(i).getZpusobVyuzitiVal().length() > 0
+            Logging.trace("Ghost ID: {0}", i);
+
+            c.append(tagToString("ref:ruian:building", Long.toString(mSoBezGeometrie.get(i).getRuianID())));
+            if (mSoBezGeometrie.get(i).getZpusobVyuzitiKey().length() > 0 &&
+                    mSoBezGeometrie.get(i).getZpusobVyuzitiVal().length() > 0
                     ) {
-                c.append(tagToString(m_so_bez_geometrie.get(i).getZpusobVyuzitiKey(), m_so_bez_geometrie.get(i).getZpusobVyuzitiVal()));
-            }
-            if (m_so_bez_geometrie.get(i).getPodlazi() > 0) {
-                c.append(tagToString("building:levels", Integer.toString(m_so_bez_geometrie.get(i).getPodlazi())));
-            }
-            if (m_so_bez_geometrie.get(i).getByty() > 0) {
-                c.append(tagToString("building:flats", Integer.toString(m_so_bez_geometrie.get(i).getByty())));
-            }
-            if (m_so_bez_geometrie.get(i).getDokonceni().length() > 0 && convertDate(m_so_bez_geometrie.get(i).getDokonceni()).length() > 0) {
-                c.append(tagToString("start_date", convertDate(m_so_bez_geometrie.get(i).getDokonceni())));
-            }
-            if (m_so_bez_geometrie.get(i).getZpusobVyuzitiKod().length() > 0) {
-                c.append(tagToString("building:ruian:type", m_so_bez_geometrie.get(i).getZpusobVyuzitiKod()));
+                c.append(tagToString(mSoBezGeometrie.get(i).getZpusobVyuzitiKey(), mSoBezGeometrie.get(i).getZpusobVyuzitiVal()));
+            }
+            if (mSoBezGeometrie.get(i).getPodlazi() > 0) {
+                c.append(tagToString("building:levels", Integer.toString(mSoBezGeometrie.get(i).getPodlazi())));
+            }
+            if (mSoBezGeometrie.get(i).getByty() > 0) {
+                c.append(tagToString("building:flats", Integer.toString(mSoBezGeometrie.get(i).getByty())));
+            }
+            if (mSoBezGeometrie.get(i).getDokonceni().length() > 0 && convertDate(mSoBezGeometrie.get(i).getDokonceni()).length() > 0) {
+                c.append(tagToString("start_date", convertDate(mSoBezGeometrie.get(i).getDokonceni())));
+            }
+            if (mSoBezGeometrie.get(i).getZpusobVyuzitiKod().length() > 0) {
+                c.append(tagToString("building:ruian:type", mSoBezGeometrie.get(i).getZpusobVyuzitiKod()));
             }
             c.append(tagToString("source", "cuzk:ruian"));
@@ -1008,76 +887,70 @@
 
         // Copy address tags to clipboard
-        if (keyType.startsWith("address")) {
-            if (!m_adresni_mista.isEmpty()) {
-                int i;
-
-                if (m_adresni_mista.isEmpty()) {
-                    i = 0;
-                } else {
-                    String[] key = keyType.split(":");
-                    i = Integer.valueOf(key[1]);
-                    Logging.info("Address ID: " + i);
-                }
-
-                // Only one address place
-                if (!m_adresni_mista.get(i).getCisloTyp().equals("Číslo evidenční")) {
-                    // Cislo popisne
-                    c.append(tagToString("addr:conscriptionnumber", m_adresni_mista.get(i).getCisloDomovni()));
-                } else {
-                    // Cislo evidencni
-                    c.append(tagToString("addr:provisionalnumber", m_adresni_mista.get(i).getCisloDomovni()));
-                }
-
-                // Cislo orientacni
-                if (!m_adresni_mista.get(i).getCisloOrientacni().isEmpty()) {
-                    c.append(tagToString("addr:streetnumber", m_adresni_mista.get(i).getCisloOrientacni()));
-                }
-
-                // Domovni cislo
-                StringBuilder addr = new StringBuilder();
-                if (!m_adresni_mista.get(i).getCisloTyp().equals("Číslo evidenční")) {
-                    addr.append(m_adresni_mista.get(i).getCisloDomovni());
-                } else {
-                    addr.append("ev." + m_adresni_mista.get(i).getCisloDomovni());
-                }
-                if (!m_adresni_mista.get(i).getCisloOrientacni().isEmpty()) {
-                    addr.append("/" + m_adresni_mista.get(i).getCisloOrientacni());
-                }
-                c.append(tagToString("addr:housenumber", addr.toString()));
-
-                // Street
-                if (!m_adresni_mista.get(i).getUlice().isEmpty()) {
-                    c.append(tagToString("addr:street", m_adresni_mista.get(i).getUlice()));
-                }
-                //RUIAN ID
-                if (m_adresni_mista.get(i).getRuianID() > 0) {
-                    c.append(tagToString("ref:ruian:addr", Long.toString(m_adresni_mista.get(i).getRuianID())));
-                }
-
-                // Place
-                if (!m_adresni_mista.get(i).getCastObce().isEmpty()) {
-                    c.append(tagToString("addr:place", m_adresni_mista.get(i).getCastObce()));
-                }
-
-                if (!m_adresni_mista.get(i).getMestskaCast().isEmpty()) {
-                    c.append(tagToString("addr:suburb", m_adresni_mista.get(i).getMestskaCast()));
-                }
-
-                // City
-                if (!m_adresni_mista.get(i).getObec().isEmpty()) {
-                    c.append(tagToString("addr:city", m_adresni_mista.get(i).getObec()));
-                }
-
-                // Postcode
-                if (!m_adresni_mista.get(i).getPsc().isEmpty()) {
-                    c.append(tagToString("addr:postcode", m_adresni_mista.get(i).getPsc()));
-                }
-
-                // Country
-                c.append(tagToString("addr:country", "CZ"));
-
-                // Source
-                c.append(tagToString("source:addr", "cuzk:ruian"));
-            }
+        if (keyType.startsWith("address") && !mAdresniMista.isEmpty()) {
+            int i;
+
+            String[] key = keyType.split(":");
+            i = Integer.parseInt(key[1]);
+            Logging.info("Address ID: " + i);
+
+            // Only one address place
+            if (!"Číslo evidenční".equals(mAdresniMista.get(i).getCisloTyp())) {
+                // Cislo popisne
+                c.append(tagToString("addr:conscriptionnumber", mAdresniMista.get(i).getCisloDomovni()));
+            } else {
+                // Cislo evidencni
+                c.append(tagToString("addr:provisionalnumber", mAdresniMista.get(i).getCisloDomovni()));
+            }
+
+            // Cislo orientacni
+            if (!mAdresniMista.get(i).getCisloOrientacni().isEmpty()) {
+                c.append(tagToString("addr:streetnumber", mAdresniMista.get(i).getCisloOrientacni()));
+            }
+
+            // Domovni cislo
+            StringBuilder addr = new StringBuilder();
+            if (!"Číslo evidenční".equals(mAdresniMista.get(i).getCisloTyp())) {
+                addr.append(mAdresniMista.get(i).getCisloDomovni());
+            } else {
+                addr.append("ev.").append(mAdresniMista.get(i).getCisloDomovni());
+            }
+            if (!mAdresniMista.get(i).getCisloOrientacni().isEmpty()) {
+                addr.append("/").append(mAdresniMista.get(i).getCisloOrientacni());
+            }
+            c.append(tagToString("addr:housenumber", addr.toString()));
+
+            // Street
+            if (!mAdresniMista.get(i).getUlice().isEmpty()) {
+                c.append(tagToString("addr:street", mAdresniMista.get(i).getUlice()));
+            }
+            //RUIAN ID
+            if (mAdresniMista.get(i).getRuianID() > 0) {
+                c.append(tagToString("ref:ruian:addr", Long.toString(mAdresniMista.get(i).getRuianID())));
+            }
+
+            // Place
+            if (!mAdresniMista.get(i).getCastObce().isEmpty()) {
+                c.append(tagToString("addr:place", mAdresniMista.get(i).getCastObce()));
+            }
+
+            if (!mAdresniMista.get(i).getMestskaCast().isEmpty()) {
+                c.append(tagToString("addr:suburb", mAdresniMista.get(i).getMestskaCast()));
+            }
+
+            // City
+            if (!mAdresniMista.get(i).getObec().isEmpty()) {
+                c.append(tagToString("addr:city", mAdresniMista.get(i).getObec()));
+            }
+
+            // Postcode
+            if (!mAdresniMista.get(i).getPsc().isEmpty()) {
+                c.append(tagToString("addr:postcode", mAdresniMista.get(i).getPsc()));
+            }
+
+            // Country
+            c.append(tagToString("addr:country", "CZ"));
+
+            // Source
+            c.append(tagToString("source:addr", "cuzk:ruian"));
         }
 
@@ -1085,7 +958,7 @@
 
         // Copy street tags to clipboard
-        if (keyType.equals("street") && m_ulice_ruian_id > 0) {
-            c.append(tagToString("ref:ruian:street", Long.toString(m_ulice_ruian_id)));
-            c.append(tagToString("name", m_ulice_jmeno));
+        if ("street".equals(keyType) && mUliceRuianId > 0) {
+            c.append(tagToString("ref:ruian:street", Long.toString(mUliceRuianId)));
+            c.append(tagToString("name", mUliceJmeno));
             c.append(tagToString("source", "cuzk:ruian"));
         }
@@ -1105,7 +978,7 @@
             String[] key = cmd.split(":");
             int i = Integer.parseInt(key[1]);
-            node = new Node(m_adresni_mista.get(i).getPosition());
+            node = new Node(mAdresniMista.get(i).getPosition());
         } else {
-            node = new Node(new LatLon(m_coor_lat, m_coor_lon));
+            node = new Node(new LatLon(mCoorLat, mCoorLon));
         }
         commands.add(new AddCommand(MainApplication.getLayerManager().getEditDataSet(), node));
@@ -1136,5 +1009,5 @@
         Logging.info("act: " + act.substring(7));
         String[] params = act.substring(7).split("/");
-        if (!params[0].equals("tags.copy") && !params[0].startsWith("tags.create")) {
+        if (!"tags.copy".equals(params[0]) && !params[0].startsWith("tags.create")) {
             return;
         }
@@ -1143,17 +1016,13 @@
 
         // Copy tags to clipboard
-        if (params[0].equals("tags.copy")) {
-            if (!task.isEmpty()) {
-                ClipboardUtils.copyString(task);
-                PointInfoUtils.showNotification(tr("Tags copied to clipboard."), "info");
-            }
+        if ("tags.copy".equals(params[0]) && !task.isEmpty()) {
+            ClipboardUtils.copyString(task);
+            PointInfoUtils.showNotification(tr("Tags copied to clipboard."), "info");
         }
 
         // Create address node
-        if (params[0].startsWith("tags.create")) {
-            if (!task.isEmpty()) {
-                createAddrPoint(act.substring(7), task);
-                PointInfoUtils.showNotification(tr("New address point added."), "info");
-            }
+        if (params[0].startsWith("tags.create") && !task.isEmpty()) {
+            createAddrPoint(act.substring(7), task);
+            PointInfoUtils.showNotification(tr("New address point added."), "info");
         }
     }
Index: /applications/editors/josm/plugins/rasterfilters/build.xml
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/build.xml	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/build.xml	(revision 36122)
@@ -10,6 +10,6 @@
 	
 	<!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-	<property name="plugin.main.version" value="14153" />
-	<property name="plugin.version" value="1.0.3"/>
+	<property name="plugin.main.version" value="18723" />
+	<property name="plugin.version" value="1.0.4"/>
 
     <property name="plugin.icon" value="images/josm_filters_48.png"/>
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/filters/Filter.java	(revision 36122)
@@ -4,5 +4,5 @@
 import java.rmi.server.UID;
 
-import javax.json.JsonObject;
+import jakarta.json.JsonObject;
 
 /**
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/gui/FilterPanel.java	(revision 36122)
@@ -13,6 +13,6 @@
 import java.util.Hashtable;
 
-import javax.json.JsonArray;
-import javax.json.JsonObject;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
 import javax.swing.BorderFactory;
 import javax.swing.Box;
@@ -65,33 +65,28 @@
         String type = json.getString("type");
 
-        if (type.equals("linear_slider")) {
-
-            setNeededHeight(getNeededHeight() + 70);
-
-            return createSlider(json);
-
-        } else if (type.equals("checkbox")) {
-
-            setNeededHeight(getNeededHeight() + 30);
-
-            JCheckBox checkBox = createCheckBox(json.getString("title"));
-            checkBox.setSelected(json.getBoolean("default"));
-            checkBox.setName(json.getString("name"));
-
-            return checkBox;
-
-        } else if (type.equals("select")) {
-
-            setNeededHeight(getNeededHeight() + 50);
-
-            return createSelect(json);
-
-        } else if (type.equals("colorpicker")) {
-
-            setNeededHeight(getNeededHeight() + 220);
-
-            return createColorPicker(json);
+        switch (type) {
+            case "linear_slider":
+                setNeededHeight(getNeededHeight() + 70);
+                return createSlider(json);
+
+            case "checkbox":
+                setNeededHeight(getNeededHeight() + 30);
+
+                JCheckBox checkBox = createCheckBox(json.getString("title"));
+                checkBox.setSelected(json.getBoolean("default"));
+                checkBox.setName(json.getString("name"));
+
+                return checkBox;
+
+            case "select":
+                setNeededHeight(getNeededHeight() + 50);
+                return createSelect(json);
+
+            case "colorpicker":
+                setNeededHeight(getNeededHeight() + 220);
+                return createColorPicker(json);
+            default:
+                return null;
         }
-        return null;
     }
 
@@ -170,5 +165,5 @@
     }
 
-    private JCheckBox createDisableBox(ItemListener listener) {
+    private static JCheckBox createDisableBox(ItemListener listener) {
         JCheckBox disable = new JCheckBox("Disable");
         Font font = new Font("Arial", Font.PLAIN, 12);
@@ -180,5 +175,5 @@
     }
 
-    private JButton createRemoveButton(ActionListener listener) {
+    private static JButton createRemoveButton(ActionListener listener) {
         JButton removeButton = new JButton("Remove");
         Font font = new Font("Arial", Font.PLAIN, 12);
@@ -242,5 +237,5 @@
 
         JSlider slider = null;
-        if (valueType.equals("integer")) {
+        if ("integer".equals(valueType)) {
             int minValue = array.getInt(0);
             int maxValue = array.getInt(1);
@@ -248,6 +243,6 @@
 
             Logging.debug("Slider is integer\n");
-            Logging.debug("minValue: " + String.valueOf(minValue)
-                    + "maxValue: " + String.valueOf(maxValue));
+            Logging.debug("minValue: " + minValue
+                    + "maxValue: " + maxValue);
             try {
                 slider = new JSlider(JSlider.HORIZONTAL, minValue, maxValue,
@@ -257,5 +252,5 @@
                 slider.setMinorTickSpacing(maxValue / 4);
             } catch (IllegalArgumentException e) {
-
+                Logging.trace(e);
                 JOptionPane.showMessageDialog(
                         MainApplication.getMainFrame(),
@@ -265,5 +260,5 @@
             }
 
-        } else if (valueType.equals("float")) {
+        } else if ("float".equals(valueType)) {
 
             Logging.debug("Slider is float\n");
@@ -271,6 +266,6 @@
             double minValueDouble = array.getJsonNumber(0).doubleValue();
             double maxValueDouble = array.getJsonNumber(1).doubleValue();
-            Logging.debug("DminValue: " + String.valueOf(minValueDouble)
-                    + "DmaxValue: " + String.valueOf(maxValueDouble));
+            Logging.debug("DminValue: " + minValueDouble
+                    + "DmaxValue: " + maxValueDouble);
 
             int minValue = (int) (minValueDouble * 100);
@@ -279,5 +274,5 @@
 
             double initValue = json.getJsonNumber("default").doubleValue() * 100;
-            double delta = (maxValue - minValue) / 100;
+            double delta = (maxValue - minValue) / 100d;
 
             for (int i = 0; i <= maxValue; i++) {
@@ -292,13 +287,10 @@
 
             try {
-
                 slider = new JSlider(JSlider.HORIZONTAL, minValue, maxValue, (int) initValue);
                 slider.setMinorTickSpacing(maxValue / 4);
                 slider.setName(json.getString("name"));
                 slider.setToolTipText(String.valueOf((double) slider.getValue() / 100));
-
-
             } catch (IllegalArgumentException e) {
-
+                Logging.trace(e);
                 JOptionPane.showMessageDialog(
                         MainApplication.getMainFrame(),
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FilterStateModel.java	(revision 36122)
@@ -6,7 +6,7 @@
 import java.util.Map.Entry;
 
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonObjectBuilder;
 
 import org.openstreetmap.josm.plugins.rasterfilters.values.BooleanValue;
@@ -52,7 +52,7 @@
         // setting up the beginning state of filter
         // according to its metainfo
-        if (json.getString("type").equals("linear_slider")) {
+        if ("linear_slider".equals(json.getString("type"))) {
 
-            if (valueType.equals("float") || valueType.equals("double")) {
+            if ("float".equals(valueType) || "double".equals(valueType)) {
 
                 double defaultValue = json.getJsonNumber("default")
@@ -63,5 +63,5 @@
                 params.put(parameterName, value);
 
-            } else if (valueType.equals("integer")) {
+            } else if ("integer".equals(valueType)) {
 
                 int defaultValue = json.getJsonNumber("default").intValue();
@@ -73,5 +73,5 @@
             }
 
-        } else if (json.getString("type").equals("checkbox")) {
+        } else if ("checkbox".equals(json.getString("type"))) {
 
             boolean defaultValue = json.getBoolean("default");
@@ -80,5 +80,5 @@
             params.put(parameterName, value);
 
-        } else if (json.getString("type").equals("select")) {
+        } else if ("select".equals(json.getString("type"))) {
 
             String defaultValue = json.getString("default");
@@ -88,5 +88,5 @@
             params.put(parameterName, value);
 
-        } else if (json.getString("type").equals("colorpicker")) {
+        } else if ("colorpicker".equals(json.getString("type"))) {
 
             JsonObject defaultColorJson = json.getJsonObject("default");
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/model/FiltersManager.java	(revision 36122)
@@ -9,11 +9,10 @@
 import java.rmi.server.UID;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 
-import javax.json.JsonArray;
-import javax.json.JsonObject;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
@@ -117,5 +116,5 @@
                     ((JComboBox<String>) component).addActionListener(filterListener);
                 } else if (component instanceof ColorPicker) {
-                    ((ColorPicker) component).addPropertyChangeListener(filterListener);
+                    component.addPropertyChangeListener(filterListener);
                 }
 
@@ -177,10 +176,6 @@
     public BufferedImage process(BufferedImage image) {
 
-        Iterator<Filter> it = filtersMap.values().iterator();
-
         // iterating through map of filters according to the order
-        while (it.hasNext()) {
-
-            Filter curFilter = it.next();
+        for (Filter curFilter : filtersMap.values()) {
 
             if (!disabledFilters.contains(curFilter)) {
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FilterInfo.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FilterInfo.java	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FilterInfo.java	(revision 36122)
@@ -3,5 +3,5 @@
 import java.util.Objects;
 
-import javax.json.JsonObject;
+import jakarta.json.JsonObject;
 
 class FilterInfo {
Index: /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java
===================================================================
--- /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java	(revision 36121)
+++ /applications/editors/josm/plugins/rasterfilters/src/org/openstreetmap/josm/plugins/rasterfilters/preferences/FiltersDownloader.java	(revision 36122)
@@ -25,8 +25,8 @@
 import java.util.regex.Pattern;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
 
 import org.jsoup.Jsoup;
Index: /applications/editors/josm/plugins/reverter/build.xml
===================================================================
--- /applications/editors/josm/plugins/reverter/build.xml	(revision 36121)
+++ /applications/editors/josm/plugins/reverter/build.xml	(revision 36122)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Reverter: fix deleted/redacted relation members"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="18173"/>
+    <property name="plugin.main.version" value="18723"/>
 
     <!-- Configure these properties (replace "..." accordingly).
Index: /applications/editors/josm/plugins/reverter/test/unit/reverter/ChangesetReverterTest.java
===================================================================
--- /applications/editors/josm/plugins/reverter/test/unit/reverter/ChangesetReverterTest.java	(revision 36121)
+++ /applications/editors/josm/plugins/reverter/test/unit/reverter/ChangesetReverterTest.java	(revision 36122)
@@ -21,11 +21,11 @@
 import java.util.stream.Collectors;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
-import javax.json.JsonString;
-import javax.json.JsonValue;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
+import jakarta.json.JsonString;
+import jakarta.json.JsonValue;
 
 import com.github.tomakehurst.wiremock.client.WireMock;
