Fix #23186: NPE when validating relation with no complete members

Signed-off-by: Taylor Smock <tsmock@meta.com>
pull/40/head v814
Taylor Smock 2023-09-22 05:39:55 -06:00
rodzic 409662a664
commit bac594e719
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 233BB2E466604E27
2 zmienionych plików z 23 dodań i 4 usunięć

Wyświetl plik

@ -156,10 +156,12 @@ public class StreetAddressTest extends Test {
} else {
en = primitive.getBBox().getCenter().getEastNorth(ProjectionRegistry.getProjection());
}
long x = (long) Math.floor(en.getX() * gridDetail);
long y = (long) Math.floor(en.getY() * gridDetail);
final var point = new Point2D.Double(x, y);
primitiveCellMap.computeIfAbsent(point, p -> new ArrayList<>()).add(primitive);
if (en != null) {
long x = (long) Math.floor(en.getX() * gridDetail);
long y = (long) Math.floor(en.getY() * gridDetail);
final var point = new Point2D.Double(x, y);
primitiveCellMap.computeIfAbsent(point, p -> new ArrayList<>()).add(primitive);
}
}
}
}

Wyświetl plik

@ -17,8 +17,11 @@ import org.openstreetmap.josm.data.osm.AbstractPrimitive;
import org.openstreetmap.josm.data.osm.BBox;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.Relation;
import org.openstreetmap.josm.data.osm.RelationMember;
import org.openstreetmap.josm.data.osm.Way;
import org.openstreetmap.josm.data.validation.OsmValidator;
import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
import org.openstreetmap.josm.testutils.annotations.Projection;
import org.openstreetmap.josm.tools.Pair;
@ -138,4 +141,18 @@ class StreetAddressTestTest {
assertDoesNotThrow(() -> test.visit(node));
assertTrue(test.getErrors().isEmpty());
}
@Test
void testNonRegression23186() {
final StreetAddressTest test = new StreetAddressTest();
final Relation relation = TestUtils.newRelation(
"addr:city=Alpine " + "addr:housenumber=501 " + "addr:postcode=83128 " + "addr:state=WY "
+ "addr:street=Palisades Reservoir County Road 101 " + "landuse=quarry "
+ "name=Alota Sand & Gravel Inc " + "phone=+1-307-654-7558 " + "resource=gravel "
+ "type=multipolygon",
new RelationMember("outer", new Way(968962006L)), new RelationMember("outer", new Way(968961999L)));
test.startTest(NullProgressMonitor.INSTANCE);
assertDoesNotThrow(() -> test.visit(relation));
test.endTest();
}
}