@@ -71,7 +71,11 @@ public class OpenAPIBuilder {
71
71
72
72
private static final Logger LOGGER = LoggerFactory .getLogger (OpenAPIBuilder .class );
73
73
74
- private final OpenAPI openAPI ;
74
+ private OpenAPI openAPI ;
75
+
76
+ private OpenAPI cachedOpenAPI ;
77
+
78
+ private OpenAPI calculatedOpenAPI ;
75
79
76
80
private final ApplicationContext context ;
77
81
@@ -96,11 +100,6 @@ public class OpenAPIBuilder {
96
100
if (!CollectionUtils .isEmpty (this .openAPI .getServers ()))
97
101
this .isServersPresent = true ;
98
102
}
99
- else {
100
- this .openAPI = new OpenAPI ();
101
- this .openAPI .setComponents (new Components ());
102
- this .openAPI .setPaths (new Paths ());
103
- }
104
103
this .context = context ;
105
104
this .securityParser = securityParser ;
106
105
this .springSecurityOAuth2Provider = springSecurityOAuth2Provider ;
@@ -117,37 +116,42 @@ private static String splitCamelCase(String str) {
117
116
.toLowerCase (Locale .ROOT );
118
117
}
119
118
120
- public OpenAPI getOpenAPI () {
121
- return openAPI ;
122
- }
123
-
124
119
public Components getComponents () {
125
- return openAPI .getComponents ();
120
+ return calculatedOpenAPI .getComponents ();
126
121
}
127
122
128
123
public Paths getPaths () {
129
- return openAPI .getPaths ();
124
+ return calculatedOpenAPI .getPaths ();
130
125
}
131
126
132
127
public void build () {
133
128
Optional <OpenAPIDefinition > apiDef = getOpenAPIDefinition ();
129
+
130
+ if (openAPI ==null ){
131
+ this .calculatedOpenAPI = new OpenAPI ();
132
+ this .calculatedOpenAPI .setComponents (new Components ());
133
+ this .calculatedOpenAPI .setPaths (new Paths ());
134
+ }
135
+ else
136
+ this .calculatedOpenAPI =openAPI ;
137
+
134
138
if (apiDef .isPresent ()) {
135
- buildOpenAPIWithOpenAPIDefinition (openAPI , apiDef .get ());
139
+ buildOpenAPIWithOpenAPIDefinition (calculatedOpenAPI , apiDef .get ());
136
140
}
137
141
// Set default info
138
- else if (openAPI .getInfo () == null ) {
142
+ else if (calculatedOpenAPI .getInfo () == null ) {
139
143
Info infos = new Info ().title (DEFAULT_TITLE ).version (DEFAULT_VERSION );
140
- openAPI .setInfo (infos );
144
+ calculatedOpenAPI .setInfo (infos );
141
145
}
142
146
// default server value
143
- if (CollectionUtils .isEmpty (openAPI .getServers ()) || !isServersPresent ) {
147
+ if (CollectionUtils .isEmpty (calculatedOpenAPI .getServers ()) || !isServersPresent ) {
144
148
Server server = new Server ().url (serverBaseUrl ).description (DEFAULT_SERVER_DESCRIPTION );
145
149
List <Server > servers = new ArrayList ();
146
150
servers .add (server );
147
- openAPI .setServers (servers );
151
+ calculatedOpenAPI .setServers (servers );
148
152
}
149
153
// add security schemes
150
- this .calculateSecuritySchemes (openAPI .getComponents ());
154
+ this .calculateSecuritySchemes (calculatedOpenAPI .getComponents ());
151
155
}
152
156
153
157
public Operation buildTags (HandlerMethod handlerMethod , Operation operation , OpenAPI openAPI ) {
@@ -403,4 +407,20 @@ public Map<String, Object> getControllerAdviceMap() {
403
407
public Optional <SecurityOAuth2Provider > getSpringSecurityOAuth2Provider () {
404
408
return springSecurityOAuth2Provider ;
405
409
}
410
+
411
+ public OpenAPI getCachedOpenAPI () {
412
+ return cachedOpenAPI ;
413
+ }
414
+
415
+ public void setCachedOpenAPI (OpenAPI cachedOpenAPI ) {
416
+ this .cachedOpenAPI = cachedOpenAPI ;
417
+ }
418
+
419
+ public OpenAPI getCalculatedOpenAPI () {
420
+ return calculatedOpenAPI ;
421
+ }
422
+
423
+ public void resetCalculatedOpenAPI () {
424
+ this .calculatedOpenAPI =null ;
425
+ }
406
426
}
0 commit comments