diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index e3b48d3f..9f1f317c 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -3,6 +3,7 @@ on: push: branches: - main + - upgrade_netex_2_0 pull_request: branches: - main @@ -27,7 +28,7 @@ jobs: wget https://raw.githubusercontent.com/entur/ror-maven-settings/master/.m2/settings_release_maven_central.xml -O .github/workflows/settings.xml - uses: actions/setup-java@v6.0.1 with: - java-version: 17 + java-version: 21 distribution: liberica - name: Cache Maven dependencies uses: actions/cache@v5.1.0 @@ -69,4 +70,13 @@ jobs: secrets: inherit with: push_to_repo: true - snapshot: false \ No newline at end of file + snapshot: false + publish-snapshot: + if: github.repository_owner == 'entur' && github.event_name == 'push' && github.ref == 'refs/heads/upgrade_netex_2_0' + needs: [maven-package] + name: Publish snapshot to maven central + uses: entur/gha-maven-central/.github/workflows/maven-publish.yml@v1 + secrets: inherit + with: + push_to_repo: true + snapshot: true \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 683d6f74..b50ce0f0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,7 +28,7 @@ mvn prettier:write mvn validate -P prettierCheck ``` -Java 17 is required. The project uses prettier-java for code formatting (runs in the `validate` phase by default). Use `-Dprettier.skip=true` to skip formatting during development. +Java 21 is required. The project uses prettier-java for code formatting (runs in the `validate` phase by default). Use `-Dprettier.skip=true` to skip formatting during development. ## Architecture diff --git a/pom.xml b/pom.xml index 6c950523..10b336b4 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.entur netex-validator-java - 12.0.12-SNAPSHOT + 13.0.0-SNAPSHOT netex-validator-java Library for validating NeTEx datasets against the Nordic NeTEx Profile. @@ -53,10 +53,10 @@ UTF-8 - 17 + 21 - 2.0.16.2 - 4.0.14 + 3.0.0-SNAPSHOT + 5.0.0-SNAPSHOT 12.10 33.0 2.7 @@ -97,8 +97,8 @@ - 17 - 17 + 21 + 21 @@ -110,8 +110,8 @@ org.entur - netex-java-model - ${netex-java-model.version} + netex2-java-model + ${netex2-java-model.version} org.entur @@ -481,6 +481,16 @@ Open Source Geospatial Foundation Repository https://repo.osgeo.org/repository/release/ + + maven-snapshots + https://central.sonatype.com/repository/maven-snapshots + + false + + + true + + @@ -531,7 +541,7 @@ - 17 + 21 diff --git a/src/main/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContext.java b/src/main/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContext.java index 345d2cf4..4d84a012 100644 --- a/src/main/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContext.java +++ b/src/main/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContext.java @@ -9,7 +9,7 @@ import org.entur.netex.validation.validator.id.IdVersion; import org.entur.netex.validation.validator.jaxb.support.DatedServiceJourneyUtils; import org.entur.netex.validation.validator.model.*; -import org.rutebanken.netex.model.*; +import org.entur.netex2.model.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -332,8 +332,7 @@ public Collection serviceCalendarFrames() { */ @Nullable public TransportModeAndSubMode transportModeAndSubMode(ServiceJourney serviceJourney) { - AllVehicleModesOfTransportEnumeration transportMode = - serviceJourney.getTransportMode(); + AllPublicTransportModesEnumeration transportMode = serviceJourney.getTransportMode(); TransportSubmodeStructure subModeStructure = serviceJourney.getTransportSubmode(); diff --git a/src/main/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepository.java b/src/main/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepository.java index 12111efa..1853ed6d 100644 --- a/src/main/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepository.java +++ b/src/main/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepository.java @@ -2,12 +2,13 @@ import javax.annotation.Nullable; import org.entur.netex.index.api.NetexEntitiesIndex; +import org.entur.netex.validation.validator.model.MultilingualStringValue; import org.entur.netex.validation.validator.model.QuayCoordinates; import org.entur.netex.validation.validator.model.QuayId; import org.entur.netex.validation.validator.model.StopPlaceId; import org.entur.netex.validation.validator.model.TransportModeAndSubMode; -import org.rutebanken.netex.model.Quay; -import org.rutebanken.netex.model.StopPlace; +import org.entur.netex2.model.Quay; +import org.entur.netex2.model.StopPlace; /** * Stop place repository that retrieves stop place data from the SiteFrame in the current file. @@ -69,10 +70,8 @@ public String getStopPlaceNameForQuayId(QuayId quayId) { if (stopPlaceId == null) { return null; } - return netexEntitiesIndex - .getStopPlaceIndex() - .getLatestVersion(stopPlaceId) - .getName() - .getValue(); + return MultilingualStringValue.of( + netexEntitiesIndex.getStopPlaceIndex().getLatestVersion(stopPlaceId).getName() + ); } } diff --git a/src/main/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtils.java b/src/main/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtils.java index d35a0be9..7d603cff 100644 --- a/src/main/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtils.java +++ b/src/main/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtils.java @@ -2,8 +2,8 @@ import jakarta.xml.bind.JAXBElement; import javax.annotation.Nullable; -import org.rutebanken.netex.model.DatedServiceJourney; -import org.rutebanken.netex.model.VehicleJourneyRefStructure; +import org.entur.netex2.model.DatedServiceJourney; +import org.entur.netex2.model.VehicleJourneyRefStructure; public class DatedServiceJourneyUtils { @@ -16,6 +16,9 @@ private DatedServiceJourneyUtils() {} public static String originalDatedServiceJourneyRef( DatedServiceJourney datedServiceJourney ) { + if (datedServiceJourney.getReplacedJourneys() == null) { + return null; + } return datedServiceJourney .getReplacedJourneys() .getDatedVehicleJourneyRefOrNormalDatedVehicleJourneyRef() diff --git a/src/main/java/org/entur/netex/validation/validator/model/DayTypeId.java b/src/main/java/org/entur/netex/validation/validator/model/DayTypeId.java index 4b30c812..c3613ead 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/DayTypeId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/DayTypeId.java @@ -5,7 +5,7 @@ import java.util.Objects; import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.*; +import org.entur.netex2.model.*; /** * The NeTEx id of DayType. diff --git a/src/main/java/org/entur/netex/validation/validator/model/FromToScheduledStopPointId.java b/src/main/java/org/entur/netex/validation/validator/model/FromToScheduledStopPointId.java index 4280be84..7d1693e3 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/FromToScheduledStopPointId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/FromToScheduledStopPointId.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.model; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.ServiceLink; +import org.entur.netex2.model.ServiceLink; /** * The pair of ScheduledStopPoint ids representing the "from" and "to" ends of a ServiceLink. diff --git a/src/main/java/org/entur/netex/validation/validator/model/MultilingualStringValue.java b/src/main/java/org/entur/netex/validation/validator/model/MultilingualStringValue.java new file mode 100644 index 00000000..0ca638f1 --- /dev/null +++ b/src/main/java/org/entur/netex/validation/validator/model/MultilingualStringValue.java @@ -0,0 +1,35 @@ +package org.entur.netex.validation.validator.model; + +import java.io.Serializable; +import java.util.List; +import javax.annotation.Nullable; +import org.entur.netex2.model.MultilingualString; + +/** + * Helper for extracting string values from NeTEx MultilingualString. + * In NeTEx 2.0 (netex2-java-model 3.x), MultilingualString uses a mixed content model + * where text is stored in getContent() as a List of Serializable objects, + * replacing the previous getValue() method. + */ +public final class MultilingualStringValue { + + private MultilingualStringValue() {} + + @Nullable + public static String of(@Nullable MultilingualString multilingualString) { + if (multilingualString == null) { + return null; + } + List content = multilingualString.getContent(); + if (content == null || content.isEmpty()) { + return null; + } + StringBuilder sb = new StringBuilder(); + for (Serializable item : content) { + if (item instanceof String s) { + sb.append(s); + } + } + return sb.isEmpty() ? null : sb.toString(); + } +} diff --git a/src/main/java/org/entur/netex/validation/validator/model/OperatingDayId.java b/src/main/java/org/entur/netex/validation/validator/model/OperatingDayId.java index 1c6f6403..767d5e53 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/OperatingDayId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/OperatingDayId.java @@ -4,7 +4,7 @@ import java.util.Optional; import java.util.function.Function; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.*; +import org.entur.netex2.model.*; /** * The NeTEx id of OperatingDay. diff --git a/src/main/java/org/entur/netex/validation/validator/model/QuayCoordinates.java b/src/main/java/org/entur/netex/validation/validator/model/QuayCoordinates.java index 25f08b09..2c44dee3 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/QuayCoordinates.java +++ b/src/main/java/org/entur/netex/validation/validator/model/QuayCoordinates.java @@ -1,10 +1,10 @@ package org.entur.netex.validation.validator.model; import org.entur.netex.validation.exception.NetexValidationException; +import org.entur.netex2.model.LocationStructure; +import org.entur.netex2.model.Quay; +import org.entur.netex2.model.StopPlace; import org.locationtech.jts.geom.Coordinate; -import org.rutebanken.netex.model.LocationStructure; -import org.rutebanken.netex.model.Quay; -import org.rutebanken.netex.model.StopPlace; /** * Latitude and longitude of a NeTEx Quay. diff --git a/src/main/java/org/entur/netex/validation/validator/model/QuayId.java b/src/main/java/org/entur/netex/validation/validator/model/QuayId.java index ec70413b..e5d8535d 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/QuayId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/QuayId.java @@ -3,8 +3,8 @@ import java.util.Objects; import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.Quay; -import org.rutebanken.netex.model.QuayRefStructure; +import org.entur.netex2.model.Quay; +import org.entur.netex2.model.QuayRefStructure; /** * The NeTEx id of Quay. diff --git a/src/main/java/org/entur/netex/validation/validator/model/ScheduledStopPointId.java b/src/main/java/org/entur/netex/validation/validator/model/ScheduledStopPointId.java index 8b3f8aa1..06349c7d 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/ScheduledStopPointId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/ScheduledStopPointId.java @@ -2,8 +2,8 @@ import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.ScheduledStopPointRefStructure; -import org.rutebanken.netex.model.StopPointInJourneyPattern; +import org.entur.netex2.model.ScheduledStopPointRefStructure; +import org.entur.netex2.model.StopPointInJourneyPattern; /** * The NeTEx id od a ScheduledStopPoint. diff --git a/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyId.java b/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyId.java index 32af7542..169861ef 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyId.java @@ -5,8 +5,8 @@ import net.sf.saxon.s9api.XdmItem; import net.sf.saxon.s9api.streams.XdmStream; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.ServiceJourney; -import org.rutebanken.netex.model.VehicleJourneyRefStructure; +import org.entur.netex2.model.ServiceJourney; +import org.entur.netex2.model.VehicleJourneyRefStructure; public record ServiceJourneyId(String id) { public ServiceJourneyId { diff --git a/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyInterchangeInfo.java b/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyInterchangeInfo.java index 7129d800..72e9ca12 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyInterchangeInfo.java +++ b/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyInterchangeInfo.java @@ -2,8 +2,8 @@ import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.ServiceJourneyInterchange; -import org.rutebanken.netex.model.VersionOfObjectRefStructure; +import org.entur.netex2.model.ServiceJourneyInterchange; +import org.entur.netex2.model.VersionOfObjectRefStructure; public record ServiceJourneyInterchangeInfo( String filename, diff --git a/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyStop.java b/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyStop.java index 5552d5a0..049d3398 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyStop.java +++ b/src/main/java/org/entur/netex/validation/validator/model/ServiceJourneyStop.java @@ -3,7 +3,7 @@ import java.math.BigInteger; import java.time.LocalTime; import java.util.Optional; -import org.rutebanken.netex.model.TimetabledPassingTime; +import org.entur.netex2.model.TimetabledPassingTime; /** * The NeTEx id of ScheduledStopPoint. diff --git a/src/main/java/org/entur/netex/validation/validator/model/ServiceLinkId.java b/src/main/java/org/entur/netex/validation/validator/model/ServiceLinkId.java index 20fc01d7..03f361e2 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/ServiceLinkId.java +++ b/src/main/java/org/entur/netex/validation/validator/model/ServiceLinkId.java @@ -2,9 +2,9 @@ import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.LinkInJourneyPattern; -import org.rutebanken.netex.model.ServiceLink; -import org.rutebanken.netex.model.VersionOfObjectRefStructure; +import org.entur.netex2.model.LinkInJourneyPattern; +import org.entur.netex2.model.ServiceLink; +import org.entur.netex2.model.VersionOfObjectRefStructure; /** * The NeTEx id of a ServiceLink. diff --git a/src/main/java/org/entur/netex/validation/validator/model/SimpleLine.java b/src/main/java/org/entur/netex/validation/validator/model/SimpleLine.java index b538640e..707f604c 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/SimpleLine.java +++ b/src/main/java/org/entur/netex/validation/validator/model/SimpleLine.java @@ -3,9 +3,8 @@ import java.util.Objects; import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.FlexibleLine; -import org.rutebanken.netex.model.Line; -import org.rutebanken.netex.model.MultilingualString; +import org.entur.netex2.model.FlexibleLine; +import org.entur.netex2.model.Line; /** * Light-way representation of a NeTEx Line. @@ -21,7 +20,7 @@ public record SimpleLine(String lineId, String lineName, String fileName) { public static SimpleLine of(Line line, String fileName) { return new SimpleLine( line.getId(), - Optional.ofNullable(line.getName()).map(MultilingualString::getValue).orElse(null), + Optional.ofNullable(line.getName()).map(MultilingualStringValue::of).orElse(null), fileName ); } @@ -31,7 +30,7 @@ public static SimpleLine of(FlexibleLine flexibleLine, String fileName) { flexibleLine.getId(), Optional .ofNullable(flexibleLine.getName()) - .map(MultilingualString::getValue) + .map(MultilingualStringValue::of) .orElse(null), fileName ); diff --git a/src/main/java/org/entur/netex/validation/validator/model/TransportModeAndSubMode.java b/src/main/java/org/entur/netex/validation/validator/model/TransportModeAndSubMode.java index e510e5c8..d77647df 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/TransportModeAndSubMode.java +++ b/src/main/java/org/entur/netex/validation/validator/model/TransportModeAndSubMode.java @@ -2,15 +2,15 @@ import java.util.Objects; import javax.annotation.Nullable; -import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration; -import org.rutebanken.netex.model.StopPlace; -import org.rutebanken.netex.model.TransportSubmodeStructure; +import org.entur.netex2.model.AllPublicTransportModesEnumeration; +import org.entur.netex2.model.StopPlace; +import org.entur.netex2.model.TransportSubmodeStructure; /** * A pair of mode and sub-mode. */ public record TransportModeAndSubMode( - AllVehicleModesOfTransportEnumeration mode, + AllPublicTransportModesEnumeration mode, TransportSubMode subMode ) { public TransportModeAndSubMode { @@ -25,7 +25,7 @@ public record TransportModeAndSubMode( */ @Nullable public static TransportModeAndSubMode of(StopPlace stopPlace) { - AllVehicleModesOfTransportEnumeration transportMode = stopPlace.getTransportMode(); + AllPublicTransportModesEnumeration transportMode = stopPlace.getTransportMode(); if (transportMode == null) { return null; } @@ -42,7 +42,7 @@ public static TransportModeAndSubMode of(StopPlace stopPlace) { */ @Nullable public static TransportModeAndSubMode of( - AllVehicleModesOfTransportEnumeration transportMode, + AllPublicTransportModesEnumeration transportMode, TransportSubmodeStructure submodeStructure ) { if (transportMode == null) { diff --git a/src/main/java/org/entur/netex/validation/validator/model/TransportSubMode.java b/src/main/java/org/entur/netex/validation/validator/model/TransportSubMode.java index a72af12a..167e2443 100644 --- a/src/main/java/org/entur/netex/validation/validator/model/TransportSubMode.java +++ b/src/main/java/org/entur/netex/validation/validator/model/TransportSubMode.java @@ -3,9 +3,9 @@ import java.util.Objects; import java.util.Optional; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration; -import org.rutebanken.netex.model.StopPlace; -import org.rutebanken.netex.model.TransportSubmodeStructure; +import org.entur.netex2.model.AllPublicTransportModesEnumeration; +import org.entur.netex2.model.StopPlace; +import org.entur.netex2.model.TransportSubmodeStructure; /** * A NeTEx transport sub-mode. @@ -64,7 +64,7 @@ public static Optional of(StopPlace stopPlace) { } public static Optional of( - AllVehicleModesOfTransportEnumeration transportMode, + AllPublicTransportModesEnumeration transportMode, TransportSubmodeStructure subModeStructure ) { if (transportMode == null || subModeStructure == null) { diff --git a/src/main/java/org/entur/netex/validation/validator/schema/NetexSchemaValidator.java b/src/main/java/org/entur/netex/validation/validator/schema/NetexSchemaValidator.java index 03001b0e..7862e06f 100644 --- a/src/main/java/org/entur/netex/validation/validator/schema/NetexSchemaValidator.java +++ b/src/main/java/org/entur/netex/validation/validator/schema/NetexSchemaValidator.java @@ -10,7 +10,7 @@ import org.entur.netex.validation.exception.NetexValidationException; import org.entur.netex.validation.validator.*; import org.entur.netex.validation.xml.NetexSchemaRepository; -import org.rutebanken.netex.validation.NeTExValidator; +import org.entur.netex2.validation.NeTExValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.ErrorHandler; diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessProperty.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessProperty.java index 4fde797e..8ef0b724 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessProperty.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessProperty.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.xpath.rules; import org.entur.netex.validation.validator.Severity; -import org.rutebanken.netex.model.BookingAccessEnumeration; +import org.entur.netex2.model.BookingAccessEnumeration; /** * Validate the booking access properties against the Nordic NeTEx profile. diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingMethodProperty.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingMethodProperty.java index c571092b..6c9700e4 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingMethodProperty.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingMethodProperty.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.xpath.rules; import org.entur.netex.validation.validator.Severity; -import org.rutebanken.netex.model.BookingMethodEnumeration; +import org.entur.netex2.model.BookingMethodEnumeration; /** * Validate the booking method properties against the Nordic NeTEx profile. diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingWhenProperty.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingWhenProperty.java index 0393cb29..cb7074a7 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingWhenProperty.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingWhenProperty.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.xpath.rules; import org.entur.netex.validation.validator.Severity; -import org.rutebanken.netex.model.PurchaseWhenEnumeration; +import org.entur.netex2.model.PurchaseWhenEnumeration; /** * Validate the "booking when" properties against the Nordic NeTEx profile. diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBuyWhenProperty.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBuyWhenProperty.java index aaec0c87..828e0186 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBuyWhenProperty.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBuyWhenProperty.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.xpath.rules; import org.entur.netex.validation.validator.Severity; -import org.rutebanken.netex.model.PurchaseMomentEnumeration; +import org.entur.netex2.model.PurchaseMomentEnumeration; /** * Validate the "buy when" access properties against the Nordic NeTEx profile. diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleLineType.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleLineType.java index 84a012d4..376a9e82 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleLineType.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleLineType.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.xpath.rules; import org.entur.netex.validation.validator.Severity; -import org.rutebanken.netex.model.FlexibleLineTypeEnumeration; +import org.entur.netex2.model.FlexibleLineTypeEnumeration; /** * Validate the flexible line type against the Nordic NeTEx profile. diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleServiceType.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleServiceType.java index 7f0d845d..a9d2d3b8 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleServiceType.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedFlexibleServiceType.java @@ -1,7 +1,7 @@ package org.entur.netex.validation.validator.xpath.rules; import org.entur.netex.validation.validator.Severity; -import org.rutebanken.netex.model.FlexibleServiceEnumeration; +import org.entur.netex2.model.FlexibleServiceEnumeration; /** * Validate the flexible service type against the Nordic NeTEx profile. diff --git a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedTransportSubMode.java b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedTransportSubMode.java index 981f704e..ada1a49d 100644 --- a/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedTransportSubMode.java +++ b/src/main/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedTransportSubMode.java @@ -1,16 +1,16 @@ package org.entur.netex.validation.validator.xpath.rules; -import static org.rutebanken.netex.model.AirSubmodeEnumeration.*; -import static org.rutebanken.netex.model.BusSubmodeEnumeration.*; -import static org.rutebanken.netex.model.CoachSubmodeEnumeration.*; -import static org.rutebanken.netex.model.FunicularSubmodeEnumeration.*; -import static org.rutebanken.netex.model.MetroSubmodeEnumeration.*; -import static org.rutebanken.netex.model.RailSubmodeEnumeration.*; -import static org.rutebanken.netex.model.SnowAndIceSubmodeEnumeration.SNOW_COACH; -import static org.rutebanken.netex.model.TaxiSubmodeEnumeration.*; -import static org.rutebanken.netex.model.TelecabinSubmodeEnumeration.*; -import static org.rutebanken.netex.model.TramSubmodeEnumeration.*; -import static org.rutebanken.netex.model.WaterSubmodeEnumeration.*; +import static org.entur.netex2.model.AirSubmodeEnumeration.*; +import static org.entur.netex2.model.BusSubmodeEnumeration.*; +import static org.entur.netex2.model.CoachSubmodeEnumeration.*; +import static org.entur.netex2.model.FunicularSubmodeEnumeration.*; +import static org.entur.netex2.model.MetroSubmodeEnumeration.*; +import static org.entur.netex2.model.RailSubmodeEnumeration.*; +import static org.entur.netex2.model.SnowAndIceSubmodeEnumeration.SNOW_COACH; +import static org.entur.netex2.model.TaxiSubmodeEnumeration.*; +import static org.entur.netex2.model.TelecabinSubmodeEnumeration.*; +import static org.entur.netex2.model.TramSubmodeEnumeration.*; +import static org.entur.netex2.model.WaterSubmodeEnumeration.*; import net.sf.saxon.s9api.XdmNode; import org.entur.netex.validation.validator.Severity; diff --git a/src/main/java/org/entur/netex/validation/xml/NetexSchemaRepository.java b/src/main/java/org/entur/netex/validation/xml/NetexSchemaRepository.java index 4689fbcb..82848052 100644 --- a/src/main/java/org/entur/netex/validation/xml/NetexSchemaRepository.java +++ b/src/main/java/org/entur/netex/validation/xml/NetexSchemaRepository.java @@ -5,7 +5,7 @@ import java.util.concurrent.ConcurrentHashMap; import javax.xml.validation.Schema; import org.entur.netex.validation.exception.NetexValidationException; -import org.rutebanken.netex.validation.NeTExValidator; +import org.entur.netex2.validation.NeTExValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; @@ -44,7 +44,7 @@ private static Schema createNetexSchema(NeTExValidator.NetexVersion version) { version ); try { - return new NeTExValidator(version).getSchema(); + return NeTExValidator.getNeTExValidator(version).getSchema(); } catch (IOException | SAXException e) { throw new NetexValidationException("Could not create NeTEx schema", e); } @@ -84,6 +84,8 @@ public static NeTExValidator.NetexVersion detectNetexSchemaVersion(byte[] conten return NeTExValidator.NetexVersion.v1_15; case "1.16": return NeTExValidator.NetexVersion.v1_16; + case "2.0": + return NeTExValidator.NetexVersion.v2_0; default: } } diff --git a/src/test/java/org/entur/netex/validation/test/jaxb/support/JAXBUtils.java b/src/test/java/org/entur/netex/validation/test/jaxb/support/JAXBUtils.java index 1e41948d..b198c50e 100644 --- a/src/test/java/org/entur/netex/validation/test/jaxb/support/JAXBUtils.java +++ b/src/test/java/org/entur/netex/validation/test/jaxb/support/JAXBUtils.java @@ -3,7 +3,7 @@ import jakarta.xml.bind.JAXBElement; import javax.annotation.Nonnull; import javax.xml.namespace.QName; -import org.rutebanken.netex.model.VersionOfObjectRefStructure; +import org.entur.netex2.model.VersionOfObjectRefStructure; /** * Utility functions to map JAXB objects. diff --git a/src/test/java/org/entur/netex/validation/validator/demo/DemoJAXBValidator.java b/src/test/java/org/entur/netex/validation/validator/demo/DemoJAXBValidator.java index 93c9ebef..96663716 100644 --- a/src/test/java/org/entur/netex/validation/validator/demo/DemoJAXBValidator.java +++ b/src/test/java/org/entur/netex/validation/validator/demo/DemoJAXBValidator.java @@ -15,7 +15,7 @@ import org.entur.netex.validation.validator.jaxb.SiteFrameStopPlaceRepository; import org.entur.netex.validation.validator.schema.NetexSchemaValidator; import org.entur.netex.validation.xml.NetexXMLParser; -import org.rutebanken.netex.model.ServiceJourney; +import org.entur.netex2.model.ServiceJourney; /** * Minimal executable class that demonstrates how to run a validation with JAXB validators. diff --git a/src/test/java/org/entur/netex/validation/validator/jaxb/DefaultCommonDataRepositoryTest.java b/src/test/java/org/entur/netex/validation/validator/jaxb/DefaultCommonDataRepositoryTest.java index d76b52ba..0650c57e 100644 --- a/src/test/java/org/entur/netex/validation/validator/jaxb/DefaultCommonDataRepositoryTest.java +++ b/src/test/java/org/entur/netex/validation/validator/jaxb/DefaultCommonDataRepositoryTest.java @@ -10,11 +10,11 @@ import org.entur.netex.validation.validator.model.QuayId; import org.entur.netex.validation.validator.model.ScheduledStopPointId; import org.entur.netex.validation.validator.model.ServiceLinkId; +import org.entur.netex2.model.PassengerStopAssignment; +import org.entur.netex2.model.QuayRefStructure; +import org.entur.netex2.model.ScheduledStopPointRefStructure; +import org.entur.netex2.model.ServiceLink; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.PassengerStopAssignment; -import org.rutebanken.netex.model.QuayRefStructure; -import org.rutebanken.netex.model.ScheduledStopPointRefStructure; -import org.rutebanken.netex.model.ServiceLink; class DefaultCommonDataRepositoryTest { diff --git a/src/test/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContextTest.java b/src/test/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContextTest.java index 28379da9..e2c95134 100644 --- a/src/test/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContextTest.java +++ b/src/test/java/org/entur/netex/validation/validator/jaxb/JAXBValidationContextTest.java @@ -13,20 +13,20 @@ import org.entur.netex.validation.validator.id.IdVersion; import org.entur.netex.validation.validator.model.TransportModeAndSubMode; import org.entur.netex.validation.validator.model.TransportSubMode; +import org.entur.netex2.model.AllPublicTransportModesEnumeration; +import org.entur.netex2.model.BusSubmodeEnumeration; +import org.entur.netex2.model.JourneyPattern; +import org.entur.netex2.model.JourneyPatternRefStructure; +import org.entur.netex2.model.Line; +import org.entur.netex2.model.LineRefStructure; +import org.entur.netex2.model.RailSubmodeEnumeration; +import org.entur.netex2.model.Route; +import org.entur.netex2.model.RouteRefStructure; +import org.entur.netex2.model.ServiceJourney; +import org.entur.netex2.model.TransportSubmodeStructure; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration; -import org.rutebanken.netex.model.BusSubmodeEnumeration; -import org.rutebanken.netex.model.JourneyPattern; -import org.rutebanken.netex.model.JourneyPatternRefStructure; -import org.rutebanken.netex.model.Line; -import org.rutebanken.netex.model.LineRefStructure; -import org.rutebanken.netex.model.RailSubmodeEnumeration; -import org.rutebanken.netex.model.Route; -import org.rutebanken.netex.model.RouteRefStructure; -import org.rutebanken.netex.model.ServiceJourney; -import org.rutebanken.netex.model.TransportSubmodeStructure; class JAXBValidationContextTest { @@ -42,7 +42,7 @@ class JAXBValidationContextTest { void setUp() { Line line = new Line() .withId("TST:Line:1") - .withTransportMode(AllVehicleModesOfTransportEnumeration.BUS) + .withTransportMode(AllPublicTransportModesEnumeration.BUS) .withTransportSubmode( new TransportSubmodeStructure().withBusSubmode(BusSubmodeEnumeration.LOCAL_BUS) ); @@ -140,10 +140,7 @@ void transportModeAndSubModeDefinedOnLineFromJourneyPattern() { journeyPattern ); assertNotNull(transportModeAndSubMode); - assertEquals( - AllVehicleModesOfTransportEnumeration.BUS, - transportModeAndSubMode.mode() - ); + assertEquals(AllPublicTransportModesEnumeration.BUS, transportModeAndSubMode.mode()); assertEquals( new TransportSubMode(BusSubmodeEnumeration.LOCAL_BUS.value()), transportModeAndSubMode.subMode() @@ -166,10 +163,7 @@ void transportModeAndSubModeDefinedOnLineFromServiceJourney() { serviceJourney ); assertNotNull(transportModeAndSubMode); - assertEquals( - AllVehicleModesOfTransportEnumeration.BUS, - transportModeAndSubMode.mode() - ); + assertEquals(AllPublicTransportModesEnumeration.BUS, transportModeAndSubMode.mode()); assertEquals( new TransportSubMode(BusSubmodeEnumeration.LOCAL_BUS.value()), transportModeAndSubMode.subMode() @@ -178,7 +172,7 @@ void transportModeAndSubModeDefinedOnLineFromServiceJourney() { @Test void transportModeAndSubModeDefinedOnServiceJourneyFromServiceJourney() { - serviceJourney.withTransportMode(AllVehicleModesOfTransportEnumeration.RAIL); + serviceJourney.withTransportMode(AllPublicTransportModesEnumeration.RAIL); serviceJourney.withTransportSubmode( new TransportSubmodeStructure().withRailSubmode(RailSubmodeEnumeration.LOCAL) ); @@ -197,10 +191,7 @@ void transportModeAndSubModeDefinedOnServiceJourneyFromServiceJourney() { serviceJourney ); assertNotNull(transportModeAndSubMode); - assertEquals( - AllVehicleModesOfTransportEnumeration.RAIL, - transportModeAndSubMode.mode() - ); + assertEquals(AllPublicTransportModesEnumeration.RAIL, transportModeAndSubMode.mode()); assertEquals( new TransportSubMode(RailSubmodeEnumeration.LOCAL.value()), transportModeAndSubMode.subMode() diff --git a/src/test/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepositoryTest.java b/src/test/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepositoryTest.java index d5c3c9b7..815b04fa 100644 --- a/src/test/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepositoryTest.java +++ b/src/test/java/org/entur/netex/validation/validator/jaxb/SiteFrameStopPlaceRepositoryTest.java @@ -12,14 +12,14 @@ import org.entur.netex.validation.validator.model.StopPlaceId; import org.entur.netex.validation.validator.model.TransportModeAndSubMode; import org.entur.netex.validation.validator.model.TransportSubMode; +import org.entur.netex2.model.AllPublicTransportModesEnumeration; +import org.entur.netex2.model.BusSubmodeEnumeration; +import org.entur.netex2.model.LocationStructure; +import org.entur.netex2.model.MultilingualString; +import org.entur.netex2.model.Quay; +import org.entur.netex2.model.SimplePoint_VersionStructure; +import org.entur.netex2.model.StopPlace; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration; -import org.rutebanken.netex.model.BusSubmodeEnumeration; -import org.rutebanken.netex.model.LocationStructure; -import org.rutebanken.netex.model.MultilingualString; -import org.rutebanken.netex.model.Quay; -import org.rutebanken.netex.model.SimplePoint_VersionStructure; -import org.rutebanken.netex.model.StopPlace; class SiteFrameStopPlaceRepositoryTest { @@ -28,8 +28,8 @@ class SiteFrameStopPlaceRepositoryTest { private static final int QUAY_LATITUDE = 1; private static final int QUAY_LONGITUDE = 2; private static final String STOP_PLACE_NAME = "STOP_PLACE_NAME"; - private static final AllVehicleModesOfTransportEnumeration STOP_PLACE_TRANSPORT_MODE = - AllVehicleModesOfTransportEnumeration.BUS; + private static final AllPublicTransportModesEnumeration STOP_PLACE_TRANSPORT_MODE = + AllPublicTransportModesEnumeration.BUS; private static final BusSubmodeEnumeration STOP_PLACE_TRANSPORT_SUBMODE = BusSubmodeEnumeration.LOCAL_BUS; @@ -121,7 +121,7 @@ void testGetCoordinatesForNonExistingQuayId() { void testGetStopPlaceNameForQuayId() { NetexEntitiesIndex netexEntitiesIndex = new NetexEntitiesIndexImpl(); StopPlace stopPlace = new StopPlace(); - stopPlace.setName(new MultilingualString().withValue(STOP_PLACE_NAME)); + stopPlace.setName(new MultilingualString().withContent(STOP_PLACE_NAME)); netexEntitiesIndex.getStopPlaceIndex().put(STOP_PLACE_ID, List.of(stopPlace)); Quay quay = new Quay(); netexEntitiesIndex.getQuayIndex().put(QUAY_ID, List.of(quay)); diff --git a/src/test/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtilsTest.java b/src/test/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtilsTest.java new file mode 100644 index 00000000..94e9fc59 --- /dev/null +++ b/src/test/java/org/entur/netex/validation/validator/jaxb/support/DatedServiceJourneyUtilsTest.java @@ -0,0 +1,49 @@ +package org.entur.netex.validation.validator.jaxb.support; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.entur.netex2.model.DatedServiceJourney; +import org.entur.netex2.model.ObjectFactory; +import org.entur.netex2.model.ReplacedJourneys_RelStructure; +import org.entur.netex2.model.VehicleJourneyRefStructure; +import org.junit.jupiter.api.Test; + +class DatedServiceJourneyUtilsTest { + + private static final String ORIGINAL_DSJ_ID = "TST:DatedServiceJourney:1"; + + @Test + void noReplacedJourneys() { + assertNull( + DatedServiceJourneyUtils.originalDatedServiceJourneyRef(new DatedServiceJourney()) + ); + } + + @Test + void emptyReplacedJourneys() { + DatedServiceJourney datedServiceJourney = new DatedServiceJourney() + .withReplacedJourneys(new ReplacedJourneys_RelStructure()); + assertNull( + DatedServiceJourneyUtils.originalDatedServiceJourneyRef(datedServiceJourney) + ); + } + + @Test + void replacedJourney() { + ObjectFactory objectFactory = new ObjectFactory(); + DatedServiceJourney datedServiceJourney = new DatedServiceJourney() + .withReplacedJourneys( + new ReplacedJourneys_RelStructure() + .withDatedVehicleJourneyRefOrNormalDatedVehicleJourneyRef( + objectFactory.createDatedVehicleJourneyRef( + new VehicleJourneyRefStructure().withRef(ORIGINAL_DSJ_ID) + ) + ) + ); + assertEquals( + ORIGINAL_DSJ_ID, + DatedServiceJourneyUtils.originalDatedServiceJourneyRef(datedServiceJourney) + ); + } +} diff --git a/src/test/java/org/entur/netex/validation/validator/model/MultilingualStringValueTest.java b/src/test/java/org/entur/netex/validation/validator/model/MultilingualStringValueTest.java new file mode 100644 index 00000000..da339ac7 --- /dev/null +++ b/src/test/java/org/entur/netex/validation/validator/model/MultilingualStringValueTest.java @@ -0,0 +1,36 @@ +package org.entur.netex.validation.validator.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.entur.netex2.model.MultilingualString; +import org.junit.jupiter.api.Test; + +class MultilingualStringValueTest { + + @Test + void nullMultilingualString() { + assertNull(MultilingualStringValue.of(null)); + } + + @Test + void emptyContent() { + assertNull(MultilingualStringValue.of(new MultilingualString())); + } + + @Test + void singleTextContent() { + assertEquals( + "Oslo S", + MultilingualStringValue.of(new MultilingualString().withContent("Oslo S")) + ); + } + + @Test + void multipleTextContentIsConcatenated() { + assertEquals( + "Oslo S", + MultilingualStringValue.of(new MultilingualString().withContent("Oslo", " S")) + ); + } +} diff --git a/src/test/java/org/entur/netex/validation/validator/model/ServiceJourneyStopTest.java b/src/test/java/org/entur/netex/validation/validator/model/ServiceJourneyStopTest.java index 9ba8e483..fe104f61 100644 --- a/src/test/java/org/entur/netex/validation/validator/model/ServiceJourneyStopTest.java +++ b/src/test/java/org/entur/netex/validation/validator/model/ServiceJourneyStopTest.java @@ -3,8 +3,8 @@ import static org.junit.jupiter.api.Assertions.*; import java.time.LocalTime; +import org.entur.netex2.model.TimetabledPassingTime; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.TimetabledPassingTime; class ServiceJourneyStopTest { diff --git a/src/test/java/org/entur/netex/validation/validator/model/TransportModeAndSubModeTest.java b/src/test/java/org/entur/netex/validation/validator/model/TransportModeAndSubModeTest.java index 8eb6de6c..46ad0423 100644 --- a/src/test/java/org/entur/netex/validation/validator/model/TransportModeAndSubModeTest.java +++ b/src/test/java/org/entur/netex/validation/validator/model/TransportModeAndSubModeTest.java @@ -2,12 +2,12 @@ import static org.junit.jupiter.api.Assertions.*; +import org.entur.netex2.model.AllPublicTransportModesEnumeration; +import org.entur.netex2.model.BusSubmodeEnumeration; +import org.entur.netex2.model.RailSubmodeEnumeration; +import org.entur.netex2.model.StopPlace; +import org.entur.netex2.model.TransportSubmodeStructure; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration; -import org.rutebanken.netex.model.BusSubmodeEnumeration; -import org.rutebanken.netex.model.RailSubmodeEnumeration; -import org.rutebanken.netex.model.StopPlace; -import org.rutebanken.netex.model.TransportSubmodeStructure; class TransportModeAndSubModeTest { @@ -23,7 +23,7 @@ void testMissingTransportModeAndSubModeFromStopPlace() { @Test void testMissingTransportSubModeFromStopPlace() { StopPlace stopPlace = new StopPlace(); - stopPlace.withTransportMode(AllVehicleModesOfTransportEnumeration.RAIL); + stopPlace.withTransportMode(AllPublicTransportModesEnumeration.RAIL); TransportModeAndSubMode transportModeAndSubMode = TransportModeAndSubMode.of( stopPlace ); @@ -35,16 +35,13 @@ void testMissingTransportSubModeFromStopPlace() { void testCreateTransportModeAndSubModeFromStopPlace() { StopPlace stopPlace = new StopPlace(); stopPlace - .withTransportMode(AllVehicleModesOfTransportEnumeration.RAIL) + .withTransportMode(AllPublicTransportModesEnumeration.RAIL) .withRailSubmode(RailSubmodeEnumeration.LOCAL); TransportModeAndSubMode transportModeAndSubMode = TransportModeAndSubMode.of( stopPlace ); assertNotNull(transportModeAndSubMode); - assertEquals( - AllVehicleModesOfTransportEnumeration.RAIL, - transportModeAndSubMode.mode() - ); + assertEquals(AllPublicTransportModesEnumeration.RAIL, transportModeAndSubMode.mode()); assertEquals( new TransportSubMode(RailSubmodeEnumeration.LOCAL.value()), transportModeAndSubMode.subMode() @@ -56,7 +53,7 @@ void testCreateTransportModeAndSubModeFromStructure() { TransportSubmodeStructure submode = new TransportSubmodeStructure() .withBusSubmode(BusSubmodeEnumeration.LOCAL_BUS); TransportModeAndSubMode transportModeAndSubMode = TransportModeAndSubMode.of( - AllVehicleModesOfTransportEnumeration.BUS, + AllPublicTransportModesEnumeration.BUS, submode ); assertNotNull(transportModeAndSubMode); @@ -74,7 +71,7 @@ void testUnknownTransportSubModeForMode() { TransportSubmodeStructure submode = new TransportSubmodeStructure() .withBusSubmode(BusSubmodeEnumeration.LOCAL_BUS); TransportModeAndSubMode transportModeAndSubMode = TransportModeAndSubMode.of( - AllVehicleModesOfTransportEnumeration.RAIL, + AllPublicTransportModesEnumeration.RAIL, submode ); assertNotNull(transportModeAndSubMode); diff --git a/src/test/java/org/entur/netex/validation/validator/model/TransportSubModeTest.java b/src/test/java/org/entur/netex/validation/validator/model/TransportSubModeTest.java index c7c0e35a..678fa814 100644 --- a/src/test/java/org/entur/netex/validation/validator/model/TransportSubModeTest.java +++ b/src/test/java/org/entur/netex/validation/validator/model/TransportSubModeTest.java @@ -3,12 +3,12 @@ import static org.junit.jupiter.api.Assertions.*; import java.util.Optional; +import org.entur.netex2.model.AllPublicTransportModesEnumeration; +import org.entur.netex2.model.RailSubmodeEnumeration; +import org.entur.netex2.model.SelfDriveSubmodeEnumeration; +import org.entur.netex2.model.StopPlace; +import org.entur.netex2.model.TransportSubmodeStructure; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration; -import org.rutebanken.netex.model.RailSubmodeEnumeration; -import org.rutebanken.netex.model.SelfDriveSubmodeEnumeration; -import org.rutebanken.netex.model.StopPlace; -import org.rutebanken.netex.model.TransportSubmodeStructure; class TransportSubModeTest { @@ -28,7 +28,7 @@ void testMissingTransportModeAndSubModeOnStopPlace() { @Test void testMissingTransportSubModeOnStopPlace() { StopPlace stopPlace = new StopPlace(); - stopPlace.withTransportMode(AllVehicleModesOfTransportEnumeration.RAIL); + stopPlace.withTransportMode(AllPublicTransportModesEnumeration.RAIL); Optional transportSubMode = TransportSubMode.of(stopPlace); assertFalse(transportSubMode.isPresent()); } @@ -37,7 +37,7 @@ void testMissingTransportSubModeOnStopPlace() { void testTransportModeAndSubModeOnStopPlace() { StopPlace stopPlace = new StopPlace(); stopPlace - .withTransportMode(AllVehicleModesOfTransportEnumeration.RAIL) + .withTransportMode(AllPublicTransportModesEnumeration.RAIL) .withRailSubmode(RailSubmodeEnumeration.LOCAL); Optional transportSubMode = TransportSubMode.of(stopPlace); assertTrue(transportSubMode.isPresent()); @@ -53,7 +53,7 @@ void testMissingTransportModeAndSubModeFromStructure() { @Test void testMissingTransportSubModeFromStructure() { Optional transportSubMode = TransportSubMode.of( - AllVehicleModesOfTransportEnumeration.RAIL, + AllPublicTransportModesEnumeration.RAIL, null ); assertFalse(transportSubMode.isPresent()); @@ -62,7 +62,7 @@ void testMissingTransportSubModeFromStructure() { @Test void testUnknownTransportSubMode() { Optional transportSubMode = TransportSubMode.of( - AllVehicleModesOfTransportEnumeration.RAIL, + AllPublicTransportModesEnumeration.RAIL, new TransportSubmodeStructure() .withSelfDriveSubmode(SelfDriveSubmodeEnumeration.ALL_VEHICLES) ); @@ -72,7 +72,7 @@ void testUnknownTransportSubMode() { @Test void testTransportModeAndSubModeFromStructure() { Optional transportSubMode = TransportSubMode.of( - AllVehicleModesOfTransportEnumeration.RAIL, + AllPublicTransportModesEnumeration.RAIL, new TransportSubmodeStructure().withRailSubmode(RailSubmodeEnumeration.LOCAL) ); assertTrue(transportSubMode.isPresent()); diff --git a/src/test/java/org/entur/netex/validation/validator/schema/NetexSchemaValidatorTest.java b/src/test/java/org/entur/netex/validation/validator/schema/NetexSchemaValidatorTest.java index 1ad9ffb0..0376e52a 100644 --- a/src/test/java/org/entur/netex/validation/validator/schema/NetexSchemaValidatorTest.java +++ b/src/test/java/org/entur/netex/validation/validator/schema/NetexSchemaValidatorTest.java @@ -21,6 +21,21 @@ class NetexSchemaValidatorTest { """; + private static final String NETEX_2_0_FRAGMENT_VALID = + """ + + 2021-10-07T13:40:22.872 + RB + + """; + + private static final String NETEX_2_0_FRAGMENT_INVALID = + """ + + 2021-10-07T13:40:22.872 + + """; + private static final String NETEX_FRAGMENT_INVALID = """ @@ -45,6 +60,18 @@ void validateValidDocument() { assertTrue(validationIssues.isEmpty()); } + @Test + void validateValidNetex20Document() { + List validationIssues = validate(NETEX_2_0_FRAGMENT_VALID); + assertTrue(validationIssues.isEmpty()); + } + + @Test + void validateInvalidNetex20Document() { + List validationIssues = validate(NETEX_2_0_FRAGMENT_INVALID); + assertEquals(1, validationIssues.size()); + } + @Test void validateInvalidDocument() { List validationIssues = validate(NETEX_FRAGMENT_INVALID); diff --git a/src/test/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessPropertyTest.java b/src/test/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessPropertyTest.java index d23c9f72..5fb06d34 100644 --- a/src/test/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessPropertyTest.java +++ b/src/test/java/org/entur/netex/validation/validator/xpath/rules/ValidateAllowedBookingAccessPropertyTest.java @@ -4,9 +4,9 @@ import org.entur.netex.validation.test.xpath.support.TestValidationContextBuilder; import org.entur.netex.validation.validator.ValidationIssue; import org.entur.netex.validation.validator.xpath.XPathRuleValidationContext; +import org.entur.netex2.model.BookingAccessEnumeration; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.rutebanken.netex.model.BookingAccessEnumeration; class ValidateAllowedBookingAccessPropertyTest {