@Override protected OpenApiScanner buildScanner(OpenAPIConfiguration openApiConfiguration) throws Exception { OpenApiScanner scanner; if (StringUtils.isNotBlank(openApiConfiguration.getScannerClass())) { Class cls = getClass().getClassLoader().loadClass(openApiConfiguration.getScannerClass()); scanner = (OpenApiScanner) cls.newInstance(); } else { scanner = new JaxrsApplicationAndAnnotationScanner(); } scanner.setConfiguration(openApiConfiguration); if (scanner instanceof JaxrsOpenApiScanner) { ((JaxrsOpenApiScanner) scanner).setApplication(app); } return scanner; } }
@Override protected OpenApiScanner buildScanner(OpenAPIConfiguration openApiConfiguration) throws Exception { OpenApiScanner scanner; if (StringUtils.isNotBlank(openApiConfiguration.getScannerClass())) { Class cls = getClass().getClassLoader().loadClass(openApiConfiguration.getScannerClass()); scanner = (OpenApiScanner) cls.newInstance(); } else { scanner = new JaxrsApplicationAndAnnotationScanner(); } scanner.setConfiguration(openApiConfiguration); if (scanner instanceof JaxrsOpenApiScanner) { ((JaxrsOpenApiScanner) scanner).setApplication(app); } return scanner; } }
@SuppressWarnings("rawtypes") protected void generateSpec() throws Exception { Set<Class<?>> classes = this.registeredControllers; OpenAPIExtensions.setExtensions(Collections.singletonList(new ServerParameterExtension())); OpenAPI openApi = new OpenAPI(); Info info = mapper.convertValue(openAPIConfig.getValue("info").unwrapped(), Info.class); openApi.setInfo(info); Map<String, SecurityScheme> securitySchemes = mapper.convertValue( openAPIConfig.getValue("securitySchemes").unwrapped(),new TypeReference<Map<String, SecurityScheme>>(){}); if (openApi.getComponents() == null) { openApi.setComponents(new Components()); } openApi.getComponents().setSecuritySchemes(securitySchemes); List<Server> servers = mapper.convertValue(openAPIConfig.getValue("servers").unwrapped(), new TypeReference<List<Server>>(){}); openApi.setServers(servers); SwaggerConfiguration config = new SwaggerConfiguration().resourceClasses(classes.stream().map(Class::getName).collect(Collectors.toSet())).openAPI(openApi); config.setModelConverterClassess(Collections.singleton(ServerModelResolver.class.getName())); OpenApiContext ctx = new GenericOpenApiContext().openApiConfiguration(config) .openApiReader(new Reader(config)) .openApiScanner(new JaxrsApplicationAndAnnotationScanner().openApiConfiguration(config)) .init(); openApi = ctx.read(); this.openApi = openApi; this.spec = writer.writeValueAsString(openApi); }