Skip to content

Commit 20a862f

Browse files
committed
[jaxrs-spec] Add records samples for every library and build them in CI
useRecords is implemented in the shared model/record templates, so it applies to all five jaxrs-spec libraries, but only the default one had a sample. Add a records sample per library - helidon, kumuluzee, openliberty, quarkus and thorntail - and register all five in the JDK17 samples workflow so they are compiled on every push and pull request. Two things had to be fixed to make those samples compile: * Each library overrides pom.mustache and hardcoded Java 1.8 (helidon: 11), so a records or sealed sample could not build. Gate the compiler source/target on useSealed/useRecords exactly as the base pom.mustache already does. * record.mustache imported JsonNullable unconditionally. The import is already contributed through the imports block for the models that use it, so records with a nullable component carried a duplicate import, and records without one carried an unused import that fails to compile on the libraries whose pom does not ship jackson-databind-nullable. kumuluzee, openliberty and thorntail additionally set openApiNullable=false in their sample config: their poms omit jackson-databind-nullable while the pojo template imports JsonNullable whenever openApiNullable is on, which is a pre-existing issue unrelated to records (it reproduces with no records flags set at all). All six records samples plus jaxrs-spec-sealed build under JDK 17.
1 parent e621e73 commit 20a862f

98 files changed

Lines changed: 3106 additions & 14 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/samples-jdk17.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ on:
2424
- samples/server/petstore/java-helidon-server/v3/se/**
2525
- samples/server/petstore/jaxrs-spec-sealed/**
2626
- samples/server/petstore/jaxrs-spec-records/**
27+
- samples/server/petstore/jaxrs-spec-records-helidon/**
28+
- samples/server/petstore/jaxrs-spec-records-kumuluzee/**
29+
- samples/server/petstore/jaxrs-spec-records-openliberty/**
30+
- samples/server/petstore/jaxrs-spec-records-quarkus/**
31+
- samples/server/petstore/jaxrs-spec-records-thorntail/**
2732
pull_request:
2833
paths:
2934
# clients
@@ -48,6 +53,11 @@ on:
4853
- samples/server/petstore/java-helidon-server/v3/se/**
4954
- samples/server/petstore/jaxrs-spec-sealed/**
5055
- samples/server/petstore/jaxrs-spec-records/**
56+
- samples/server/petstore/jaxrs-spec-records-helidon/**
57+
- samples/server/petstore/jaxrs-spec-records-kumuluzee/**
58+
- samples/server/petstore/jaxrs-spec-records-openliberty/**
59+
- samples/server/petstore/jaxrs-spec-records-quarkus/**
60+
- samples/server/petstore/jaxrs-spec-records-thorntail/**
5161
jobs:
5262
build:
5363
name: Build with JDK17
@@ -78,6 +88,11 @@ jobs:
7888
- samples/server/petstore/java-helidon-server/v3/se
7989
- samples/server/petstore/jaxrs-spec-sealed
8090
- samples/server/petstore/jaxrs-spec-records
91+
- samples/server/petstore/jaxrs-spec-records-helidon
92+
- samples/server/petstore/jaxrs-spec-records-kumuluzee
93+
- samples/server/petstore/jaxrs-spec-records-openliberty
94+
- samples/server/petstore/jaxrs-spec-records-quarkus
95+
- samples/server/petstore/jaxrs-spec-records-thorntail
8196
steps:
8297
- uses: actions/checkout@v7
8398
- uses: actions/setup-java@v5
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
generatorName: jaxrs-spec
2+
outputDir: samples/server/petstore/jaxrs-spec-records-helidon
3+
library: helidon
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/jaxrs-spec/oneof_interface.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec
6+
additionalProperties:
7+
artifactId: jaxrs-spec-records-helidon-petstore-server
8+
useOneOfInterfaces: "true"
9+
useSealed: "true"
10+
useRecords: "true"
11+
hideGenerationTimestamp: "true"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
generatorName: jaxrs-spec
2+
outputDir: samples/server/petstore/jaxrs-spec-records-kumuluzee
3+
library: kumuluzee
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/jaxrs-spec/oneof_interface.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec
6+
additionalProperties:
7+
artifactId: jaxrs-spec-records-kumuluzee-petstore-server
8+
useOneOfInterfaces: "true"
9+
useSealed: "true"
10+
useRecords: "true"
11+
hideGenerationTimestamp: "true"
12+
# This library's pom does not ship jackson-databind-nullable, and the pojo
13+
# template imports JsonNullable whenever openApiNullable is on (the default),
14+
# so the sample would not compile. Unrelated to records; see PetBase.
15+
openApiNullable: "false"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
generatorName: jaxrs-spec
2+
outputDir: samples/server/petstore/jaxrs-spec-records-openliberty
3+
library: openliberty
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/jaxrs-spec/oneof_interface.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec
6+
additionalProperties:
7+
artifactId: jaxrs-spec-records-openliberty-petstore-server
8+
useOneOfInterfaces: "true"
9+
useSealed: "true"
10+
useRecords: "true"
11+
hideGenerationTimestamp: "true"
12+
# This library's pom does not ship jackson-databind-nullable, and the pojo
13+
# template imports JsonNullable whenever openApiNullable is on (the default),
14+
# so the sample would not compile. Unrelated to records; see PetBase.
15+
openApiNullable: "false"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
generatorName: jaxrs-spec
2+
outputDir: samples/server/petstore/jaxrs-spec-records-quarkus
3+
library: quarkus
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/jaxrs-spec/oneof_interface.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec
6+
additionalProperties:
7+
artifactId: jaxrs-spec-records-quarkus-petstore-server
8+
useOneOfInterfaces: "true"
9+
useSealed: "true"
10+
useRecords: "true"
11+
hideGenerationTimestamp: "true"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
generatorName: jaxrs-spec
2+
outputDir: samples/server/petstore/jaxrs-spec-records-thorntail
3+
library: thorntail
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/jaxrs-spec/oneof_interface.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec
6+
additionalProperties:
7+
artifactId: jaxrs-spec-records-thorntail-petstore-server
8+
useOneOfInterfaces: "true"
9+
useSealed: "true"
10+
useRecords: "true"
11+
hideGenerationTimestamp: "true"
12+
# This library's pom does not ship jackson-databind-nullable, and the pojo
13+
# template imports JsonNullable whenever openApiNullable is on (the default),
14+
# so the sample would not compile. Unrelated to records; see PetBase.
15+
openApiNullable: "false"

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/helidon/pom.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<helidon.version>{{helidonVersion}}</helidon.version>
2121
<mainClass>io.helidon.microprofile.cdi.Main</mainClass>
2222

23-
<maven.compiler.source>11</maven.compiler.source>
23+
<maven.compiler.source>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}11{{/useRecords}}{{/useSealed}}</maven.compiler.source>
2424
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
2525
<maven.site.skip>true</maven.site.skip>
2626
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
<description>The microservice was generated automatically with the OpenAPI Generator project</description>
2121

2222
<properties>
23-
<maven.compiler.source>1.8</maven.compiler.source>
24-
<maven.compiler.target>1.8</maven.compiler.target>
23+
<maven.compiler.source>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}1.8{{/useRecords}}{{/useSealed}}</maven.compiler.source>
24+
<maven.compiler.target>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}1.8{{/useRecords}}{{/useSealed}}</maven.compiler.target>
2525
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2626

2727
<kumuluzee.version>3.9.0</kumuluzee.version>

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/openliberty/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151

5252
<properties>
5353
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
54-
<maven.compiler.source>1.8</maven.compiler.source>
55-
<maven.compiler.target>1.8</maven.compiler.target>
54+
<maven.compiler.source>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}1.8{{/useRecords}}{{/useSealed}}</maven.compiler.source>
55+
<maven.compiler.target>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}1.8{{/useRecords}}{{/useSealed}}</maven.compiler.target>
5656
<failOnMissingWebXml>false</failOnMissingWebXml>
5757
<version.maven-war-plugin>3.2.2</version.maven-war-plugin>
5858
<!-- OpenLiberty runtime -->

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
<properties>
1919
<compiler-plugin.version>3.8.1</compiler-plugin.version>
2020
<maven.compiler.parameters>true</maven.compiler.parameters>
21-
<maven.compiler.source>1.8</maven.compiler.source>
22-
<maven.compiler.target>1.8</maven.compiler.target>
21+
<maven.compiler.source>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}1.8{{/useRecords}}{{/useSealed}}</maven.compiler.source>
22+
<maven.compiler.target>{{#useSealed}}17{{/useSealed}}{{^useSealed}}{{#useRecords}}17{{/useRecords}}{{^useRecords}}1.8{{/useRecords}}{{/useSealed}}</maven.compiler.target>
2323
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2424
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2525
{{#useJakartaEe}}

0 commit comments

Comments
 (0)