source: josm

Revision Log Mode:


Legend:

Added
Modified
Copied or renamed
Diff Rev Age Author
(edit) @18866   8 months taylor.smock

Fix #23196: DataIntegrityProblemException: Primitive must be part of the dataset

It turns out that FilterModel doesn't care whether a primitive's referrers are
in the dataset or not.

This additionally adds a non-regression test and modifies WindowMocker to cover
some more headless exceptions. This additionally lets us stop mocking
ExtendedDialog#setupDialog.

(edit) @18865   8 months stoecker

see #23228 - i18n update

(edit) @18864   8 months taylor.smock

Fix mistype for secondary_link where the display value was Secondary (patch by KorneySan, see GitHub PR #131)

(edit) @18863   8 months taylor.smock

Fix #23209: Add generator:type=boiler (patch by gaben)

(edit) @18862   8 months taylor.smock

Fix #23232: Improve handrail.svg icon (drawn by AntoninDelFabbro, modified)

It is easier to distinguish this new icon from the icon for benches.

Modifications are as follows:

  • Widen strokes to pixel sizes
  • Ensure that vertical/horizontal strokes are within pixel boundaries
(edit) @18861   8 months stoecker

remove hardcoded plugin Java versions, see #23218

(edit) @18860   8 months stoecker

see #23228 - add sidewalk context to Bus bay

(edit) @18859   8 months taylor.smock

Fix icon viewboxes

(edit) @18858   8 months taylor.smock

See #23218: Fix check-plugins (hardcoded excludes for plugins with min Java versions > 8)

Additional changes:

  • Tabs to spaces (SonarLint)
  • check-plugins can now be run on Java 20 (animal_sniffer does not yet support Java 21)
(edit) @18857   8 months taylor.smock

See #23218: Update proguard to 7.4.0-beta02 for Java 21 support

(edit) @18856   8 months taylor.smock

See #23218: Adapt rendering tests for Java 21

(edit) @18855   8 months stoecker

add some important tags

(edit) @18854   8 months taylor.smock

Fix regression from r18853: test-compile failing due to an import for JavaDoc

(edit) @18853   8 months taylor.smock

See #16567: Update to JUnit 5

This removes new JOSMTestRules() with no additional setup and most
JOSMFixture calls.

Removing the bare JOSMTestRules speeds up the test suite since there are two
fewer System.gc() calls per test.

(edit) @18852   8 months taylor.smock

Fix regression from r18847: Current tests expect a search for access= to match access=null and access="" (has key, but no value)

(edit) @18851   8 months taylor.smock

Fix #23203: Simplify Way dialog can cause a deadlock

This is caused by a write lock being acquired in SimplifyWayAction.actionPerformed
in the EDT and then a read lock is attempted to be acquired in a styled-map-renderer
thread. The styled-map-renderer thread is waited on by the EDT, which causes the
deadlock. The fix is removing the dataset write lock in SimplifyWayAction.actionPerformed
which was added back in 2011. An analysis of the code shows that the commands generated
lock the dataset themselves, so the dataset lock in SimplifyWayAction.actionPerformed
should no longer be necessary.

The deadlock does not happen reliably with only the JOSM default paintstyle; adding
additional paintstyles was required for the initial analysis.

(edit) @18850   8 months taylor.smock

Fix #23187: Don't show validation results panel when no issues will be shown

(edit) @18849   8 months taylor.smock

Fix #16485: Modal dialogs may occasionally be behind another dialog

From the Modality javadocs:

  • keeps its Z-order below the modal dialog that blocks it

Warning! Some window managers allow users to change the window Z-order in an arbitrary way — in that case the last requirement may not be met.

The workaround is to set the blocking dialog as always on top.

(edit) @18848   8 months taylor.smock

GitHub CI: Update java matrix (20, 21-ea -> 21, 22-ea)

(edit) @18847   8 months taylor.smock

Fix #23212: Overpass query wizard should transform key: to ["key"] instead of [~"key"~""]

This is fixed by using ExactKeyValue instead of KeyValue for key: queries.
As a happy side effect, this significantly reduces the cost of key: queries.
In a test area ("Mesa County, Colorado"), this reduces the cpu time from 2600ms
to 200ms and reduces memory allocations from 425mb to effectively 0 for a name:
query.

In addition, this simplifies many equals methods by converting the following
pattern to Objects.equals(first, second):

if (first == null) {
    if (second != null) {
        return true;
    }
} else if (!first.equals(second))
    return false;
return true;

There are some additional changes, mostly related to documentation and lint
issues.

(edit) @18846   9 months taylor.smock

Fix i18n issue introduced in r18843

(edit) @18845   9 months taylor.smock

Fix #23189: Conflict tag tables should resize with the conflict window

(edit) @18844   9 months taylor.smock

Fix some recently introduced issues

  • Fix some issues with updated presets, see r18843
  • Fix a HeadlessException issue in TagEditHelperTest#testTicket23191
(edit) @18843   9 months taylor.smock

Fix #23184: Add/ignore popular tags

Add

Ignore

  • check_date:?*: Used by surveying applications (fix #23182)
  • boundary=religious_administration: Not well documented

Replace

This additionally fixes an issue discovered by gaben in #23183, whereby
values_from="java.util.Locale#getISOCountries" could have some values
translated. This was fixed by adding a values_context attribute; in this case,
I used "country codes".

(edit) @18842   9 months taylor.smock

Fix #23191: NPE in AddTagsDialog

This is caused when a new layer is added via Remote Control while the add tag
dialog is open.

(edit) @18841   9 months taylor.smock

Fix #23183: Add country and target to office=diplomatic

country is needed to indicate which country the diplomatic office belongs
to, and target is needed for the cases where a diplomatic office is outside
the country the embassy owner is communicating with.

(edit) @18840   9 months taylor.smock

Revert r18838, see #23008: natural=coastline does not work well with the changes

This adds a test to ensure future changes don't break the natural=coastline
branch.

(edit) @18839   9 months taylor.smock

Fix #23179: Include changeset in note comment if feasible (patch by qeef, modified)

Modifications are as follows:

  • Unit tests
  • Better note matching
  • Find multiple changesets referring the same note
(edit) @18838   9 months taylor.smock

Fix #23008: Improve PowerLines test performance (patch by gaben)

(edit) @18837   9 months taylor.smock

Fix #23057: An invisible layer should not become active when removing a layer

(edit) @18836   9 months taylor.smock

Reduce memory allocations from SplashScreenProgressRenderer#setTasks

This reduces startup memory allocations from that method to effectively zero from
475 MB. There is a total reduction of ~580 MB (or ~1/3 of startup memory
allocations). This reduces the GC pressure significantly, and reduces startup
time by 2.5-3.8 seconds.

Most of the additional memory allocation reductions come from not needing to
repaint the text caret after the setTasks call.

(edit) @18835   9 months taylor.smock

Fix #22134: Only show cycle dashes on one side of roundabout

(edit) @18834   9 months taylor.smock

Fix #23149: Add line_arrangement to power supports presets (patch by gaben)

(edit) @18833   9 months taylor.smock

Fix #17052: Allow plugins to save state to session file

The primary feature request was for the TODO plugin to save the list elements for
a future session.

This allows plugins to register via ServiceLoader classes which need to be
called to save or restore their state.

In addition, this fixes an ordering issue with tests whereby the OsmApi cache
would be cleared, but the FakeOsmApi class would not recache itself when called.

(edit) @18832   9 months stoecker

JavaDoc

(edit) @18831   9 months taylor.smock

Fix #23112: Expand visibility of some objects and methods in JCSCachedTileLoaderJob for plugin subclasses

(edit) @18830   9 months taylor.smock

Fix #23111: Hoist the common acceptsDocumentationSummary DownloadTask method definition into the interface

(edit) @18829   9 months taylor.smock

Fix #16998: Add parent_osm_primitives and convert_primitives_to_string

(edit) @18828   9 months taylor.smock

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

This prevents users from using Basic Authentication or OAuth 1.0a unless one of the following is true:

  • They were previously using the authentication method
  • They have enabled Expert Mode
  • They are not using the default OSM API
(edit) @18827   9 months taylor.smock

See #23165: Use test file with smaller (Integer.MAX_VALUE) changeset id

(edit) @18826   9 months taylor.smock

Fix #23165: Cannot assign a changesetId > 0 to a new primitive

There were two problems:

  1. Using Number.intValue instead of Number.longValue
  2. Using >> instead of >>> (bit shift)
(edit) @18825   9 months taylor.smock

Fix #23169: NPE when running validator with no validations enabled

(edit) @18824   9 months taylor.smock

Fix #23153: Remote Control API call is adding hashtags many times

This occurs due to adding the hashtags to the comment multiple times.

This is fixed by doing the following:
1) When finding hashtags from a comment, only return the distinct hashtags
2) When adding hashtags from the dataset, only add hashtags that are not already

part of the comment.

(edit) @18823   9 months taylor.smock

Improve performance for TaggingPresetSelector$PresetClassifications.getMatchingPresets

This was found when profiling with the Name Suggestion Index enabled.

The improvements are as follows:

  • ~80% reduction in CPU usage
  • ~85% reduction in memory allocations

A good chunk of the remaining cpu cycles and memory allocations is from the sort
operation.

Non-performance related changes are as follows:

  • Add documentation
  • Lint fixes
(edit) @18822   9 months taylor.smock

i18n update

(edit) @18821   10 months taylor.smock

Fix #23140: RejectedExecutionException when MultiFetchServerObjectReader is cancelled while creating download jobs

This was caused by a race condition.
User starts a download, and cancels it as jobs are submitted to the thread pool.
The next job to be submitted will cause a RejectedExecutionException. In order
to fix this, we ensure that we shutdown the thread pool inside a synchronized
block, and add jobs to the executor inside a synchronized block.

(edit) @18820   10 months taylor.smock

Fix #23138: Add characters for Lushootseed to TagChecker#isAllowedPhoneticCharacter

(edit) @18819   10 months taylor.smock

See #22652, r18817: Stop parsing gpx files when point elements have invalid coordinates

This adds back the wpt check that was temporarily removed in r18818 to get back
to the previous "known good" state and additionally adds checks for rtept and
trkpt elements.

This also removes a change to build.xml that was accidentally committed in r18818.
The specific change (adding Automatic-Module-Name to the JOSM manifest) will
probably be done in a separate commit in the future.

(edit) @18818   10 months taylor.smock

Fix tests

(edit) @18817   10 months taylor.smock

Fix #22652: Stop parsing gpx files when wpt elements do not have valid coordinates

This does move the parsing code out of GpxReader into GpxParser and refactors it
so that it is (hopefully) easier to understand and debug.

(edit) @18816   10 months taylor.smock

Fix #23134: Cancelling a json download will cause an exception dialog

We extract the underlying IOException from the JsonException into an
IllegalDataException which can be parsed by calling methods and properly handled.

(edit) @18815   10 months taylor.smock

Improve paste behavior of large amounts of data

Both SelectionListDialog and MapStatus can use the consolidated events, which
drastically reduces the amount of time spent pasting large amounts of data. This
reduces the time spent in their listener methods by >99%.

The test paste of 41k objects took ~20s after the change and ~80s prior to the change.

A good chunk of the remaining time spent pasting is from checking to see whether
an upload is needed. Fixing that will take a lot more work, since there is
currently no concept of consolidated events for that specific listener type.

This was found while investigating #4145.

(edit) @18814   10 months taylor.smock

Fix #23105: Add action to select shared/common child objects (patch by Woazboat, modified)

Modifications are as follows:

  • Basic test added
  • Icon added (copied and modified from selectall.svg)
  • default methods for IPrimitive.getChildren were moved to the appropriate locations
  • Lint cleanups in modified files

Additional notes:

  • The behavior when only one way is selected is very similar to SelectWayNodesAction from utilsplugin2
(edit) @18813   10 months taylor.smock

See #22832: Don't quote $JPACKAGEOPTIONS

(edit) @18812   10 months taylor.smock

Fix #23110: Add cash_in to amenity=atm

This also ignores some tags.

(edit) @18811   10 months taylor.smock

Fix #23124: Azul Java 17.0.4.1 will cause a NumberFormatException

Java can have multiple dots instead of just two. Specifically, the Java version
specifier is $MAJOR.$MINOR.$SECURITY.$PATCH.

Previously, we assumed that there would only ever be two dots in the version
specifier, and got the first and last dot. Now we get the first and second dot.

In addition, this fixes some lint issues.

(edit) @18810   10 months taylor.smock

Dependency updates

  • jakarta.json-api: 2.1.1 -> 2.1.2
  • org.eclipse.parsson: 1.1.1 -> 1.1.4
    • Fix an SOE caused by parsing an untrusted string
  • org.apache.commons-lang3: 3.12.0 -> 3.13.0
    • Various bugfixes and enhancements
  • io.github.classgraph: 4.8.158 -> 4.8.162
    • Better support for MRJars
  • JUnit 5.9.3 -> 5.10.0
    • Stacktrace pruning to hide internal JUnit calls
(edit) @18809   10 months taylor.smock

See #23125: Prefer notarytool if it is available; fall back to altool if it is not

The altool notarization process will stop working in the next few months, so we
need to switch to notarytool.

For now, we will try to use notarytool, and if I messed up the command line,
it should fall back to altool.

(edit) @18808   10 months stoecker

move nodes count into own function, so it can be changed in a sub class

(edit) @18807   10 months taylor.smock

Allow importing geojson files that were saved to a session file

  • GeoJSONImporter now extends OsmImporter instead of FileImporter and deprecates the parseDataSet(String) method.
(edit) @18806   10 months taylor.smock

Fix #23119: NPE in RemoteEntry.getLastModified

(edit) @18805   10 months taylor.smock

Fix #23117: NPE in PlaceSelection$NamedResultTableModel

This occurs when (a) search results are returned and then (b) the user searches
for more results, but nominatim returns garbage.

In addition, this also fixes some lint issues.

(edit) @18804   10 months taylor.smock

Fix #23116: Adding a member to a newly created relation will cause an NPE

This was caused by returning a null relation for a new relation.

(edit) @18803   10 months taylor.smock

remove TLD from IANA

(edit) @18802   10 months taylor.smock

Fix #23109, see #18982 (r16217): Use the error body from the exception if it is HTML

(edit) @18801   10 months taylor.smock

Fix #22832: Code cleanup and some simplification, documentation fixes (patch by gaben)

There should not be any functional changes in this patch; it is intended to do
the following:

  • Simplify and cleanup code (example: Arrays.asList(item) -> Collections.singletonList(item))
  • Fix typos in documentation (which also corrects the documentation to match what actually happens, in some cases)
(edit) @18800   10 months taylor.smock

Add WindowMocker to test to fix test failure

(edit) @18799   10 months taylor.smock

See r18798: Actually use the @Territories annotation

This also fixes some tests that fail with specific options, but were passing due
to run order.

(edit) @18798   10 months taylor.smock

See #16567: Add @Territories annotation for JUnit 5

This reduces memory allocations during test runs by ~20% since we are no longer
running Territories.initialize() on every test where JOSMTestRules.territories()
was called. This reduced overall test time by ~10%, mostly due to less time spent
in JVM internals.

(edit) @18797   10 months taylor.smock

Fix #21364: GPX export of image new position use old coordinates

This was due to not clearing cached data (done for performance reasons)

(edit) @18796   10 months taylor.smock

Fix #23097: Significantly reduce allocations during startup in XmlObjectParser, PluginListParser, and ReadLocalPluginInformationTask

With the Name Suggestion Index preset added to JOSM, the following methods are
relatively expensive during startup (mem old -> mem new, cpu old -> cpu new):

  • XmlObjectParser$Entry.getField (124 MB -> 8.1 MB, 501ms -> 99ms)
  • XmlObjectParser$Entry.getMethod (126 MB -> 452 kB, 292ms -> 45ms)

The gains are almost entirely from getting rid of copy calls to Method and Field
(done when calling Class.getMethods() and Class.getFields()). There are
further gains in JVM methods (like GC), but those can be a bit ticklish to
profile correctly. It does look like a 20% improvement there though
(32,653ms -> 26,075ms).

This additionally reduces pattern compilation from PluginListParser.parse and
ReadLocalPluginInformationTask.listFiles.

(edit) @18795   10 months taylor.smock

Fix #23095: Missing space after name template output (patch by matthijs)

(edit) @18794   10 months taylor.smock

Fix #23085: Improve speed of selecting large amounts of objects

  • JVM CPU usage was down ~50%, EDT CPU usage was down ~25%. EDT memory usage was down
  • Avoid Stream allocations in ConflictCollection.hasConflictForMy by only looking for a conflict if conflicts exist
  • Avoid many string instantiations in DefaultNameFormatter by using cached properties. This significantly reduces memory allocations CPU usage for DefaultNameFormatter methods.
  • Avoid some Stream allocations by using standard for loops in DefaultNameFormatter
  • Use "" to get the component in PrimitiveRenderer.getListCellRendererComponent -- this reduced the memory allocations by ~50% and CPU usage by ~70% for getListCellRendererComponent by itself, and appears to have no side-effects. We should ask users on different systems with different UI systems if it works properly.
  • Significantly reduce cost of Way.hasOnlyLocatableNodes by using a standard for loop instead of a stream -- this isn't as important for this ticket, but was found while profiling. This makes that method have no effective memory allocations and reduces the CPU usage by ~90%.
(edit) @18793   10 months taylor.smock

Fix #23091: Opening a preset from inside a relation editor causes a DataIntegrityProblemException

(edit) @18792   10 months taylor.smock

Fix #23018: The Name Suggestion Index preset causes dramatic slowing in line drawing and following

The root cause is that every time the dataset fires a DataChangedEvent, we
rebuild the relation list. This causes a search in the presets, which can become
very expensive with the NSI. To fix this, we instead iterate through each
individual event in the DataChangedEvent, and perform the appropriate action.

(edit) @18791   10 months taylor.smock

remove TLD from IANA

(edit) @18790   10 months taylor.smock

Fix #23103, see #17858: Notify users that a plugin requires a newer Java version

We were previously only logging a warning if a plugin required a newer Java
version. We additionally needed to update the download link generation for Azul
and sync the next minimum Java version with that used by the JOSM wiki check.

There was also a help topic that linked to a dead page (which was also
unavailable in the internet archive).

(edit) @18789   10 months taylor.smock

i18n update

(edit) @18788   11 months stoecker

fix tests

(edit) @18787   11 months stoecker

separate NmeaParser from NmeaReader

(edit) @18786   11 months taylor.smock

Fix #23083: SocketTimeoutException in OAuth20Authorization$OAuth20AuthorizationHandler.handleRequest

(edit) @18785   11 months taylor.smock

remove TLD from IANA

(edit) @18784   11 months taylor.smock

See #23081: NoSuchElementException in ConflictDialog.ResolveToAction#actionPerformed, fix extra indentation

(edit) @18783   11 months taylor.smock

Fix #23081: NoSuchElementException in ConflictDialog.ResolveToAction#actionPerformed

This occurs when one of the Resolve to (my|their) versions actions is called
when no conflict is selected.

There are two distinct bugs:

  • isConflictSelected did not check to make certain that the selection index made sense
  • ResolveActions were not enabled/disabled when the popup menu became visible, depending upon whether the current selection was valid
(edit) @18782   11 months taylor.smock

Fix #23024: Set foreground color for feedback warning label (patch by Larsossum, modified)

This fixes an issue where a dark colour theme would use a light-coloured
foreground when we set the background colour to a light colour.

(edit) @18781   11 months taylor.smock

Fix #23023: Fix logic for enabling buttons in color preferences (patch by Larsossum)

This makes the buttons work properly with the filterfield.

(edit) @18780   11 months taylor.smock

Fix #22733: Add UI feedback for url guessing, account for nan responses from servers

(edit) @18779   11 months taylor.smock

Fix #23078: Improve cancel action on OSM API errors (patch by gaben, heavily modified)

(edit) @18778   11 months taylor.smock

Fix #23079: Freeze on conflict resolution after upload

(edit) @18777   11 months taylor.smock

Reduce allocations during startup from Shape

Shape#hashCode made between 8 and 24 MB of allocations at startup. This was
reduced by moving the math out of Arrays#hash and the default List#hash methods.
This additionally reduced the allocations from the Shape#equals method.

As an implementation note, the Shape#hashCode method returns exactly the same
hashcode as it did prior to this change. This may change in the future.

(edit) @18776   11 months taylor.smock

See #23049, fix an issue where tests might visit the entire dataset during upload

(edit) @18775   11 months taylor.smock

Fix #23049: Informational errors cause validator dialog to occur on upload, even if they are not enabled

(edit) @18774   11 months taylor.smock

remove TLD from IANA

(edit) @18773   11 months taylor.smock

See #22990: synchronize jakarta.json versions in ivy.xml

(edit) @18772   11 months taylor.smock

i18n update

(edit) @18771   11 months taylor.smock

Fix #23022: Application name on macOS 12 is MainApplication

(edit) @18770   12 months taylor.smock

Fix a potential resource leak (CID-1349914)

(edit) @18769   12 months taylor.smock

Fix #22569: Add beauty multiselect key to shop=beauty preset (patch by jose1711)

(edit) @18768   12 months taylor.smock

Fix #22534: Inform users when the clipboard has too much data

(edit) @18767   12 months taylor.smock

Fix #23015, see #2483: Right click (map move) + scale/rotate modes should not interfere with each other

The workaround added for #2483 (r1634, Java 5) does not appear to be needed
anymore (tested with a Magic Mouse in one-button mode under Java 8). Removing
the workaround fixes the behavior whereby a right-click will cause the
scale/rotate mode to be enabled.

To fix extraneous commands being generated during a map pan when scale/rotate
mode is enabled, we check to see if the right mouse button is down in
updateCommandWhileDragging.

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