Skip to content

Commit 145705d

Browse files
committed
Upgrade to NeTEx 2.0 schema for 1.x branch (Java EE 8)
1 parent ff24e41 commit 145705d

File tree

12 files changed

+139
-93
lines changed

12 files changed

+139
-93
lines changed

.github/workflows/deploy.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: Build and Deploy
22
on:
33
push:
44
branches:
5-
- 1.x
5+
- upgrade-netex-2.0_for_1.x
66
pull_request:
77
branches:
8-
- 1.x
8+
- upgrade-netex-2.0_for_1.x
99
jobs:
1010
maven-verify:
1111
runs-on: ubuntu-24.04
@@ -52,7 +52,7 @@ jobs:
5252

5353
publish-snapshot:
5454
name: Publish snapshot to Maven Central
55-
if: github.repository_owner == 'entur' && github.event_name == 'push' && github.ref == 'refs/heads/1.x'
55+
if: github.repository_owner == 'entur' && github.event_name == 'push' && github.ref == 'refs/heads/upgrade-netex-2.0_for_1.x'
5656
needs: maven-verify
5757
uses: ./.github/workflows/maven-jreleaser-release.yml
5858
with:

bindings.xjb

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515

1616
<!-- See the script bin/version_updater.sh It updates version in schema locations-->
1717

18-
<jxb:bindings schemaLocation="./src/main/resources/xsd/1.16/NeTEx_publication.xsd">
18+
<jxb:bindings schemaLocation="./src/main/resources/xsd/2.0/NeTEx_publication.xsd">
1919
<jxb:schemaBindings>
2020
<jxb:package name="org.rutebanken.netex.model" />
2121
</jxb:schemaBindings>
2222
</jxb:bindings>
2323

2424
<jxb:bindings
25-
schemaLocation="./src/main/resources/xsd/1.16/netex_framework/netex_genericFramework/netex_organisation_version.xsd">
25+
schemaLocation="./src/main/resources/xsd/2.0/netex_framework/netex_genericFramework/netex_organisation_version.xsd">
2626
<jxb:bindings node="//xsd:element[@name = 'Status']">
2727
<jxb:property name="StatusOrganisationGroup" />
2828
</jxb:bindings>
@@ -31,35 +31,28 @@
3131
</jxb:bindings>
3232
</jxb:bindings>
3333
<jxb:bindings
34-
schemaLocation="./src/main/resources/xsd/1.16/netex_part_3/part3_fares/netex_salesOfferPackage_version.xsd">
34+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_3/part3_fares/netex_salesOfferPackage_version.xsd">
3535
<jxb:bindings node="//xsd:element[@ref = 'ResponsibilitySetRef']">
3636
<jxb:property name="ResponsibilitySetRefDistributionByGroup" />
3737
</jxb:bindings>
3838
</jxb:bindings>
3939

4040
<jxb:bindings
41-
schemaLocation="./src/main/resources/xsd/1.16/netex_part_2/part2_journeyTimes/netex_vehicleJourneyFrequency_version.xsd">
42-
<jxb:bindings node="//xsd:group[@name= 'HeadwayJourneyGroupGroup']/xsd:sequence/xsd:element[@name = 'Description']">
43-
<jxb:property name="DescriptionHeadwayJourneyGroupGroup" />
44-
</jxb:bindings>
45-
</jxb:bindings>
46-
47-
<jxb:bindings
48-
schemaLocation="./src/main/resources/xsd/1.16/netex_part_3/part3_salesTransactions/netex_salesContract_version.xsd">
41+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_3/part3_salesTransactions/netex_salesContract_version.xsd">
4942
<jxb:bindings node="//xsd:element[@name = 'Status']">
5043
<jxb:property name="StatusPassengerContractGroup" />
5144
</jxb:bindings>
5245
</jxb:bindings>
5346

5447
<jxb:bindings
55-
schemaLocation="./src/main/resources/xsd/1.16/netex_part_3/part3_salesTransactions/netex_retailConsortium_version.xsd">
48+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_3/part3_salesTransactions/netex_retailConsortium_version.xsd">
5649
<jxb:bindings node="//xsd:element[@name = 'Status']">
5750
<jxb:property name="StatusRetailDeviceGroup" />
5851
</jxb:bindings>
5952
</jxb:bindings>
6053

6154
<jxb:bindings
62-
schemaLocation="./src/main/resources/xsd/1.16/netex_framework/netex_responsibility/netex_version_support.xsd">
55+
schemaLocation="./src/main/resources/xsd/2.0/netex_framework/netex_responsibility/netex_version_support.xsd">
6356
<jxb:bindings node="//xsd:attributeGroup[@name = 'BasicModificationDetailsGroup']/xsd:attribute[@name = 'status']">
6457
<jxb:property name="status_BasicModificationDetailsGroup" />
6558
</jxb:bindings>
@@ -69,14 +62,43 @@
6962
</jxb:bindings>
7063

7164
<jxb:bindings
72-
schemaLocation="./src/main/resources/xsd/1.16/netex_framework/netex_genericFramework/netex_zone_version.xsd">
73-
<jxb:bindings node="//xsd:complexType[@name = 'tariffZonesInFrame_RelStructure']/xsd:complexContent/xsd:extension[@base = 'containmentAggregationStructure']/xsd:sequence/xsd:element[@ref = 'TariffZone_']">
65+
schemaLocation="./src/main/resources/xsd/2.0/netex_framework/netex_genericFramework/netex_zone_version.xsd">
66+
<jxb:bindings node="//xsd:complexType[@name = 'tariffZonesInFrame_RelStructure']/xsd:complexContent/xsd:extension[@base = 'containmentAggregationStructure']/xsd:sequence/xsd:element[@ref = 'TariffZone_Dummy']">
7467
<jxb:property name="tariffZone" />
7568
</jxb:bindings>
7669
</jxb:bindings>
7770

7871

72+
<!-- NeTEx 2.0: Resolve ObjectFactory collisions for bookingArrangements vs BookingArrangements -->
73+
<jxb:bindings
74+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_1/part1_tacticalPlanning/netex_servicePattern_version.xsd">
75+
<jxb:bindings node="//xsd:group[@name = 'StopPointInPatternPropertiesGroup']/xsd:sequence/xsd:choice/xsd:element[@name = 'bookingArrangements']">
76+
<jxb:property name="bookingArrangementsRelStructure" />
77+
</jxb:bindings>
78+
</jxb:bindings>
79+
80+
<jxb:bindings
81+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_5/part5_rc/netex_nm_mobilityService_version.xsd">
82+
<jxb:bindings node="//xsd:group[@name = 'MobilityServiceGroup']/xsd:sequence/xsd:choice/xsd:element[@name = 'serviceBookingArrangements']">
83+
<jxb:property name="serviceBookingArrangementsRelStructure" />
84+
</jxb:bindings>
85+
</jxb:bindings>
7986

87+
<jxb:bindings
88+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_3/part3_fares/netex_usageParameterBooking_version.xsd">
89+
<jxb:bindings node="//xsd:group[@name = 'ReservingGroup']/xsd:sequence/xsd:choice/xsd:element[@name = 'bookingArrangements']">
90+
<jxb:property name="bookingArrangementsRelStructureReserving" />
91+
</jxb:bindings>
92+
<jxb:bindings node="//xsd:group[@name = 'CancellingGroup']/xsd:sequence/xsd:choice/xsd:element[@name = 'bookingArrangements']">
93+
<jxb:property name="bookingArrangementsRelStructureCancelling" />
94+
</jxb:bindings>
95+
</jxb:bindings>
8096

97+
<jxb:bindings
98+
schemaLocation="./src/main/resources/xsd/2.0/netex_part_1/part1_ifopt/netex_assistanceBooking_version.xsd">
99+
<jxb:bindings node="//xsd:group[@name = 'AssistanceBookingServiceGroup']/xsd:sequence/xsd:choice/xsd:element[@name = 'bookingArrangements']">
100+
<jxb:property name="bookingArrangementsRelStructureAssistance" />
101+
</jxb:bindings>
102+
</jxb:bindings>
81103

82104
</jxb:bindings>

pom.xml

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<modelVersion>4.0.0</modelVersion>
1818
<groupId>org.entur</groupId>
1919
<artifactId>netex-java-model</artifactId>
20-
<version>1.0.16-SNAPSHOT</version>
20+
<version>1.1.0-SNAPSHOT</version>
2121

2222
<name>netex-java-model</name>
2323
<description>Generates Java model from NeTEx xsds using jaxb.</description>
@@ -67,9 +67,10 @@
6767
<jdk.version>1.8</jdk.version>
6868

6969
<netexRepoName>NeTEx</netexRepoName>
70-
<netexBranch>master</netexBranch>
71-
<netexGithubUrl>https://github.com/entur/${netexRepoName}</netexGithubUrl>
72-
<netexVersion>1.16</netexVersion>
70+
<netexBranch>v2.0</netexBranch>
71+
<cenNetexGithubUrl>https://github.com/NeTEx-CEN/${netexRepoName}</cenNetexGithubUrl>
72+
<enturNetexGithubUrl>https://github.com/entur/${netexRepoName}</enturNetexGithubUrl>
73+
<netexVersion>2.0</netexVersion>
7374

7475
<!-- JAXB components versions -->
7576
<jakarta-xml-bind.version>2.3.3</jakarta-xml-bind.version>
@@ -272,9 +273,9 @@
272273
</goals>
273274
<configuration>
274275
<environmentVariables>
275-
<GITHUB_URL>${netexGithubUrl}/archive/${netexBranch}.zip</GITHUB_URL>
276+
<GITHUB_URL>${cenNetexGithubUrl}/archive/${netexBranch}.zip</GITHUB_URL>
276277
<DESTINATION_PATH>src/main/resources/xsd/${netexVersion}</DESTINATION_PATH>
277-
<ZIP_PATH_TO_EXTRACT>NeTEx-${netexBranch}/xsd/*</ZIP_PATH_TO_EXTRACT>
278+
<ZIP_PATH_TO_EXTRACT>NeTEx-${netexVersion}/xsd/*</ZIP_PATH_TO_EXTRACT>
278279
</environmentVariables>
279280
<executable>./bin/netex-download-extract.sh</executable>
280281
</configuration>
@@ -303,7 +304,7 @@
303304
</goals>
304305
<configuration>
305306
<environmentVariables>
306-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.15.zip</GITHUB_URL>
307+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.15.zip</GITHUB_URL>
307308
<DESTINATION_PATH>src/main/resources/xsd/1.15</DESTINATION_PATH>
308309
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.15/xsd/*</ZIP_PATH_TO_EXTRACT>
309310
</environmentVariables>
@@ -319,7 +320,7 @@
319320
</goals>
320321
<configuration>
321322
<environmentVariables>
322-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.14.zip</GITHUB_URL>
323+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.14.zip</GITHUB_URL>
323324
<DESTINATION_PATH>src/main/resources/xsd/1.14</DESTINATION_PATH>
324325
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.14/xsd/*</ZIP_PATH_TO_EXTRACT>
325326
</environmentVariables>
@@ -335,7 +336,7 @@
335336
</goals>
336337
<configuration>
337338
<environmentVariables>
338-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.13.zip</GITHUB_URL>
339+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.13.zip</GITHUB_URL>
339340
<DESTINATION_PATH>src/main/resources/xsd/1.13</DESTINATION_PATH>
340341
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.13/xsd/*</ZIP_PATH_TO_EXTRACT>
341342
</environmentVariables>
@@ -351,7 +352,7 @@
351352
</goals>
352353
<configuration>
353354
<environmentVariables>
354-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.12.zip</GITHUB_URL>
355+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.12.zip</GITHUB_URL>
355356
<DESTINATION_PATH>src/main/resources/xsd/1.12</DESTINATION_PATH>
356357
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.12/xsd/*</ZIP_PATH_TO_EXTRACT>
357358
</environmentVariables>
@@ -367,7 +368,7 @@
367368
</goals>
368369
<configuration>
369370
<environmentVariables>
370-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.11.zip</GITHUB_URL>
371+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.11.zip</GITHUB_URL>
371372
<DESTINATION_PATH>src/main/resources/xsd/1.11</DESTINATION_PATH>
372373
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.11/xsd/*</ZIP_PATH_TO_EXTRACT>
373374
</environmentVariables>
@@ -383,7 +384,7 @@
383384
</goals>
384385
<configuration>
385386
<environmentVariables>
386-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.10-entur.zip</GITHUB_URL>
387+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.10-entur.zip</GITHUB_URL>
387388
<DESTINATION_PATH>src/main/resources/xsd/1.10</DESTINATION_PATH>
388389
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.10-entur/xsd/*</ZIP_PATH_TO_EXTRACT>
389390
</environmentVariables>
@@ -399,7 +400,7 @@
399400
</goals>
400401
<configuration>
401402
<environmentVariables>
402-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.9.zip</GITHUB_URL>
403+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.9.zip</GITHUB_URL>
403404
<DESTINATION_PATH>src/main/resources/xsd/1.09</DESTINATION_PATH>
404405
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.9/xsd/*</ZIP_PATH_TO_EXTRACT>
405406
</environmentVariables>
@@ -415,7 +416,7 @@
415416
</goals>
416417
<configuration>
417418
<environmentVariables>
418-
<GITHUB_URL>${netexGithubUrl}/archive/tags/v1.0.8.zip</GITHUB_URL>
419+
<GITHUB_URL>${enturNetexGithubUrl}/archive/tags/v1.0.8.zip</GITHUB_URL>
419420
<DESTINATION_PATH>src/main/resources/xsd/1.08</DESTINATION_PATH>
420421
<ZIP_PATH_TO_EXTRACT>NeTEx-tags-v1.0.8/xsd/*</ZIP_PATH_TO_EXTRACT>
421422
</environmentVariables>

src/main/java/org/rutebanken/netex/validation/NeTExValidator.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ public enum NetexVersion {
4444
v1_13 ("1.13"),
4545
v1_14 ("1.14"),
4646
v1_15 ("1.15"),
47-
v1_16 ("1.16");
47+
v1_16 ("1.16"),
48+
v2_0 ("2.0");
4849

4950
private final String folderName;
5051

@@ -59,7 +60,7 @@ public String toString() {
5960
}
6061
private final Schema neTExSchema;
6162

62-
public static final NetexVersion LATEST = NetexVersion.v1_16;
63+
public static final NetexVersion LATEST = NetexVersion.v2_0;
6364

6465
private static final Map<NetexVersion, NeTExValidator> VALIDATORS_PER_VERSION = new EnumMap<>(NetexVersion.class);
6566

src/test/java/org/rutebanken/netex/model/AbstractUnmarshalFrameTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,19 @@ public static void initContext() throws JAXBException {
3232
}
3333

3434

35-
35+
/**
36+
* Helper method to extract string value from MultilingualString.
37+
* In NeTEx 2.0, MultilingualString uses mixed content instead of a simple value.
38+
*/
39+
protected static String getStringValue(MultilingualString multilingualString) {
40+
if (multilingualString == null || multilingualString.getContent() == null) {
41+
return null;
42+
}
43+
return multilingualString.getContent().stream()
44+
.filter(String.class::isInstance)
45+
.map(String.class::cast)
46+
.findFirst()
47+
.orElse(null);
48+
}
3649

3750
}

0 commit comments

Comments
 (0)