diff --git a/.github/workflows/hotfix-finish.yml b/.github/workflows/hotfix-finish.yml index ad126f5a..2a9c8fb5 100644 --- a/.github/workflows/hotfix-finish.yml +++ b/.github/workflows/hotfix-finish.yml @@ -174,7 +174,7 @@ jobs: - **Hotfix Version:** $VERSION - **Git Tag:** \`v${VERSION}\` - - **Maven Central (netex-java-model):** https://central.sonatype.com/artifact/org.entur/netex-java-model/${VERSION} + - **Maven Central (netex2-java-model):** https://central.sonatype.com/artifact/org.entur/netex2-java-model/${VERSION} - **Hotfix Branch:** Deleted - **Merged to master:** ${{ inputs.merge_to_master }} diff --git a/.github/workflows/release-finish.yml b/.github/workflows/release-finish.yml index 2050c05a..6ad43da1 100644 --- a/.github/workflows/release-finish.yml +++ b/.github/workflows/release-finish.yml @@ -277,7 +277,7 @@ jobs: - **Released Version:** $VERSION - **Git Tag:** \`v${VERSION}\` - - **Maven Central (netex-java-model):** https://central.sonatype.com/artifact/org.entur/netex-java-model/${VERSION} + - **Maven Central (netex2-java-model):** https://central.sonatype.com/artifact/org.entur/netex2-java-model/${VERSION} - **Next Development Version ($BASE_BRANCH):** ${{ steps.next_version.outputs.next_version }} - **Release Branch:** Merged to $BASE_BRANCH and deleted diff --git a/CLAUDE.md b/CLAUDE.md index 7fd79aa3..78e67aee 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,7 +9,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - **Organization**: Entur AS (Norwegian public transport data provider) - **License**: EUPL-1.2 - **Java Version**: 11+ (builds on 17 in CI) -- **Package**: `org.rutebanken.netex.model` (generated), `org.rutebanken.netex` and `org.rutebanken.netex.util` (source) +- **Package**: `org.entur.netex2.model` (generated), `org.entur.netex2` and `org.entur.netex2.util` (source) ## Build Commands @@ -38,8 +38,8 @@ mvn validate │ └── version_updater.sh # Updates version references ├── bindings.xjb # JAXB customization bindings ├── src/main/java/ -│ ├── module-info.java # JPMS module descriptor (org.entur.netex.java.model) -│ └── org/rutebanken/netex/ # Utilities (validation, client, toString style) +│ ├── module-info.java # JPMS module descriptor (org.entur.netex2) +│ └── org/entur/netex2/ # Utilities (validation, client, toString style) │ └── util/ # XML adapters for Java 8 time types ├── src/main/resources/xsd/ # NeTEx XSD files (downloaded at build time) ├── src/test/ # JUnit 5 tests for marshalling/unmarshalling @@ -49,9 +49,9 @@ mvn validate ## Key Technical Details - **JAXB Bindings**: The `bindings.xjb` file customizes code generation, including: - - Java 8 time type adapters (`LocalDateTime`, `LocalTime`, `Duration`) + - Java 8 time type adapters (`LocalDateTime`, `LocalDate`, `LocalTime`, `Duration`) - Property name conflict resolution - - Package naming (`org.rutebanken.netex.model`) + - Package naming (`org.entur.netex2.model`) - **Generated Code**: Model classes are generated in `target/generated-sources/` during build. Do not manually edit generated code. diff --git a/README.md b/README.md index 91480f79..68dead92 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # netex-java-model [![Build and push](https://github.com/entur/netex-java-model/actions/workflows/deploy.yml/badge.svg)](https://github.com/entur/netex-java-model/actions/workflows/deploy.yml) -[![Maven Central](https://img.shields.io/maven-central/v/org.entur/netex-java-model.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/org.entur/netex-java-model) -[![Maven Snapshots](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fcentral.sonatype.com%2Frepository%2Fmaven-snapshots%2Forg%2Fentur%2Fnetex-java-model%2Fmaven-metadata.xml&label=Snapshot)](https://central.sonatype.com/repository/maven-snapshots) +[![Maven Central](https://img.shields.io/maven-central/v/org.entur/netex2-java-model.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/org.entur/netex2-java-model) +[![Maven Snapshots](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fcentral.sonatype.com%2Frepository%2Fmaven-snapshots%2Forg%2Fentur%2Fnetex2-java-model%2Fmaven-metadata.xml&label=Snapshot)](https://central.sonatype.com/repository/maven-snapshots) [![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](https://joinup.ec.europa.eu/software/page/eupl) [![Java 21+](https://img.shields.io/badge/Java-21%2B-orange)](https://adoptium.net/) @@ -14,7 +14,7 @@ This library downloads the NeTEx XSD files from the [NeTEx repository](https://g - **NeTEx version**: 2.0 (model generation), with legacy validation support back to 1.07 - **JAXB**: Jakarta XML Bind 4.x (Jakarta EE 9+) -- **Generated package**: `org.rutebanken.netex.model` +- **Generated package**: `org.entur.netex2.model` - **GML types package**: `net.opengis.gml._3` ## Usage @@ -24,12 +24,12 @@ This library downloads the NeTEx XSD files from the [NeTEx repository](https://g ```xml org.entur - netex-java-model + netex2-java-model LATEST ``` -See [Maven Central](https://central.sonatype.com/artifact/org.entur/netex-java-model) for the latest released version. +See [Maven Central](https://central.sonatype.com/artifact/org.entur/netex2-java-model) for the latest released version. ### Snapshot @@ -52,7 +52,7 @@ Then add the dependency with the snapshot version: ```xml org.entur - netex-java-model + netex2-java-model LATEST-SNAPSHOT ``` @@ -88,9 +88,9 @@ The XSD files are downloaded from GitHub during the `generate-sources` phase and │ ├── annotation-replacer.sh # Post-processes generated Java files │ └── version_updater.sh # Updates version references in bindings ├── bindings.xjb # JAXB customization bindings -├── src/main/java/org/rutebanken/ -│ ├── netex/ # NeTEx utilities (validation, toString style) -│ └── util/ # XML adapters for Java time types +├── src/main/java/org/entur/ +│ └── netex2/ # NeTEx utilities (validation, client, toString style) +│ └── util/ # XML adapters for Java time types ├── src/main/resources/xsd/ # Downloaded NeTEx XSD files (build artifact) └── src/test/ # JUnit 5 marshalling/unmarshalling tests ``` @@ -98,10 +98,10 @@ The XSD files are downloaded from GitHub during the `generate-sources` phase and ## Key Technical Details **JAXB customizations** (`bindings.xjb`): -- Java 8 time type adapters (`LocalDateTime`, `LocalTime`, `Duration`) via `threeten-jaxb-core` +- Java 8 time type adapters (`LocalDateTime`, `LocalDate`, `LocalTime`, `Duration`) via `threeten-jaxb-core` - Fluent builder API (`withX()` methods) via `jaxb-fluent-api` - Property name conflict resolution -- Package mapping to `org.rutebanken.netex.model` +- Package mapping to `org.entur.netex2.model` **Schema validation**: `NeTExValidator` supports validation against NeTEx versions 1.07 through 2.0. diff --git a/bindings.xjb b/bindings.xjb index 583c20b1..a8abb727 100644 --- a/bindings.xjb +++ b/bindings.xjb @@ -5,18 +5,18 @@ - - - + + + -| + - + @@ -53,7 +53,7 @@ - + diff --git a/pom.xml b/pom.xml index dcdf292a..824784bb 100644 --- a/pom.xml +++ b/pom.xml @@ -16,10 +16,10 @@ 4.0.0 org.entur - netex-java-model + netex2-java-model 3.0.0-SNAPSHOT - netex-java-model + netex2-java-model Generates Java model from NeTEx XSDs using JAXB. https://github.com/entur/netex-java-model @@ -519,7 +519,7 @@ -no-header -Xbug986 -Xfluent-api - -Xts:style:org.rutebanken.netex.OmitNullsToStringStyle.INSTANCE + -Xts:style:org.entur.netex2.OmitNullsToStringStyle.INSTANCE diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 1f9a59c2..96b5b3e8 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,19 +1,19 @@ -module org.entur.netex.java.model { +module org.entur.netex2 { requires transitive jakarta.xml.bind; requires transitive java.xml; requires transitive org.apache.commons.lang3; requires io.github.threetenjaxb.core; requires org.slf4j; - exports org.rutebanken.netex; - exports org.rutebanken.netex.client; - exports org.rutebanken.netex.validation; - exports org.rutebanken.netex.model; - exports org.rutebanken.netex.util; + exports org.entur.netex2; + exports org.entur.netex2.client; + exports org.entur.netex2.validation; + exports org.entur.netex2.model; + exports org.entur.netex2.util; exports net.opengis.gml._3; exports uk.org.siri.siri; - opens org.rutebanken.netex.model to jakarta.xml.bind, org.glassfish.jaxb.runtime, org.apache.commons.lang3; + opens org.entur.netex2.model to jakarta.xml.bind, org.glassfish.jaxb.runtime, org.apache.commons.lang3; opens net.opengis.gml._3 to jakarta.xml.bind, org.glassfish.jaxb.runtime, org.apache.commons.lang3; opens uk.org.siri.siri to jakarta.xml.bind, org.glassfish.jaxb.runtime, org.apache.commons.lang3; } diff --git a/src/main/java/org/rutebanken/netex/OmitNullsToStringStyle.java b/src/main/java/org/entur/netex2/OmitNullsToStringStyle.java similarity index 97% rename from src/main/java/org/rutebanken/netex/OmitNullsToStringStyle.java rename to src/main/java/org/entur/netex2/OmitNullsToStringStyle.java index 2aecc0fd..4511e27e 100644 --- a/src/main/java/org/rutebanken/netex/OmitNullsToStringStyle.java +++ b/src/main/java/org/entur/netex2/OmitNullsToStringStyle.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex; +package org.entur.netex2; import org.apache.commons.lang3.builder.ToStringStyle; diff --git a/src/main/java/org/rutebanken/netex/client/PublicationDeliveryClient.java b/src/main/java/org/entur/netex2/client/PublicationDeliveryClient.java similarity index 95% rename from src/main/java/org/rutebanken/netex/client/PublicationDeliveryClient.java rename to src/main/java/org/entur/netex2/client/PublicationDeliveryClient.java index 312b1c7f..10944b01 100644 --- a/src/main/java/org/rutebanken/netex/client/PublicationDeliveryClient.java +++ b/src/main/java/org/entur/netex2/client/PublicationDeliveryClient.java @@ -13,16 +13,16 @@ * limitations under the Licence. */ -package org.rutebanken.netex.client; +package org.entur.netex2.client; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Marshaller; import jakarta.xml.bind.Unmarshaller; -import org.rutebanken.netex.model.ObjectFactory; -import org.rutebanken.netex.model.PublicationDeliveryStructure; -import org.rutebanken.netex.validation.NeTExValidator; +import org.entur.netex2.model.ObjectFactory; +import org.entur.netex2.model.PublicationDeliveryStructure; +import org.entur.netex2.validation.NeTExValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; diff --git a/src/main/java/org/rutebanken/netex/util/LocalDateTimeISO8601XmlAdapter.java b/src/main/java/org/entur/netex2/util/LocalDateTimeISO8601XmlAdapter.java similarity index 97% rename from src/main/java/org/rutebanken/netex/util/LocalDateTimeISO8601XmlAdapter.java rename to src/main/java/org/entur/netex2/util/LocalDateTimeISO8601XmlAdapter.java index 6f78c2d2..77d0b2b5 100644 --- a/src/main/java/org/rutebanken/netex/util/LocalDateTimeISO8601XmlAdapter.java +++ b/src/main/java/org/entur/netex2/util/LocalDateTimeISO8601XmlAdapter.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import jakarta.xml.bind.annotation.adapters.XmlAdapter; import java.time.LocalDateTime; diff --git a/src/main/java/org/rutebanken/netex/util/LocalDateXmlAdapter.java b/src/main/java/org/entur/netex2/util/LocalDateXmlAdapter.java similarity index 55% rename from src/main/java/org/rutebanken/netex/util/LocalDateXmlAdapter.java rename to src/main/java/org/entur/netex2/util/LocalDateXmlAdapter.java index 5c0e25e8..a05a4f47 100644 --- a/src/main/java/org/rutebanken/netex/util/LocalDateXmlAdapter.java +++ b/src/main/java/org/entur/netex2/util/LocalDateXmlAdapter.java @@ -13,33 +13,33 @@ * limitations under the Licence. */ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import jakarta.xml.bind.annotation.adapters.XmlAdapter; -import java.time.LocalDateTime; -import java.time.OffsetDateTime; +import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; -import java.time.temporal.ChronoField; -public class LocalDateXmlAdapter extends XmlAdapter { - private static final DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd") +/** + * Maps xs:date to {@link LocalDate}. An optional trailing time zone offset (allowed by xs:date) is + * accepted when unmarshalling and ignored; dates are always marshalled without an offset. + */ +public class LocalDateXmlAdapter extends XmlAdapter { + + private static final DateTimeFormatter PARSER = new DateTimeFormatterBuilder() + .append(DateTimeFormatter.ISO_LOCAL_DATE) .optionalStart().appendPattern("XXXXX").optionalEnd() - .parseDefaulting(ChronoField.HOUR_OF_DAY, 0) - .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) - .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) - .parseDefaulting(ChronoField.OFFSET_SECONDS,OffsetDateTime.now().getLong(ChronoField.OFFSET_SECONDS) ) - .toFormatter(); + .toFormatter(); @Override - public LocalDateTime unmarshal(String inputDate) { - return LocalDateTime.parse(inputDate, formatter); + public LocalDate unmarshal(String inputDate) { + return LocalDate.parse(inputDate, PARSER); } @Override - public String marshal(LocalDateTime inputDate) { - if(inputDate != null) { - return formatter.format(inputDate); + public String marshal(LocalDate inputDate) { + if (inputDate != null) { + return DateTimeFormatter.ISO_LOCAL_DATE.format(inputDate); } else { return null; } diff --git a/src/main/java/org/rutebanken/netex/util/LocalTimeISO8601XmlAdapter.java b/src/main/java/org/entur/netex2/util/LocalTimeISO8601XmlAdapter.java similarity index 98% rename from src/main/java/org/rutebanken/netex/util/LocalTimeISO8601XmlAdapter.java rename to src/main/java/org/entur/netex2/util/LocalTimeISO8601XmlAdapter.java index d4eb3e2d..e06b61de 100644 --- a/src/main/java/org/rutebanken/netex/util/LocalTimeISO8601XmlAdapter.java +++ b/src/main/java/org/entur/netex2/util/LocalTimeISO8601XmlAdapter.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import jakarta.xml.bind.annotation.adapters.XmlAdapter; import java.time.LocalTime; diff --git a/src/main/java/org/rutebanken/netex/util/VersionXmlAdapter.java b/src/main/java/org/entur/netex2/util/VersionXmlAdapter.java similarity index 97% rename from src/main/java/org/rutebanken/netex/util/VersionXmlAdapter.java rename to src/main/java/org/entur/netex2/util/VersionXmlAdapter.java index 34231a3b..896c656e 100644 --- a/src/main/java/org/rutebanken/netex/util/VersionXmlAdapter.java +++ b/src/main/java/org/entur/netex2/util/VersionXmlAdapter.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import jakarta.xml.bind.annotation.adapters.XmlAdapter; diff --git a/src/main/java/org/rutebanken/netex/validation/NeTExValidator.java b/src/main/java/org/entur/netex2/validation/NeTExValidator.java similarity index 98% rename from src/main/java/org/rutebanken/netex/validation/NeTExValidator.java rename to src/main/java/org/entur/netex2/validation/NeTExValidator.java index b95d0529..860b36f9 100644 --- a/src/main/java/org/rutebanken/netex/validation/NeTExValidator.java +++ b/src/main/java/org/entur/netex2/validation/NeTExValidator.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.validation; +package org.entur.netex2.validation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/rutebanken/netex/validation/PredefinedSchemaListClasspathResourceResolver.java b/src/main/java/org/entur/netex2/validation/PredefinedSchemaListClasspathResourceResolver.java similarity index 99% rename from src/main/java/org/rutebanken/netex/validation/PredefinedSchemaListClasspathResourceResolver.java rename to src/main/java/org/entur/netex2/validation/PredefinedSchemaListClasspathResourceResolver.java index 6075ea3f..f6012a4a 100644 --- a/src/main/java/org/rutebanken/netex/validation/PredefinedSchemaListClasspathResourceResolver.java +++ b/src/main/java/org/entur/netex2/validation/PredefinedSchemaListClasspathResourceResolver.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.validation; +package org.entur.netex2.validation; import org.w3c.dom.ls.LSInput; import org.w3c.dom.ls.LSResourceResolver; diff --git a/src/test/java/org/rutebanken/netex/model/AbstractUnmarshalFrameTest.java b/src/test/java/org/entur/netex2/model/AbstractUnmarshalFrameTest.java similarity index 97% rename from src/test/java/org/rutebanken/netex/model/AbstractUnmarshalFrameTest.java rename to src/test/java/org/entur/netex2/model/AbstractUnmarshalFrameTest.java index 35c01413..06400c2e 100644 --- a/src/test/java/org/rutebanken/netex/model/AbstractUnmarshalFrameTest.java +++ b/src/test/java/org/entur/netex2/model/AbstractUnmarshalFrameTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/MarshalUnmarshalTest.java b/src/test/java/org/entur/netex2/model/MarshalUnmarshalTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/MarshalUnmarshalTest.java rename to src/test/java/org/entur/netex2/model/MarshalUnmarshalTest.java index 7b2e0259..bc14b7a7 100644 --- a/src/test/java/org/rutebanken/netex/model/MarshalUnmarshalTest.java +++ b/src/test/java/org/entur/netex2/model/MarshalUnmarshalTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -415,7 +415,7 @@ void blockRoundTrip() throws JAXBException { @Test void fragmentShouldNotContainNetexNamespace() throws Exception { - JAXBContext netexJaxBContext = JAXBContext.newInstance("net.opengis.gml._3:org.rutebanken.netex.model:uk.org.siri.siri"); + JAXBContext netexJaxBContext = JAXBContext.newInstance("net.opengis.gml._3:org.entur.netex2.model:uk.org.siri.siri"); Marshaller marshaller = netexJaxBContext.createMarshaller(); marshaller.setProperty(jakarta.xml.bind.Marshaller.JAXB_ENCODING, StandardCharsets.UTF_8.name()); diff --git a/src/test/java/org/rutebanken/netex/model/ToStringTest.java b/src/test/java/org/entur/netex2/model/ToStringTest.java similarity index 97% rename from src/test/java/org/rutebanken/netex/model/ToStringTest.java rename to src/test/java/org/entur/netex2/model/ToStringTest.java index a2e253d8..24125fd6 100644 --- a/src/test/java/org/rutebanken/netex/model/ToStringTest.java +++ b/src/test/java/org/entur/netex2/model/ToStringTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import org.junit.jupiter.api.Test; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalResourceFrameExtendedTest.java b/src/test/java/org/entur/netex2/model/UnmarshalResourceFrameExtendedTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalResourceFrameExtendedTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalResourceFrameExtendedTest.java index 9066a5f0..9ff329b6 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalResourceFrameExtendedTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalResourceFrameExtendedTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalResourceFrameTest.java b/src/test/java/org/entur/netex2/model/UnmarshalResourceFrameTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalResourceFrameTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalResourceFrameTest.java index 715cff1f..83b9be5f 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalResourceFrameTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalResourceFrameTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceCalendarFrameTest.java b/src/test/java/org/entur/netex2/model/UnmarshalServiceCalendarFrameTest.java similarity index 97% rename from src/test/java/org/rutebanken/netex/model/UnmarshalServiceCalendarFrameTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalServiceCalendarFrameTest.java index ac46cee7..d1c61734 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceCalendarFrameTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalServiceCalendarFrameTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; @@ -21,6 +21,7 @@ import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; +import java.time.LocalDate; import java.time.LocalDateTime; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -132,13 +133,13 @@ void unmarshalServiceCalendarFrame() throws JAXBException { assertEquals(DayOfWeekEnumeration.TUESDAY, dayType.getProperties().getPropertyOfDay().get(0).getDaysOfWeek().get(0)); OperatingDay operatingDay = serviceCalendarFrame.getOperatingDays().getOperatingDay().get(0); - assertEquals(LocalDateTime.of(2023,10,29,0,0), operatingDay.getCalendarDate()); + assertEquals(LocalDate.of(2023, 10, 29), operatingDay.getCalendarDate()); OperatingPeriod operatingPeriod = (OperatingPeriod) serviceCalendarFrame.getOperatingPeriods().getOperatingPeriodOrUicOperatingPeriod().get(0); assertEquals(LocalDateTime.of(2023,8,17,0,0), operatingPeriod.getFromDate()); DayTypeAssignment dayTypeAssignment = serviceCalendarFrame.getDayTypeAssignments().getDayTypeAssignment().get(0); - assertEquals(LocalDateTime.of(2024,5,1,0,0), dayTypeAssignment.getDate()); + assertEquals(LocalDate.of(2024, 5, 1), dayTypeAssignment.getDate()); } diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameChouetteTest.java b/src/test/java/org/entur/netex2/model/UnmarshalServiceFrameChouetteTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameChouetteTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalServiceFrameChouetteTest.java index 6b4a132c..fdd7878a 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameChouetteTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalServiceFrameChouetteTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameExtendedTest.java b/src/test/java/org/entur/netex2/model/UnmarshalServiceFrameExtendedTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameExtendedTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalServiceFrameExtendedTest.java index c117244d..009e3f90 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameExtendedTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalServiceFrameExtendedTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameTest.java b/src/test/java/org/entur/netex2/model/UnmarshalServiceFrameTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalServiceFrameTest.java index 639f9544..1b98b08c 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalServiceFrameTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalServiceFrameTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameChouetteTest.java b/src/test/java/org/entur/netex2/model/UnmarshalSiteFrameChouetteTest.java similarity index 98% rename from src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameChouetteTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalSiteFrameChouetteTest.java index 26b300ee..7de67110 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameChouetteTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalSiteFrameChouetteTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameExtendedTest.java b/src/test/java/org/entur/netex2/model/UnmarshalSiteFrameExtendedTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameExtendedTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalSiteFrameExtendedTest.java index f23180bb..dabf72bd 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameExtendedTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalSiteFrameExtendedTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameTest.java b/src/test/java/org/entur/netex2/model/UnmarshalSiteFrameTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalSiteFrameTest.java index 6171ab65..7ab306a7 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalSiteFrameTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalSiteFrameTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameChouetteTest.java b/src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameChouetteTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameChouetteTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameChouetteTest.java index 300761fe..b4db8e69 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameChouetteTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameChouetteTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameExtendedTest.java b/src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameExtendedTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameExtendedTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameExtendedTest.java index 7e6db9ae..2bc590b2 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameExtendedTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameExtendedTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameTest.java b/src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameTest.java index 25d3493b..ef6c3f3f 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalTimetableFrameTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalTimetableFrameTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalTransportSubModeTest.java b/src/test/java/org/entur/netex2/model/UnmarshalTransportSubModeTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalTransportSubModeTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalTransportSubModeTest.java index 96c89526..b808ab0f 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalTransportSubModeTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalTransportSubModeTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/model/UnmarshalVehicleScheduleFrameChouetteTest.java b/src/test/java/org/entur/netex2/model/UnmarshalVehicleScheduleFrameChouetteTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/model/UnmarshalVehicleScheduleFrameChouetteTest.java rename to src/test/java/org/entur/netex2/model/UnmarshalVehicleScheduleFrameChouetteTest.java index 3b2e8448..cb0411ed 100644 --- a/src/test/java/org/rutebanken/netex/model/UnmarshalVehicleScheduleFrameChouetteTest.java +++ b/src/test/java/org/entur/netex2/model/UnmarshalVehicleScheduleFrameChouetteTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.model; +package org.entur.netex2.model; import jakarta.xml.bind.JAXBElement; import jakarta.xml.bind.JAXBException; diff --git a/src/test/java/org/rutebanken/netex/util/LocalDateTimeISO8601XmlAdapterTest.java b/src/test/java/org/entur/netex2/util/LocalDateTimeISO8601XmlAdapterTest.java similarity index 98% rename from src/test/java/org/rutebanken/netex/util/LocalDateTimeISO8601XmlAdapterTest.java rename to src/test/java/org/entur/netex2/util/LocalDateTimeISO8601XmlAdapterTest.java index 239e2671..acae9c74 100644 --- a/src/test/java/org/rutebanken/netex/util/LocalDateTimeISO8601XmlAdapterTest.java +++ b/src/test/java/org/entur/netex2/util/LocalDateTimeISO8601XmlAdapterTest.java @@ -1,4 +1,4 @@ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import org.junit.jupiter.api.Test; diff --git a/src/test/java/org/entur/netex2/util/LocalDateXmlAdapterTest.java b/src/test/java/org/entur/netex2/util/LocalDateXmlAdapterTest.java new file mode 100644 index 00000000..ab4f1965 --- /dev/null +++ b/src/test/java/org/entur/netex2/util/LocalDateXmlAdapterTest.java @@ -0,0 +1,53 @@ +package org.entur.netex2.util; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.format.DateTimeParseException; + +import static org.junit.jupiter.api.Assertions.*; + +class LocalDateXmlAdapterTest { + + private final LocalDateXmlAdapter adapter = new LocalDateXmlAdapter(); + + @Test + void testUnmarshalBasicDate() { + LocalDate result = adapter.unmarshal("2026-08-31"); + assertEquals(LocalDate.of(2026, 8, 31), result); + } + + @Test + void testUnmarshalDateWithOffset() { + LocalDate result = adapter.unmarshal("2026-05-03+02:00"); + assertEquals(LocalDate.of(2026, 5, 3), result); + } + + @Test + void testUnmarshalDateWithUtcDesignator() { + LocalDate result = adapter.unmarshal("2026-05-03Z"); + assertEquals(LocalDate.of(2026, 5, 3), result); + } + + @Test + void testUnmarshalDateTimeIsRejected() { + assertThrows(DateTimeParseException.class, () -> adapter.unmarshal("2026-05-03T00:00:00")); + } + + @Test + void testMarshalBasicDate() { + String result = adapter.marshal(LocalDate.of(2026, 8, 31)); + assertEquals("2026-08-31", result); + } + + @Test + void testMarshalNull() { + assertNull(adapter.marshal(null)); + } + + @Test + void testRoundTrip() { + LocalDate original = LocalDate.of(2026, 5, 3); + assertEquals(original, adapter.unmarshal(adapter.marshal(original))); + } +} diff --git a/src/test/java/org/rutebanken/netex/util/LocalTimeISO8601XmlAdapterTest.java b/src/test/java/org/entur/netex2/util/LocalTimeISO8601XmlAdapterTest.java similarity index 99% rename from src/test/java/org/rutebanken/netex/util/LocalTimeISO8601XmlAdapterTest.java rename to src/test/java/org/entur/netex2/util/LocalTimeISO8601XmlAdapterTest.java index b2bc0c13..173174e1 100644 --- a/src/test/java/org/rutebanken/netex/util/LocalTimeISO8601XmlAdapterTest.java +++ b/src/test/java/org/entur/netex2/util/LocalTimeISO8601XmlAdapterTest.java @@ -1,4 +1,4 @@ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import java.util.List; import java.util.stream.Collectors; diff --git a/src/test/java/org/rutebanken/netex/util/VersionXmlAdapterTest.java b/src/test/java/org/entur/netex2/util/VersionXmlAdapterTest.java similarity index 98% rename from src/test/java/org/rutebanken/netex/util/VersionXmlAdapterTest.java rename to src/test/java/org/entur/netex2/util/VersionXmlAdapterTest.java index b2eb8527..2c851ba9 100644 --- a/src/test/java/org/rutebanken/netex/util/VersionXmlAdapterTest.java +++ b/src/test/java/org/entur/netex2/util/VersionXmlAdapterTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.util; +package org.entur.netex2.util; import org.junit.jupiter.api.Test; diff --git a/src/test/java/org/rutebanken/netex/validation/NeTExValidatorTest.java b/src/test/java/org/entur/netex2/validation/NeTExValidatorTest.java similarity index 98% rename from src/test/java/org/rutebanken/netex/validation/NeTExValidatorTest.java rename to src/test/java/org/entur/netex2/validation/NeTExValidatorTest.java index 1d9b00c7..86b21a47 100644 --- a/src/test/java/org/rutebanken/netex/validation/NeTExValidatorTest.java +++ b/src/test/java/org/entur/netex2/validation/NeTExValidatorTest.java @@ -13,7 +13,7 @@ * limitations under the Licence. */ -package org.rutebanken.netex.validation; +package org.entur.netex2.validation; import org.junit.jupiter.api.Test; import org.xml.sax.SAXException;