Skip to content

Commit 74f7b07

Browse files
authored
A follow-up PR to #22726 (update workflow, samples) (#23865)
* add new folder to the workflow * update samples
1 parent 9022c9a commit 74f7b07

63 files changed

Lines changed: 34 additions & 8624 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-spring-jdk17.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ on:
1818
- samples/server/petstore/springboot-paged-model/**
1919
- samples/openapi3/server/petstore/spring-boot-oneof-sealed/**
2020
- samples/openapi3/server/petstore/spring-boot-oneof-interface/**
21+
- samples/client/petstore/spring-http-interface-oauth/**
2122
pull_request:
2223
paths:
2324
- samples/openapi3/client/petstore/spring-cloud-3-with-optional/**
@@ -35,6 +36,7 @@ on:
3536
- samples/server/petstore/springboot-paged-model/**
3637
- samples/openapi3/server/petstore/spring-boot-oneof-sealed/**
3738
- samples/openapi3/server/petstore/spring-boot-oneof-interface/**
39+
- samples/client/petstore/spring-http-interface-oauth/**
3840
jobs:
3941
build:
4042
name: Build Java Spring (JDK17)
@@ -60,6 +62,7 @@ jobs:
6062
- samples/server/petstore/springboot-paged-model
6163
- samples/openapi3/server/petstore/spring-boot-oneof-sealed
6264
- samples/openapi3/server/petstore/spring-boot-oneof-interface
65+
- samples/client/petstore/spring-http-interface-oauth
6366
steps:
6467
- uses: actions/checkout@v5
6568
- uses: actions/setup-java@v5

bin/configs/spring-http-interface-oauth.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
generatorName: spring
22
library: spring-http-interface
33
outputDir: samples/client/petstore/spring-http-interface-oauth
4-
inputSpec: modules/openapi-generator/src/test/resources/3_0/spring/petstore-with-fake-endpoints-models-for-testing.yaml
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-addpet-only.yaml
55
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
66
additionalProperties:
7-
artifactId: spring-http-interface-oauth
7+
artifactId: spring-http-interface-oauth-petstore
88
snapshotVersion: "true"
99
hideGenerationTimestamp: "true"
1010
modelNameSuffix: 'Dto'

samples/client/petstore/spring-http-interface-oauth/.openapi-generator-ignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,3 @@
2121
#docs/*.md
2222
# Then explicitly reverse the ignore rule for a single file:
2323
#!docs/README.md
24-
25-
# Preserve custom OAuth2 documentation
26-
README.md
Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,7 @@
1+
README.md
12
pom.xml
2-
src/main/java/org/openapitools/api/AnotherFakeApi.java
3-
src/main/java/org/openapitools/api/FakeApi.java
4-
src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
53
src/main/java/org/openapitools/api/PetApi.java
6-
src/main/java/org/openapitools/api/StoreApi.java
7-
src/main/java/org/openapitools/api/UserApi.java
84
src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java
9-
src/main/java/org/openapitools/model/AdditionalPropertiesAnyTypeDto.java
10-
src/main/java/org/openapitools/model/AdditionalPropertiesArrayDto.java
11-
src/main/java/org/openapitools/model/AdditionalPropertiesBooleanDto.java
12-
src/main/java/org/openapitools/model/AdditionalPropertiesClassDto.java
13-
src/main/java/org/openapitools/model/AdditionalPropertiesIntegerDto.java
14-
src/main/java/org/openapitools/model/AdditionalPropertiesNumberDto.java
15-
src/main/java/org/openapitools/model/AdditionalPropertiesObjectDto.java
16-
src/main/java/org/openapitools/model/AdditionalPropertiesStringDto.java
17-
src/main/java/org/openapitools/model/AnimalDto.java
18-
src/main/java/org/openapitools/model/ApiResponseDto.java
19-
src/main/java/org/openapitools/model/ArrayOfArrayOfNumberOnlyDto.java
20-
src/main/java/org/openapitools/model/ArrayOfNumberOnlyDto.java
21-
src/main/java/org/openapitools/model/ArrayTestDto.java
22-
src/main/java/org/openapitools/model/BigCatDto.java
23-
src/main/java/org/openapitools/model/CapitalizationDto.java
24-
src/main/java/org/openapitools/model/CatDto.java
255
src/main/java/org/openapitools/model/CategoryDto.java
26-
src/main/java/org/openapitools/model/ChildWithNullableDto.java
27-
src/main/java/org/openapitools/model/ClassModelDto.java
28-
src/main/java/org/openapitools/model/ClientDto.java
29-
src/main/java/org/openapitools/model/ContainerDefaultValueDto.java
30-
src/main/java/org/openapitools/model/DogDto.java
31-
src/main/java/org/openapitools/model/EnumArraysDto.java
32-
src/main/java/org/openapitools/model/EnumClassDto.java
33-
src/main/java/org/openapitools/model/EnumTestDto.java
34-
src/main/java/org/openapitools/model/FileDto.java
35-
src/main/java/org/openapitools/model/FileSchemaTestClassDto.java
36-
src/main/java/org/openapitools/model/FormatTestDto.java
37-
src/main/java/org/openapitools/model/HasOnlyReadOnlyDto.java
38-
src/main/java/org/openapitools/model/ListDto.java
39-
src/main/java/org/openapitools/model/MapTestDto.java
40-
src/main/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClassDto.java
41-
src/main/java/org/openapitools/model/Model200ResponseDto.java
42-
src/main/java/org/openapitools/model/NameDto.java
43-
src/main/java/org/openapitools/model/NullableMapPropertyDto.java
44-
src/main/java/org/openapitools/model/NumberOnlyDto.java
45-
src/main/java/org/openapitools/model/OrderDto.java
46-
src/main/java/org/openapitools/model/OuterCompositeDto.java
47-
src/main/java/org/openapitools/model/OuterEnumDto.java
48-
src/main/java/org/openapitools/model/ParentWithNullableDto.java
496
src/main/java/org/openapitools/model/PetDto.java
50-
src/main/java/org/openapitools/model/ReadOnlyFirstDto.java
51-
src/main/java/org/openapitools/model/ResponseObjectWithDifferentFieldNamesDto.java
52-
src/main/java/org/openapitools/model/ReturnDto.java
53-
src/main/java/org/openapitools/model/SpecialModelNameDto.java
547
src/main/java/org/openapitools/model/TagDto.java
55-
src/main/java/org/openapitools/model/TypeHolderDefaultDto.java
56-
src/main/java/org/openapitools/model/TypeHolderExampleDto.java
57-
src/main/java/org/openapitools/model/UserDto.java
58-
src/main/java/org/openapitools/model/XmlItemDto.java
Lines changed: 11 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,21 @@
1-
# Spring HTTP Interface with OAuth2 (@ClientRegistrationId)
1+
# OpenAPI generated API stub
22

3-
This sample demonstrates the use of the `@ClientRegistrationId` annotation with Spring HTTP Interface clients.
3+
[Spring Framework 6.1 HTTP Interface](https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-http-interface)
44

5-
## Overview
65

6+
## Overview
77
This code was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
8-
When generating Spring HTTP Interface clients, you can specify a `clientRegistrationId` parameter to automatically add the `@ClientRegistrationId` annotation to all generated API interfaces.
9-
10-
## Configuration
11-
12-
Add the `clientRegistrationId` property to your generator configuration:
13-
14-
```yaml
15-
generatorName: spring
16-
library: spring-http-interface
17-
additionalProperties:
18-
clientRegistrationId: "petstore-oauth"
19-
useSpringBoot4: "true"
20-
useJackson3: true
21-
openApiNullable: false
22-
```
23-
24-
Or via command line:
25-
26-
```bash
27-
openapi-generator-cli generate \
28-
-g spring \
29-
--library spring-http-interface \
30-
--additional-properties clientRegistrationId=petstore-oauth,useSpringBoot4=true,useJackson3=true,openApiNullable=false \
31-
-i petstore.yaml \
32-
-o ./output
33-
```
34-
35-
## Generated Code
36-
37-
The generated interface will include the `@ClientRegistrationId` annotation at the class level:
38-
39-
```java
40-
@ClientRegistrationId("petstore-oauth")
41-
public interface PetApi {
42-
43-
@HttpExchange(
44-
method = "GET",
45-
value = "/pet/{petId}",
46-
accept = { "application/json" }
47-
)
48-
ResponseEntity<PetDto> getPetById(@PathVariable("petId") Long petId);
49-
}
50-
```
51-
52-
## Spring Security Integration
53-
54-
This annotation is part of Spring Security's OAuth2 integration for HTTP Service Clients. It automatically associates OAuth2 tokens with HTTP requests.
55-
56-
### Requirements
57-
58-
- Spring Boot 4.x
59-
- Spring Security 7.x
60-
61-
### Application Properties
62-
63-
Configure your Spring application with the OAuth2 client registration:
64-
65-
```yaml
66-
spring:
67-
security:
68-
oauth2:
69-
client:
70-
registration:
71-
petstore-oauth:
72-
client-id: your-client-id
73-
client-secret: your-client-secret
74-
authorization-grant-type: client_credentials
75-
scope: read,write
76-
provider:
77-
petstore-oauth:
78-
token-uri: https://auth.example.com/oauth/token
79-
```
80-
81-
### Bean Configuration
82-
83-
Configure your HTTP Interface beans with OAuth2 support using `RestClient` and the `OAuth2ClientHttpRequestInterceptor`:
8+
By using the [OpenAPI-Spec](https://openapis.org), you can easily generate an API stub.
9+
This is an example of building API stub interfaces in Java using the Spring framework.
8410

11+
The stubs generated can be used in your existing Spring application for HTTP integration with other REST services
12+
To use auto-generated interfaces you have to create your own configuration which extends default abstract configurator & provide `RestClient` instance via constructor
8513
```java
8614
@Configuration
87-
public class HttpInterfaceConfig {
88-
89-
@Bean
90-
public PetApi petApi(RestClient.Builder builder, OAuth2AuthorizedClientManager authorizedClientManager) {
91-
OAuth2ClientHttpRequestInterceptor interceptor =
92-
new OAuth2ClientHttpRequestInterceptor(authorizedClientManager);
93-
94-
RestClient restClient = builder
95-
.baseUrl("https://petstore.example.com/v2")
96-
.requestInterceptor(interceptor)
97-
.build();
15+
public class MyConfiguration extends org.openapitools.configuration.HttpInterfacesAbstractConfigurator {
9816

99-
HttpServiceProxyFactory factory = HttpServiceProxyFactory
100-
.builderFor(RestClientAdapter.create(restClient))
101-
.build();
102-
103-
return factory.createClient(PetApi.class);
17+
public MyConfiguration(RestClient myRestClient) { // separately created RestClient instance
18+
super(myRestClient);
10419
}
10520
}
106-
```
107-
108-
## References
109-
110-
- [Spring Security HTTP Service Client Integration](https://docs.spring.io/spring-security/reference/servlet/oauth2/client/http-service-client.html)
111-
- [Spring Framework HTTP Interface](https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-http-interface)
21+
```

samples/client/petstore/spring-http-interface-oauth/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>org.openapitools</groupId>
4-
<artifactId>spring-http-interface-oauth</artifactId>
4+
<artifactId>spring-http-interface-oauth-petstore</artifactId>
55
<packaging>jar</packaging>
6-
<name>spring-http-interface-oauth</name>
6+
<name>spring-http-interface-oauth-petstore</name>
77
<version>1.0.0-SNAPSHOT</version>
88
<properties>
99
<java.version>17</java.version>

samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/AnotherFakeApi.java

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

0 commit comments

Comments
 (0)