Ignore:
Timestamp:
2023-02-22T19:14:00+01:00 (3 years ago)
Author:
taylor.smock
Message:

Fix #22684: IAE: Parameter 'en1' must not be null in PowerLines.addWaterWaySegments (patch by gaben, modified)

PowerLines.addWaterWaySegments now only adds segments where all nodes have
position data.

This additionally fixes a similar issue caused by inspecting an incomplete
way in InspectPrimitiveDataText. In this case, the centroid is still
calculated, but does not account for how nodes without positional data
will affect the centroid.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/validation/tests/PowerLinesTest.java

    r18553 r18675  
    22package org.openstreetmap.josm.data.validation.tests;
    33
     4import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
    45import static org.junit.jupiter.api.Assertions.assertFalse;
    56import static org.junit.jupiter.api.Assertions.assertTrue;
     
    78import org.junit.jupiter.api.BeforeEach;
    89import org.junit.jupiter.api.Test;
    9 import org.junit.jupiter.api.extension.RegisterExtension;
     10import org.openstreetmap.josm.TestUtils;
    1011import org.openstreetmap.josm.data.coor.LatLon;
    1112import org.openstreetmap.josm.data.osm.DataSet;
    1213import org.openstreetmap.josm.data.osm.Node;
     14import org.openstreetmap.josm.data.osm.Relation;
     15import org.openstreetmap.josm.data.osm.RelationMember;
    1316import org.openstreetmap.josm.data.osm.TagMap;
    1417import org.openstreetmap.josm.data.osm.Way;
    15 import org.openstreetmap.josm.testutils.JOSMTestRules;
    1618import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
     19import org.openstreetmap.josm.testutils.annotations.Projection;
    1720
    1821/**
     
    2124 */
    2225@BasicPreferences
     26@Projection
    2327class PowerLinesTest {
    2428    private PowerLines powerLines;
    2529    private DataSet ds;
    26 
    27     @RegisterExtension
    28     static JOSMTestRules josmTestRules = new JOSMTestRules().projection();
    2930
    3031    @BeforeEach
     
    119120        assertFalse(powerLines.getErrors().isEmpty());
    120121    }
     122
     123    /**
     124     * Ensure that incomplete relations don't cause problems
     125     */
     126    @Test
     127    void testNonRegression22684() {
     128        final Relation powerLine = TestUtils.newRelation("natural=water water=river",
     129                new RelationMember("", TestUtils.newWay("", new Node(), new Node())));
     130        assertDoesNotThrow(() -> this.powerLines.visit(powerLine));
     131    }
    121132}
Note: See TracChangeset for help on using the changeset viewer.