Skip to content

Commit 182fe93

Browse files
authored
[Java][Spring] fix unhandledException not working in combination with… (#9879)
* #4393 fix unhandledException not working in combination with skipDefaultInterface * generate samples
1 parent df39875 commit 182fe93

61 files changed

Lines changed: 8904 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
generatorName: spring
2+
outputDir: samples/server/petstore/spring-boot-defaultInterface-unhandledException
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
5+
additionalProperties:
6+
artifactId: spring-boot-defaultInterface-unhandledException
7+
hideGenerationTimestamp: true
8+
java8: true
9+
interfaceOnly: true
10+
skipDefaultInterface: true
11+
unhandledException: true
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# OpenAPI Generator Ignore
2+
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
3+
4+
# Use this file to prevent files from being overwritten by the generator.
5+
# The patterns follow closely to .gitignore or .dockerignore.
6+
7+
# As an example, the C# client generator defines ApiClient.cs.
8+
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
9+
#ApiClient.cs
10+
11+
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
12+
#foo/*/qux
13+
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
14+
15+
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
16+
#foo/**/qux
17+
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
18+
19+
# You can also negate patterns with an exclamation (!).
20+
# For example, you can ignore all files in a docs folder with the file extension .md:
21+
#docs/*.md
22+
# Then explicitly reverse the ignore rule for a single file:
23+
#!docs/README.md
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
README.md
2+
pom.xml
3+
src/main/java/org/openapitools/api/AnotherFakeApi.java
4+
src/main/java/org/openapitools/api/ApiUtil.java
5+
src/main/java/org/openapitools/api/FakeApi.java
6+
src/main/java/org/openapitools/api/FakeClassnameTestApi.java
7+
src/main/java/org/openapitools/api/PetApi.java
8+
src/main/java/org/openapitools/api/StoreApi.java
9+
src/main/java/org/openapitools/api/UserApi.java
10+
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java
11+
src/main/java/org/openapitools/model/AdditionalPropertiesArray.java
12+
src/main/java/org/openapitools/model/AdditionalPropertiesBoolean.java
13+
src/main/java/org/openapitools/model/AdditionalPropertiesClass.java
14+
src/main/java/org/openapitools/model/AdditionalPropertiesInteger.java
15+
src/main/java/org/openapitools/model/AdditionalPropertiesNumber.java
16+
src/main/java/org/openapitools/model/AdditionalPropertiesObject.java
17+
src/main/java/org/openapitools/model/AdditionalPropertiesString.java
18+
src/main/java/org/openapitools/model/Animal.java
19+
src/main/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java
20+
src/main/java/org/openapitools/model/ArrayOfNumberOnly.java
21+
src/main/java/org/openapitools/model/ArrayTest.java
22+
src/main/java/org/openapitools/model/BigCat.java
23+
src/main/java/org/openapitools/model/BigCatAllOf.java
24+
src/main/java/org/openapitools/model/Capitalization.java
25+
src/main/java/org/openapitools/model/Cat.java
26+
src/main/java/org/openapitools/model/CatAllOf.java
27+
src/main/java/org/openapitools/model/Category.java
28+
src/main/java/org/openapitools/model/ClassModel.java
29+
src/main/java/org/openapitools/model/Client.java
30+
src/main/java/org/openapitools/model/Dog.java
31+
src/main/java/org/openapitools/model/DogAllOf.java
32+
src/main/java/org/openapitools/model/EnumArrays.java
33+
src/main/java/org/openapitools/model/EnumClass.java
34+
src/main/java/org/openapitools/model/EnumTest.java
35+
src/main/java/org/openapitools/model/File.java
36+
src/main/java/org/openapitools/model/FileSchemaTestClass.java
37+
src/main/java/org/openapitools/model/FormatTest.java
38+
src/main/java/org/openapitools/model/HasOnlyReadOnly.java
39+
src/main/java/org/openapitools/model/MapTest.java
40+
src/main/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java
41+
src/main/java/org/openapitools/model/Model200Response.java
42+
src/main/java/org/openapitools/model/ModelApiResponse.java
43+
src/main/java/org/openapitools/model/ModelList.java
44+
src/main/java/org/openapitools/model/ModelReturn.java
45+
src/main/java/org/openapitools/model/Name.java
46+
src/main/java/org/openapitools/model/NumberOnly.java
47+
src/main/java/org/openapitools/model/Order.java
48+
src/main/java/org/openapitools/model/OuterComposite.java
49+
src/main/java/org/openapitools/model/OuterEnum.java
50+
src/main/java/org/openapitools/model/Pet.java
51+
src/main/java/org/openapitools/model/ReadOnlyFirst.java
52+
src/main/java/org/openapitools/model/SpecialModelName.java
53+
src/main/java/org/openapitools/model/Tag.java
54+
src/main/java/org/openapitools/model/TypeHolderDefault.java
55+
src/main/java/org/openapitools/model/TypeHolderExample.java
56+
src/main/java/org/openapitools/model/User.java
57+
src/main/java/org/openapitools/model/XmlItem.java
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6.0.0-SNAPSHOT
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
# OpenAPI generated API stub
3+
4+
Spring Framework stub
5+
6+
7+
## Overview
8+
This code was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
9+
By using the [OpenAPI-Spec](https://openapis.org), you can easily generate an API stub.
10+
This is an example of building API stub interfaces in Java using the Spring framework.
11+
12+
The stubs generated can be used in your existing Spring-MVC or Spring-Boot application to create controller endpoints
13+
by adding ```@Controller``` classes that implement the interface. Eg:
14+
```java
15+
@Controller
16+
public class PetController implements PetApi {
17+
// implement all PetApi methods
18+
}
19+
```
20+
21+
You can also use the interface to create [Spring-Cloud Feign clients](http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign-inheritance).Eg:
22+
```java
23+
@FeignClient(name="pet", url="http://petstore.swagger.io/v2")
24+
public interface PetClient extends PetApi {
25+
26+
}
27+
```
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<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">
2+
<modelVersion>4.0.0</modelVersion>
3+
<groupId>org.openapitools</groupId>
4+
<artifactId>spring-boot-defaultInterface-unhandledException</artifactId>
5+
<packaging>jar</packaging>
6+
<name>spring-boot-defaultInterface-unhandledException</name>
7+
<version>1.0.0</version>
8+
<properties>
9+
<java.version>1.8</java.version>
10+
<maven.compiler.source>${java.version}</maven.compiler.source>
11+
<maven.compiler.target>${java.version}</maven.compiler.target>
12+
<springdoc.version>1.6.4</springdoc.version>
13+
<swagger-ui.version>4.4.1-1</swagger-ui.version>
14+
</properties>
15+
<parent>
16+
<groupId>org.springframework.boot</groupId>
17+
<artifactId>spring-boot-starter-parent</artifactId>
18+
<version>2.6.3</version>
19+
</parent>
20+
<build>
21+
<sourceDirectory>src/main/java</sourceDirectory>
22+
</build>
23+
<dependencies>
24+
<dependency>
25+
<groupId>org.springframework.boot</groupId>
26+
<artifactId>spring-boot-starter-web</artifactId>
27+
</dependency>
28+
<dependency>
29+
<groupId>org.springframework.data</groupId>
30+
<artifactId>spring-data-commons</artifactId>
31+
</dependency>
32+
<!--SpringDoc dependencies -->
33+
<dependency>
34+
<groupId>org.springdoc</groupId>
35+
<artifactId>springdoc-openapi-ui</artifactId>
36+
<version>${springdoc.version}</version>
37+
</dependency>
38+
<!-- @Nullable annotation -->
39+
<dependency>
40+
<groupId>com.google.code.findbugs</groupId>
41+
<artifactId>jsr305</artifactId>
42+
<version>3.0.2</version>
43+
</dependency>
44+
<dependency>
45+
<groupId>com.fasterxml.jackson.dataformat</groupId>
46+
<artifactId>jackson-dataformat-yaml</artifactId>
47+
</dependency>
48+
<dependency>
49+
<groupId>com.fasterxml.jackson.datatype</groupId>
50+
<artifactId>jackson-datatype-jsr310</artifactId>
51+
</dependency>
52+
<dependency>
53+
<groupId>org.openapitools</groupId>
54+
<artifactId>jackson-databind-nullable</artifactId>
55+
<version>0.2.2</version>
56+
</dependency>
57+
<!-- Bean Validation API support -->
58+
<dependency>
59+
<groupId>org.springframework.boot</groupId>
60+
<artifactId>spring-boot-starter-validation</artifactId>
61+
</dependency>
62+
<dependency>
63+
<groupId>com.fasterxml.jackson.core</groupId>
64+
<artifactId>jackson-databind</artifactId>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.springframework.boot</groupId>
68+
<artifactId>spring-boot-starter-test</artifactId>
69+
<scope>test</scope>
70+
</dependency>
71+
</dependencies>
72+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (6.0.0-SNAPSHOT).
3+
* https://openapi-generator.tech
4+
* Do not edit the class manually.
5+
*/
6+
package org.openapitools.api;
7+
8+
import org.openapitools.model.Client;
9+
import io.swagger.v3.oas.annotations.Operation;
10+
import io.swagger.v3.oas.annotations.Parameter;
11+
import io.swagger.v3.oas.annotations.Parameters;
12+
import io.swagger.v3.oas.annotations.media.Content;
13+
import io.swagger.v3.oas.annotations.media.Schema;
14+
import io.swagger.v3.oas.annotations.responses.ApiResponse;
15+
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
16+
import io.swagger.v3.oas.annotations.tags.Tag;
17+
import org.springframework.http.HttpStatus;
18+
import org.springframework.http.MediaType;
19+
import org.springframework.http.ResponseEntity;
20+
import org.springframework.validation.annotation.Validated;
21+
import org.springframework.web.bind.annotation.*;
22+
import org.springframework.web.context.request.NativeWebRequest;
23+
import org.springframework.web.multipart.MultipartFile;
24+
25+
import javax.validation.Valid;
26+
import javax.validation.constraints.*;
27+
import java.util.List;
28+
import java.util.Map;
29+
import java.util.Optional;
30+
import javax.annotation.Generated;
31+
32+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen")
33+
@Validated
34+
@Tag(name = "another-fake", description = "the another-fake API")
35+
public interface AnotherFakeApi {
36+
37+
/**
38+
* PATCH /another-fake/dummy : To test special tags
39+
* To test special tags and operation ID starting with number
40+
*
41+
* @param body client model (required)
42+
* @return successful operation (status code 200)
43+
*/
44+
@Operation(
45+
operationId = "call123testSpecialTags",
46+
summary = "To test special tags",
47+
tags = { "$another-fake?" },
48+
responses = {
49+
@ApiResponse(responseCode = "200", description = "successful operation", content = {
50+
@Content(mediaType = "application/json", schema = @Schema(implementation = Client.class))
51+
})
52+
}
53+
)
54+
@RequestMapping(
55+
method = RequestMethod.PATCH,
56+
value = "/another-fake/dummy",
57+
produces = { "application/json" },
58+
consumes = { "application/json" }
59+
)
60+
ResponseEntity<Client> call123testSpecialTags(
61+
@Parameter(name = "body", description = "client model", required = true) @Valid @RequestBody Client body
62+
) throws Exception;
63+
64+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.openapitools.api;
2+
3+
import org.springframework.web.context.request.NativeWebRequest;
4+
5+
import javax.servlet.http.HttpServletResponse;
6+
import java.io.IOException;
7+
8+
public class ApiUtil {
9+
public static void setExampleResponse(NativeWebRequest req, String contentType, String example) {
10+
try {
11+
HttpServletResponse res = req.getNativeResponse(HttpServletResponse.class);
12+
res.setCharacterEncoding("UTF-8");
13+
res.addHeader("Content-Type", contentType);
14+
res.getWriter().print(example);
15+
} catch (IOException e) {
16+
throw new RuntimeException(e);
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)