From 218e240cb9fccacfc147296b1d4b28c2aa90d9f6 Mon Sep 17 00:00:00 2001 From: teppope Date: Fri, 30 Oct 2026 14:34:07 +0200 Subject: [PATCH] Parse a parking that has no ParentSiteRef Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../netex/loader/parser/SiteFrameParser.java | 7 ++- .../loader/parser/SiteFrameParserTest.java | 51 +++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/entur/netex/loader/parser/SiteFrameParserTest.java diff --git a/src/main/java/org/entur/netex/loader/parser/SiteFrameParser.java b/src/main/java/org/entur/netex/loader/parser/SiteFrameParser.java index b4b3b9f8..5857d0dd 100644 --- a/src/main/java/org/entur/netex/loader/parser/SiteFrameParser.java +++ b/src/main/java/org/entur/netex/loader/parser/SiteFrameParser.java @@ -165,7 +165,12 @@ private void parseParkings( for (JAXBElement jaxbParking : parkingList) { if (jaxbParking.getValue() instanceof Parking parking) { parkings.add(parking); - parkingsByStopPlaceId.put(parking.getParentSiteRef().getRef(), parking); + if (parking.getParentSiteRef() != null) { + parkingsByStopPlaceId.put( + parking.getParentSiteRef().getRef(), + parking + ); + } } } } diff --git a/src/test/java/org/entur/netex/loader/parser/SiteFrameParserTest.java b/src/test/java/org/entur/netex/loader/parser/SiteFrameParserTest.java new file mode 100644 index 00000000..e56f11be --- /dev/null +++ b/src/test/java/org/entur/netex/loader/parser/SiteFrameParserTest.java @@ -0,0 +1,51 @@ +package org.entur.netex.loader.parser; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.entur.netex.index.impl.NetexEntitiesIndexImpl; +import org.entur.netex2.model.*; +import org.junit.jupiter.api.Test; + +class SiteFrameParserTest { + + private static final ObjectFactory FACTORY = new ObjectFactory(); + + @Test + void parkingWithoutParentSiteRefIsIndexed() { + Parking withoutParent = new Parking() + .withId("NSR:Parking:1") + .withVersion("1"); + Parking withParent = new Parking() + .withId("NSR:Parking:2") + .withVersion("1") + .withParentSiteRef(new SiteRefStructure().withRef("NSR:StopPlace:1")); + + SiteFrameParser parser = new SiteFrameParser(); + parser.parse( + new SiteFrame() + .withId("NSR:SiteFrame:1") + .withParkings( + new ParkingsInFrame_RelStructure() + .withParking( + FACTORY.createParking(withoutParent), + FACTORY.createParking(withParent) + ) + ) + ); + NetexEntitiesIndexImpl index = new NetexEntitiesIndexImpl(); + parser.setResultOnIndex(index); + + assertNotNull(index.getParkingIndex().getLatestVersion("NSR:Parking:1")); + assertNotNull(index.getParkingIndex().getLatestVersion("NSR:Parking:2")); + assertEquals(1, index.getParkingsByParentSiteRefIndex().size()); + assertEquals( + withParent, + index + .getParkingsByParentSiteRefIndex() + .get("NSR:StopPlace:1") + .iterator() + .next() + ); + } +}