source: josm

Revision Log Mode:


Copied or renamed
Diff Rev Age Author
(edit) @19006   6 hours GerdP

fix #22814: Command stack shows "Set 1 tags for 0 objects"

  • add check to avoid a no-change-command on the undo/redo stack
(edit) @19005   22 hours GerdP

fix #23519: Don't automatically enlarge "Validation Results" panel

  • show and unfurl "Validation Results" panel if not yet visible unless the tree is empty and the validation was triggered by an upload (see #23187)
(edit) @19004   4 days GerdP

see #23514: add @Territories annotation

(edit) @19003   4 days GerdP

fix #23514: add @Territories annotation

(edit) @19002   4 days GerdP

see #23305: correct @since xxx

(edit) @19001   4 days GerdP

fix #23517: "Tools->Create multipolygon" sorts inner before outer

  • reorder members so that all outer rings come first and for rings with same role those with more members come first (before calling RelationSorter.sortMembersByConnectivity())
(edit) @19000   4 days GerdP

fix #23519: Don't automatically enlarge "Validation Results" panel

  • implement new preference validator.force.unfurl.window with default value true, if set to false the window is not unfurled
  • code cleanup to remove duplicate or obsolete code
(edit) @18999   7 days taylor.smock

See #23355: Ensure that the dialog has read the preference key for the sanity check

(edit) @18998   7 days taylor.smock

See #23355: Don't store stop answers for startup sanity check

(edit) @18997   10 days taylor.smock

Fix #23361: Add mouth as an optional role for waterway relations (patch by hhtznr)

Additional notes:

(edit) @18996   11 days stoecker

see #23506, see #23408 - readd the bracket lost in last checkin

(edit) @18995   11 days taylor.smock

Add turning_circle tag (a subkey for highway=turning_circle) (patch by guylamar2006, see

(edit) @18994   11 days stoecker

fix #23506, see #23408 - fix the save/upload layer preconditions - neither the original, nor the #23408 variant makes real sense

(edit) @18993   11 days taylor.smock

Update actions to ones that support node 20 (patch by guylamar2006, see )

(edit) @18992   11 days taylor.smock

See #23485/r18989: Fix broken tests

The tests just needed to have a category set.

(edit) @18991   12 days taylor.smock

Fix #22810: OSM OAuth 1.0a/Basic auth deprecation and removal

As of 2024-02-15, something changed in the OSM server configuration. This broke
our OAuth 1.0a implementation (see #23475). As such, we are removing OAuth 1.0a
from JOSM now instead of when the OSM server removes support in June 2024.

For third-party OpenStreetMap servers, the Basic Authentication method has been
kept. However, they should be made aware that it may be removed if a non-trivial
bug occurs with it. We highly recommend that the third-party servers update to
the current OpenStreetMap website implementation (if only for their own security).

Failing that, the third-party server can implement RFC8414. As of this commit,
we currently use the authorization_endpoint and token_endpoint fields.
To check and see if their third-party server implements RFC8414, they can go
to <server host>/.well-known/oauth-authorization-server.

Prominent third-party OpenStreetMap servers may give us a client id for their
specific server. That client id may be added to the hard-coded client id list
at maintainer discretion. At a minimum, the server must be publicly
available and have a significant user base.

(edit) @18990   13 days taylor.smock

Fix #23472: Decrease cost of Geometry#polygonIntersectionResult (specifically for geometry.mapcss)

When profiling the validator with an overpass download of Mesa County, Colorado,
~50% of the total CPU time are taken up by Geometry#polygonIntersectionResult.

Specifically (inside the function), the improvements for this patch are as follows:

  • CPU cycles: -95.7%
  • Memory allocations: -97.9%

When taken as a whole, the total time taken by the validator was reduced by ~75%.

(edit) @18989   13 days taylor.smock

Fix #23485: JOSM crashes when opening Imagery Preferences

  • now checks to see if imagery entries are valid; if not, it prints the missing fields and the standard description.
  • ImageryInfo now has isValid and getMissingFields; the latter method should only be called in tests or SyncEditorLayerIndex.
  • ImageryLayerInfo removes invalid ImageryInfo objects after parsing the source
(edit) @18988   2 weeks GerdP

fix #23305: conflict detection not working for combine way with one null and one tag set

  • adds code to check if a conflict exists where one or more tagged ways don't have the same tag value and - if so - show the conflict dialog.
  • adds a preference combine-conflict-precise . If set to false the old behaviour is restored.
  • changes the preference for the non-expert relation member ship warning popup from combine_tags to combine_relation_member, so that both dialogs have separate settings
(edit) @18987   2 weeks GerdP

fix #23477: crash when undoing changes while in extrude mode

  • add sanity checks in performExtrusion() to detect when undo was pressed, this always cancels the current extrude
  • removes the try/catch clause which might hide a data corruption (reverts r12512)
(edit) @18986   3 weeks taylor.smock

See #23355: Sanity check JVM arguments on startup

Change the icon for Continue and be a more lenient when comparing expected JVM
arguments against actual JVM arguments.

This additionally updates the Eclipse launch files.

(edit) @18985   3 weeks taylor.smock

Fix #23355: Sanity check JVM arguments on startup

See #17858: JOSM will no longer continue running if the user is on an unsupported
Java version (for this commit, older than Java 11; message indicates Java 17).
This does update the link for Azul from Java 17 to Java 21 as well.

In order to (hopefully) reduce confusion, the webstart and Java update nags will
also be reset in the event that JOSM will exit due to old Java versions. This is
mostly so that users will get the messages to update to OpenWebstart or the
appropriate Java link for their platform and architecture.

Additionally, this will (hopefully) reduce the number of tickets we have to close
due to missing JVM arguments by informing users of the missing arguments at startup.

(edit) @18984   3 weeks GerdP

see #17035: enable counter that shows "{0} of {1} elements done" for the tested OSM elements also in TagChecker

(edit) @18983   3 weeks taylor.smock

Fix #23471: fix an inconsistency between fast ASCII sort and slower unicode-aware sort

(edit) @18982   3 weeks taylor.smock

See #23471: Temporarily disable fast sorting

(edit) @18981   3 weeks taylor.smock

See #23290/r18980: Update test messages

(edit) @18980   3 weeks taylor.smock

Fix #23290: Improve region check messages and run region checks when informational warnings are disabled

(edit) @18979   3 weeks taylor.smock

Dependency updates


  • OpeningHoursParser: 0.28.0 -> 0.28.1
  • junit: 5.10.1 -> 5.10.2
  • equalsverifier: 3.15.5 -> 3.15.6
  • tag2link: 2023.11.21 -> 2024.2.8


  • proguard: 7.4.1 -> 7.4.2
  • error_prone: 2.24.0 -> 2.24.1
(edit) @18978   3 weeks taylor.smock

See #23468: Improve performance in the validator tree window

Add missing - character.

(edit) @18977   3 weeks taylor.smock

See #23468: Improve performance in the validator tree window

This fixes an issue where there was a difference in sorting algorithms between
the faster ASCII only sorting method and the sorting method used by non-ASCII

(edit) @18976   3 weeks GerdP

fix #20424, fix #20425: Duplicate relations not detected with incomplete members, Duplicate Relation test is too lazy/too aggressive

  • add code to compare just members so that it doesn't matter if they are complete
  • change original test which compares geometry to use a list instead of a set to store members. That means that the order of members is taken into account as well as duplicated members
  • before comparing tags only the "discardable" tag keys are removed, previously all "uninteresting" keys were removed, so fixme=* or note=* was ignored
  • if two relations have the same members in the same order but different tags the new message informational message "Identical members" is produced.
(edit) @18975   3 weeks taylor.smock

See #23465: Add missing documentation for SessionReader

(edit) @18974   3 weeks taylor.smock

Fix #23465: Remove custom checkstyle plugin is duplicating functionality from MissingJavadocType.
Our custom class is from #14794 (closed 2017-10-16). The check that makes it
redundant was added in checkstyle 8.20 (released 2019-04-28).

This adds the missing javadocs for the more comprehensive checkstyle version.

(edit) @18973   3 weeks taylor.smock

Fix #23468: Improve performance in the Validator tree window

A large number of entries in the validator tree would cause the UI to lock for
significant periods of time when switching to a layer with many errors. Most of
the time spent was in

We need to use AlphanumComparator since would improperly sort
strings with accented characters.

The performance optimizations for this patch come from the following locations:

  • Extracting string chunk comparison to its own method (which can be compiled to native code)
  • Using String.substring instead of a StringBuilder when getting a string chunk for comparison

Both of those methods may be compiled to native code, but absent code compilation,
the performance improvements are as follows (as measured using an overpass
download of Mesa County, Colorado):

  • -86.4% CPU usage (3.366s to 0.459s)
  • -99.9% memory allocations (2.37 GB to 2.07 MB)
(edit) @18972   3 weeks taylor.smock

See #23465: Add additional javadoc comments

This also fixes some sonarlint issues

(edit) @18971   3 weeks taylor.smock

Fix #23148: Remove fenced from deprecation warnings

The tag's deprecation status was changed on 2023-06-14, and is used as a
supplementary tag for features to indicate that the feature is fenced. Example:
leisure=playground + fenced=yes.

(edit) @18970   4 weeks taylor.smock

remove TLD from IANA

(edit) @18969   4 weeks taylor.smock

i18n update

(edit) @18968   4 weeks GerdP

fix #23447:Fatal "crash" attempting to delete all "Outer" members & then multipolygon

  • revert changes from r18967
  • simply close relation editor dialog for the already deleted relation instead of generating an additional delete command
(edit) @18967   5 weeks GerdP

fix #23447: Fatal "crash" attempting to delete all "Outer" members & then multipolygon

  • disable the delete action in the relation editor if the relation has the status deleted
  • in DeleteCurrentRelationAction updateEnabledState() now uses getRelaion() instead of getRelationSnapshot(), similar to the actionPerformed() method
(edit) @18966   5 weeks taylor.smock

See #23290: Add missing regions attributes to text, combo and multiselect

simonpoole (Vespucci dev) pointed out that we were using regions for those
attributes on but did not have them documented in the xsd.

(edit) @18965   5 weeks taylor.smock

See #23444: Fix an additional NPE found during testing ImproveWayAccuracyAction

The NPE could be reproduced by selecting a node with only an incomplete
parent way, and switching from select mode to improve way mode.

This additionally adds simple tests for ImproveWayAccuracyAction and refactors
some methods to have a lower complexity.

(edit) @18964   5 weeks GerdP

fix #23440: Validation results may not be refreshed on upload
The patch checks if the validator dialog is already showing. If yes, it is always updated.
An empty dialog is only suppressed when there was no dialog showing and there are no errors and the validation was triggered by the upload action.

(edit) @18963   5 weeks taylor.smock

Fix #23444: NPE in org.openstreetmap.josm.gui.MapViewState$MapViewEastNorthPoint.<init>

This occurs when an incomplete way is loaded into JOSM (by an .osm file, for
example). This is fixed by checking to see if the way is usable (not incomplete,
not deleted, and more importantly for this ticket, no nodes are incomplete).

This additionally fixes some pmd issues and sonarlint issues.

(edit) @18962   5 weeks GerdP

see #23397: Improve the results of partial validations

  • don't call endTest() in static method CrossingWays.isSelfCrossing(), this fixes the failing unit test AlignInCircleActionTest
(edit) @18961   5 weeks GerdP

see #23397: Improve the results of partial validations

  • correct last minute change so that it doesn't use empty collection to filter irrelevant warnings
  • correct usage of isPrimitiveUsable() so that CrossingWays.Boundaries works again (old unit test failed)
  • add unit tests to check partial validation of DuplicateWay and CrossingWays gives expected results
(edit) @18960   5 weeks GerdP

fix #23397: Improve the results of partial validations

  • pass also parent ways and relations of uploaded/selected objects to the testers, child objects are already added, this allows to find e.g. overlapping polygons problems with tags in members of relations
  • let CrossingWays find a problem if at least one of the crossing ways is in the partial selection.
  • let DuplicatWays find a problem if at least one of the duplicated ways is in the partial selection
  • add code to filter the detected issues so that those issues which are clearly not related to the original list of objects are removed. A few issues from mapcss tests may remain.
  • add new preference validator.partial.add.parents to disable the addition of parent objects, default is enabled
  • add new preference validator.partial.removeIrrelevant to disable the filtering of irrelevant errors, default is enabled
  • duplicated code to call AggregatePrimitivesVisitor was moved to ValidationTask
(edit) @18959   5 weeks GerdP

fix #23442: Follow line bug when holding F

  • make sure that the node returned by DrawAction.getCurrentBaseNode() is either first or last node of the selected way.
(edit) @18958   6 weeks taylor.smock

Fix #23418: Improve unit test consistency when run with non-English locales

This also fixes some tests that fail when run individually.

(edit) @18957   6 weeks GerdP

see #20405: simplify code

(edit) @18956   6 weeks GerdP

fix #20405: History browser for complex relations requires lots of memory

  • avoid to create equal instances of RelationMemberData. This is simple and very effective when relations have many versions as most members are the same in each version
(edit) @18955   6 weeks GerdP

see #23427: remove obsolete and unintended code from experiment

(edit) @18954   6 weeks GerdP

fix #23427 load session performance strongly depends on order of layers
The patch

  • removes the duplicated code regarding XPath and calls existing method OsmDataSessionImporter.extractFileName() instead
  • improves that method to first try to find a "file" node given the current element before falling back to the possibly very slow XPath evaluate call (not sure if the XPath part is still needed, it is never used in my example).
(edit) @18953   6 weeks taylor.smock

remove TLD from IANA

(edit) @18952   6 weeks GerdP

see #23430: Resetting preference validator.selectionFilter results in broken validator

  • improve performance: only call tree.setFilter() when really needed, as it always triggers buildTree()
(edit) @18951   6 weeks GerdP

fix #23430: Resetting preference validator.selectionFilter results in broken validator

  • always set filter when selection was changed
  • updateSelection when preferences were changed so that a change of the preference validator.selectionFilter is applied immediately
(edit) @18950   6 weeks taylor.smock

ValidatorCLI: Fix an NPE when run prior to any call to Territories.initialize

There is currently no good way to see if the Territories data is initialized.
This does mean that tests will take a little bit longer.

(edit) @18949   6 weeks GerdP

Improve reaction time when user presses cancel while a session is loaded

(edit) @18948   6 weeks GerdP

fix #23423 Memory leak: Markerlayer doesn't remove MouseListener

  • add removeMouseListener() call in destroy()
(edit) @18947   6 weeks GerdP

fix memory leak, ImgDisplay.destroy() was only called when at least one image was viewed

(edit) @18946   6 weeks GerdP

see #23359: revert changes from r18924 as they are now obsolete

(edit) @18945   6 weeks GerdP

fix #22819: JOSM shows geotagged images in the wrong location

  • if a new image should be shown, make sure that we don't show the previous one. Instead, show only the loading message.
(edit) @18944   6 weeks GerdP

fix #22806 Cannot disable tabs in image viewer and #22860 Geotagged Images dialog confuses tabs
If preference is set, make sure that only the recent image is selected

(edit) @18943   6 weeks GerdP

fix #23417: Load images from Wikimedia Commons can cause crash report

  • disable the action when last layer was closed

This requires special action in layerRemoving(), so default listeners in JosmAction are no longer needed

(edit) @18942   6 weeks GerdP

fix #23419: Memory leak in SessionSaveAction

  • don't keep references to the layers
(edit) @18941   6 weeks GerdP

fix #23408

  • fix crash when lots of GeoImageLayer layers are closed without and no data layer is open
  • don't show save layers dialog when no save or upload action is available.
(edit) @18940   7 weeks GerdP

see #23415/r18939 ( MarkerLayerTest still failed)

  • restore most of the old behaviour of destroy() and destroyInstance() as it was before r18937
  • don't call destroy inside updateLayers() as this code is also used in unit tests
  • check in layerRemoving() if dialog should be destroyed

Hope this now fixes all unit tests. Some of them fail on my machine because the expect to run in English while my machine is configured to German. Have to find out where this can be changed...

(edit) @18939   7 weeks taylor.smock

See #23415/r18938: Use titleBar instead of dialogsPanel

(edit) @18938   7 weeks taylor.smock

See #23415: Fix unit tests from r18937

(edit) @18937   7 weeks GerdP

fix #23415 and #23414, patch 23415-v2.patch

  • fixes issues where the wrong image is shown
  • properly destroys the toggle dialog and the toggle action when no more geotagged image layer is available
  • make sure that the title is updated when no image is selected (instead of possibly showing an image name from a closed layer
(edit) @18936   7 weeks taylor.smock

Fix #23416: When GitHub CI fails, the hs_err dumps should be included in the test artifacts

(edit) @18935   7 weeks taylor.smock

Fix #23399: Simplify way crashes

This was primarily caused by selection updates occurring while the commands were generated. The fixes could be any of the following:

  • Synchronized collections
  • New list
  • Avoiding selection updates

The last option was taken for the following reasons:

  • Avoiding a StackOverflow exception when many ways are being simplified
  • Reduced memory allocations (>11GB to <250MB)
  • Reduced CPU cycles
(edit) @18934   2 months taylor.smock

Fix #23362: Cannot close ImageViewerDialog when multiple image layers are available

(edit) @18933   2 months taylor.smock

i18n update

(edit) @18932   2 months stoecker

fix some CI warnings

(edit) @18931   2 months stoecker


(edit) @18930   2 months stoecker


(edit) @18929   2 months stoecker

proper interface

(edit) @18928   2 months stoecker

fix #23373 - Taiwan maps nowadays use another certificate

(edit) @18927   2 months taylor.smock

Fix #23316: MarkerLayer should return an empty list instead of a list with a single null value when the entry is null

(edit) @18926   2 months taylor.smock

Fix #23367: Don't try to load too many tiles

In this case, we are catching an ArithmeticException when an integer overflow occurs.

Additionally, fix some lint issues and update some dependencies:

  • org.openstreetmap.jmapviewer:jmapviewer: 2.18 -> 2.19
  • ch.poole:OpeningHoursParser: 0.27.1 -> 0.28.0
  • nl.jqno.equalsverifier:equalsverifier: 3.15.4 -> 3.15.5
  • 2.23.0 -> 2.24.0
(edit) @18925   2 months taylor.smock

See #23290 comment 10: Fix missing s in region for payment cards

(edit) @18924   2 months taylor.smock

Fix #23359: Don't keep images in memory when the ImageViewerDialog is closed

(edit) @18923   2 months taylor.smock

Fix #16485: Ensure windows lose always-on-top status when JOSM loses focus

Also fix some spotbugs/sonarlint issues.

(edit) @18922   2 months taylor.smock

Fix #23302: Create a preference for address duplicate detection to include buildings and POIs (patch by zyphlar, modified)

Modifications are as follows:

  • Add test case
(edit) @18921   2 months taylor.smock

Fix #23308: Fix a false positive for "Water area inside water area" validation (patch by gaben, modified)

A coastline as an area follows the right-side rule like coastlines as a way.
This means that a water area inside the area, as defined for almost every other
area tag, may be valid, depending upon the directionality of the coastline way.

Modifications are as follows:

  • Look for water areas inside oceans (coastline is drawn in clockwise direction)
    • This is anticipated to be a rare occurrence since most coastlines are expected to be part of a large area.
  • Add non-regression test
  • Keep previous spacing for easier svn blame usage
(edit) @18920   3 months taylor.smock

Fix #23067: Don't warn on unisex, female, and male tag combinations for shop=hairdresser

male=* and female=* is more verbose than unisex=* and also more precise.
From the osmwiki:Key:unisex wiki page:

unisex=yes always means a gender-neutral facility. Gender segregated facilities
(e.g. toilets) should be tagged female=yes + male=yes. Usage of the unisex=yes
tag for gender segregated features contradicts with the general meaning of the
term "unisex".

(edit) @18919   3 months taylor.smock

Fix #23339: Improve preset for charging stations (patch by dbrgn)

  • Generic fee -> fee + parking:fee (the two may be separate)
  • capacity is now free-form text (some charging stations can have 20 or more chargers)
  • covered has been added
  • Remove non-vehicle transport methods like bicycle and scooter (preset is in the vehicle group)
  • Unused socket types have been removed
  • Replace voltage and amperage with max socket output power
  • Update authentication methods
  • Add level for when the charging station is in a multi-level parking garage
(edit) @18918   3 months taylor.smock

Fix #23290: Validate the regions a tag is expected to be in (patch by Sarabjeet108, modified)

Modifications are as follows:

  • Allow the use of the new region attributes for keys inside a preset
  • Basic tests

regions comes from Vespucci's extensions:

(edit) @18917   3 months taylor.smock Add optional parameter for changesets

(edit) @18916   3 months taylor.smock

See GitHub #133: Add name for Castilla–La Mancha in boundaries.osm (patch by grischard)

(edit) @18915   3 months taylor.smock

remove TLD from IANA

(edit) @18914   3 months taylor.smock

Fix #22546: Warn about floating railway switches and crossing (patch by Famlam)

railway=switch and railway=crossing should always be connected to a railway;
neither can exist without a railway line as they are physical features of the

(edit) @18913   3 months taylor.smock

See #22596: Some hosts redirect to another host for authentication (patch by hhtznr, modified)

This lets plugins do authentication with hosts that redirect to another host
for authentication.

(edit) @18912   3 months taylor.smock

Fix #23227: Use the appropriate Bing layer

Microsoft guidance indicates that they do not want us to use the old Aerial
layer. This appears to be due to increasing usage of their API and their desire
to separate free usage from paid usage.

(edit) @18911   3 months taylor.smock

Fix #23113: Use default methods from JMapViewer

(edit) @18910   3 months taylor.smock

Update Tag2Link PREF_SOURCE variable

(edit) @18909   3 months taylor.smock

Dependency updates


  • org.openstreetmap.jmapviewer:jmapviewer: 2.16 -> 2.18
    • Add default methods to JMapViewer TileSource interface
    • Modularize for Java 9+
    • Add layer option for Bing Imagery
  • jakarta.json:jakarta.json-api: 2.1.2 -> 2.1.3
  • org.eclipse.parsson:parsson: 1.1.4 -> 1.1.5
  • org.apache.commons:commons-jcs3-core: 3.1 -> 3.2
  • org.apache.commons:commons-compress: 1.23.0 -> 1.25.0
  • com.drewnoakes:metadata-extractor: 2.18.0 -> 2.19.0
  • ch.poole:OpeningHoursParser: 0.27.0 -> 0.27.1
  • org.webjars.npm:tag2link: 2022.11.28 -> 2023.11.21
    • This now parses OSM Wiki Data Items directly instead of via the (outdated) sophox API
  • org.apache.commons:commons-lang3: 3.13.0 -> 3.14.0
  • org.jacoco:org.jacoco.ant: 0.8.10 -> 0.8.11
    • Official Java 21 support
  • com.github.spotbugs:spotbugs-annotations: 4.7.3 -> 4.8.3
  • io.github.classgraph:classgraph: 4.8.162 -> 4.8.165
  • JUnit platform: 1.10.0 -> 1.10.1
  • JUnit packages: 5.10.0 -> 5.10.1
  • nl.jqno.equalsverifier:equalsverifier: 3.15.1 -> 3.15.4


  • 7.0.12 -> 7.0.13
  • com.guardsquare:proguard-ant: 7.4.0-beta02 -> 7.4.1
  • com.github.spotbugs:spotbugs-annotations: 4.7.3 -> 4.8.3
  • 2.22.0 -> 2.23.0
(edit) @18908   3 months taylor.smock

Fix #23341: Don't set paintstyles to nothing when paintstyles haven't been modified by the user

The original fix (r18907) was a short-term fix that reset paintstyles to the
default if the list was empty. This is not ideal, since people who have
deliberately made their paintstyle list empty now have to clear it every time
JOSM starts.

This patch fixes that by only attempting to remove potlatch2 if the user has
previously modified the painstyle list. The previous patch was necessary to get
most users back to a "known good" state, especially those that have never used
the style settings.

(edit) @18907   3 months taylor.smock

Fix #23341: Paintstyles are wiped when updating when the user has never explicitly changed the styles

Note: See TracRevisionLog for help on using the revision log.