|
33 | 33 | import javax.net.ssl.SSLHandshakeException;
|
34 | 34 | import org.apache.commons.io.FileUtils;
|
35 | 35 | import org.apache.commons.io.IOUtils;
|
| 36 | +import org.apache.commons.lang3.StringUtils; |
36 | 37 | import org.slf4j.Logger;
|
37 | 38 | import org.slf4j.LoggerFactory;
|
38 | 39 |
|
39 | 40 | public class OpenAPIV3Parser implements SwaggerParserExtension {
|
| 41 | + |
| 42 | + public static final String DISABLE_OAS31_RESOLVE = "disableOas31Resolve"; |
40 | 43 | private static final Logger LOGGER = LoggerFactory.getLogger(OpenAPIV3Parser.class);
|
41 | 44 | private static ObjectMapper JSON_MAPPER, YAML_MAPPER;
|
42 | 45 | /**
|
@@ -206,28 +209,38 @@ private SwaggerParseResult resolve(SwaggerParseResult result, List<Authorization
|
206 | 209 | if (options != null) {
|
207 | 210 | if (options.isResolve() || options.isResolveFully()) {
|
208 | 211 | if (result.getOpenAPI().getOpenapi() != null && result.getOpenAPI().getOpenapi().startsWith("3.1")) {
|
209 |
| - DereferencerContext dereferencerContext = new DereferencerContext( |
210 |
| - result, |
211 |
| - auth, |
212 |
| - location, |
213 |
| - options, |
214 |
| - null, |
215 |
| - null, |
216 |
| - true |
217 |
| - ); |
218 |
| - List<OpenAPIDereferencer> dereferencers = DereferencersFactory.getInstance().getDereferencers(); |
219 |
| - if (dereferencers.iterator().hasNext()) { |
220 |
| - OpenAPIDereferencer dereferencer = dereferencers.iterator().next(); |
221 |
| - dereferencer.dereference(dereferencerContext, dereferencers.iterator()); |
| 212 | + if (StringUtils.isBlank(System.getenv(DISABLE_OAS31_RESOLVE))) { |
| 213 | + DereferencerContext dereferencerContext = new DereferencerContext( |
| 214 | + result, |
| 215 | + auth, |
| 216 | + location, |
| 217 | + options, |
| 218 | + null, |
| 219 | + null, |
| 220 | + true |
| 221 | + ); |
| 222 | + List<OpenAPIDereferencer> dereferencers = DereferencersFactory.getInstance().getDereferencers(); |
| 223 | + if (dereferencers.iterator().hasNext()) { |
| 224 | + OpenAPIDereferencer dereferencer = dereferencers.iterator().next(); |
| 225 | + dereferencer.dereference(dereferencerContext, dereferencers.iterator()); |
| 226 | + } |
| 227 | + if (options.isResolveFully()) { |
| 228 | + new ResolverFully(options.isResolveCombinators()).resolveFully(result.getOpenAPI()); |
| 229 | + } |
| 230 | + } else { |
| 231 | + String msg = "Resolution of OAS 3.1 spec disabled by 'disableOas31Resolve' env variable"; |
| 232 | + LOGGER.warn(msg); |
| 233 | + result.getMessages().add(msg); |
222 | 234 | }
|
223 | 235 | } else {
|
224 | 236 | OpenAPIResolver resolver = new OpenAPIResolver(result.getOpenAPI(), emptyListIfNull(auth),
|
225 | 237 | location, null, options);
|
226 | 238 | resolver.resolve(result);
|
| 239 | + if (options.isResolveFully()) { |
| 240 | + new ResolverFully(options.isResolveCombinators()).resolveFully(result.getOpenAPI()); |
| 241 | + } |
227 | 242 | }
|
228 |
| - if (options.isResolveFully()) { |
229 |
| - new ResolverFully(options.isResolveCombinators()).resolveFully(result.getOpenAPI()); |
230 |
| - } |
| 243 | + |
231 | 244 | }
|
232 | 245 | if (options.isFlatten()) {
|
233 | 246 | final InlineModelResolver inlineModelResolver =
|
|
0 commit comments