Skip to content

Commit 148124e

Browse files
authored
Merge pull request #2 from bsayli/feature/openapi-auto-wrappers-and-client-templates
Feature: OpenAPI auto wrappers and client templates
2 parents f21153b + 0b0ed91 commit 148124e

File tree

12 files changed

+197
-813
lines changed

12 files changed

+197
-813
lines changed

customer-service-client/pom.xml

Lines changed: 84 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.bsayli</groupId>
88
<artifactId>customer-service-client</artifactId>
9-
<version>0.5.0</version>
9+
<version>0.6.0</version>
1010
<name>customer-service-client</name>
1111
<description>Generated client (RestClient) using generics-aware OpenAPI templates</description>
1212
<packaging>jar</packaging>
@@ -20,16 +20,20 @@
2020
<openapi.generator.version>7.15.0</openapi.generator.version>
2121
<maven.compiler.plugin.version>3.13.0</maven.compiler.plugin.version>
2222
<build.helper.plugin.version>3.6.0</build.helper.plugin.version>
23+
<maven.resources.plugin.version>3.3.1</maven.resources.plugin.version>
24+
<maven.dependency.plugin.version>3.8.1</maven.dependency.plugin.version>
2325

2426
<jakarta.validation.version>3.1.1</jakarta.validation.version>
2527
<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
2628
<mockwebserver.version>5.1.0</mockwebserver.version>
2729
<httpclient5.version>5.5</httpclient5.version>
2830
<junit-jupiter.version>5.13.4</junit-jupiter.version>
31+
32+
<openapi.templates.upstream>${project.build.directory}/upstream-templates</openapi.templates.upstream>
33+
<openapi.templates.effective>${project.build.directory}/effective-templates</openapi.templates.effective>
2934
</properties>
3035

3136
<dependencies>
32-
3337
<dependency>
3438
<groupId>org.springframework.boot</groupId>
3539
<artifactId>spring-boot-starter-web</artifactId>
@@ -80,18 +84,90 @@
8084
</dependencies>
8185

8286
<build>
83-
8487
<resources>
8588
<resource>
8689
<directory>src/main/resources</directory>
8790
<excludes>
88-
<exclude>**/*.yaml</exclude>
8991
<exclude>openapi-templates/**</exclude>
9092
</excludes>
9193
</resource>
9294
</resources>
9395

9496
<plugins>
97+
<plugin>
98+
<groupId>org.apache.maven.plugins</groupId>
99+
<artifactId>maven-dependency-plugin</artifactId>
100+
<version>${maven.dependency.plugin.version}</version>
101+
<executions>
102+
<execution>
103+
<id>unpack-openapi-upstream-templates</id>
104+
<phase>generate-sources</phase>
105+
<goals>
106+
<goal>unpack</goal>
107+
</goals>
108+
<configuration>
109+
<artifactItems>
110+
<artifactItem>
111+
<groupId>org.openapitools</groupId>
112+
<artifactId>openapi-generator</artifactId>
113+
<version>${openapi.generator.version}</version>
114+
<type>jar</type>
115+
<overWrite>true</overWrite>
116+
<includes>templates/Java/**</includes>
117+
<outputDirectory>${openapi.templates.upstream}</outputDirectory>
118+
</artifactItem>
119+
</artifactItems>
120+
</configuration>
121+
</execution>
122+
</executions>
123+
</plugin>
124+
125+
<plugin>
126+
<groupId>org.apache.maven.plugins</groupId>
127+
<artifactId>maven-resources-plugin</artifactId>
128+
<version>${maven.resources.plugin.version}</version>
129+
<executions>
130+
<execution>
131+
<id>copy-upstream-to-effective</id>
132+
<phase>generate-sources</phase>
133+
<goals>
134+
<goal>copy-resources</goal>
135+
</goals>
136+
<configuration>
137+
<outputDirectory>${openapi.templates.effective}</outputDirectory>
138+
<resources>
139+
<resource>
140+
<directory>${openapi.templates.upstream}/templates</directory>
141+
<includes>
142+
<include>Java/**</include>
143+
</includes>
144+
</resource>
145+
</resources>
146+
</configuration>
147+
</execution>
148+
149+
<execution>
150+
<id>overlay-local-templates</id>
151+
<phase>generate-sources</phase>
152+
<goals>
153+
<goal>copy-resources</goal>
154+
</goals>
155+
<configuration>
156+
<outputDirectory>${openapi.templates.effective}/Java</outputDirectory>
157+
<overwrite>true</overwrite>
158+
<resources>
159+
<resource>
160+
<directory>src/main/resources/openapi-templates</directory>
161+
<filtering>false</filtering>
162+
<includes>
163+
<include>**/*.mustache</include>
164+
</includes>
165+
</resource>
166+
</resources>
167+
</configuration>
168+
</execution>
169+
</executions>
170+
</plugin>
95171

96172
<plugin>
97173
<groupId>org.openapitools</groupId>
@@ -100,6 +176,7 @@
100176
<executions>
101177
<execution>
102178
<id>generate-client</id>
179+
<phase>generate-sources</phase>
103180
<goals>
104181
<goal>generate</goal>
105182
</goals>
@@ -113,8 +190,7 @@
113190
<modelPackage>io.github.bsayli.openapi.client.generated.dto</modelPackage>
114191
<invokerPackage>io.github.bsayli.openapi.client.generated.invoker</invokerPackage>
115192

116-
<templateDirectory>${project.basedir}/src/main/resources/openapi-templates
117-
</templateDirectory>
193+
<templateDirectory>${openapi.templates.effective}/Java</templateDirectory>
118194

119195
<generateSupportingFiles>true</generateSupportingFiles>
120196
<generateApiDocumentation>false</generateApiDocumentation>
@@ -131,7 +207,7 @@
131207
<dateLibrary>java8</dateLibrary>
132208
<useBeanValidation>true</useBeanValidation>
133209
<openApiNullable>false</openApiNullable>
134-
<sourceFolder>src/gen/java/main</sourceFolder>
210+
<sourceFolder>src/gen/java</sourceFolder>
135211
</configOptions>
136212
</configuration>
137213
</execution>
@@ -151,7 +227,7 @@
151227
</goals>
152228
<configuration>
153229
<sources>
154-
<source>${project.build.directory}/generated-sources/openapi/src/gen/java/main</source>
230+
<source>${project.build.directory}/generated-sources/openapi/src/gen/java</source>
155231
</sources>
156232
</configuration>
157233
</execution>

customer-service-client/src/main/resources/customer-api-docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ openapi: 3.1.0
22
info:
33
title: Customer Service API
44
description: "Demo: type-safe generic API responses with OpenAPI"
5-
version: 0.3.0
5+
version: 0.6.0
66
servers:
77
- url: http://localhost:8084/customer-service
88
description: Local service URL

customer-service-client/src/main/resources/openapi-templates/modelEnum.mustache

Lines changed: 0 additions & 120 deletions
This file was deleted.

customer-service-client/src/main/resources/openapi-templates/oneof_interface.mustache

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)