use of io.swagger.v3.oas.annotations.responses.ApiResponse in project carbon-apimgt by wso2.
the class RestApiCommonUtil method generateOpenAPIForAsync.
/**
* Generate a basic OpenAPI definition with given details.
*
* @param name name of the API.
* @param version version of the API.
* @param context context of the API.
* @param callbackEndpoint callback URL of the async API.
* @return OpenAPI definition as String.
* @throws JsonProcessingException Error occurred while generating the OpenAPI.
*/
public static String generateOpenAPIForAsync(String name, String version, String context, String callbackEndpoint) throws JsonProcessingException {
OpenAPI openAPI = new OpenAPI();
Info info = new Info();
info.setTitle(name);
info.setDescription("API Definition of " + name);
info.setVersion(version);
openAPI.setInfo(info);
ArrayList<Server> servers = new ArrayList<>();
Server server = new Server();
server.setUrl("/");
servers.add(server);
openAPI.setServers(Arrays.asList(server));
Paths paths = new Paths();
PathItem pathItem = new PathItem();
Operation operation = new Operation();
ApiResponses apiResponses = new ApiResponses();
ApiResponse apiResponse = new ApiResponse();
apiResponse.setDescription("Default response");
apiResponses.addApiResponse("default", apiResponse);
operation.setResponses(apiResponses);
pathItem.setPost(operation);
paths.addPathItem("/*", pathItem);
openAPI.paths(paths);
List<String> urls = new ArrayList<>();
urls.add(callbackEndpoint);
Map<String, Object> tempMap = new HashMap();
tempMap.put("type", "http");
tempMap.put("urls", urls);
openAPI.addExtension(X_WSO2_PRODUCTION_ENDPOINTS, tempMap);
openAPI.addExtension(X_WSO2_SANDBOX_ENDPOINTS, tempMap);
openAPI.addExtension(X_WSO2_AUTH_HEADER, "Authorization");
openAPI.addExtension(X_WSO2_BASEPATH, context + "/" + version);
openAPI.addExtension(X_WSO2_DISABLE_SECURITY, true);
return Json.mapper().writeValueAsString(openAPI);
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project atlasmap by atlasmap.
the class JavaService method inspectClass.
/**
* Inspects a Java Class with specified fully qualified class name and return a Document object.
* @param requestIn request
* @return {@link ClassInspectionResponse}
*/
@POST
@Path("/class")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Inspect Class", description = "Inspect a Java Class with specified fully qualified class name and return a Document object")
@RequestBody(description = "ClassInspectionRequest object", content = @Content(schema = @Schema(implementation = ClassInspectionRequest.class)))
@ApiResponses(@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = ClassInspectionResponse.class)), description = "Return a Document object represented by JavaClass"))
public Response inspectClass(InputStream requestIn) {
ClassInspectionRequest request = fromJson(requestIn, ClassInspectionRequest.class);
ClassInspectionResponse response = new ClassInspectionResponse();
ClassInspectionService classInspectionService = new ClassInspectionService();
classInspectionService.setConversionService(DefaultAtlasConversionService.getInstance());
configureInspectionService(classInspectionService, request);
if (LOG.isDebugEnabled()) {
LOG.debug("Class inspection request: {}", new String(toJson(request)));
}
long startTime = System.currentTimeMillis();
try {
JavaClass c = null;
if (request.getClasspath() == null || request.getClasspath().isEmpty()) {
AtlasService atlasService = resourceContext.getResource(AtlasService.class);
c = classInspectionService.inspectClass(atlasService.getLibraryLoader(), request.getClassName(), request.getCollectionType(), request.getCollectionClassName());
} else {
c = classInspectionService.inspectClass(request.getClassName(), request.getCollectionType(), request.getClasspath());
}
response.setJavaClass(c);
} catch (Throwable e) {
String msg = String.format("Error inspecting class %s - %s: %s", request.getClassName(), e.getClass().getName(), e.getMessage());
LOG.error(msg, e);
response.setErrorMessage(msg);
} finally {
response.setExecutionTime(System.currentTimeMillis() - startTime);
}
if (LOG.isDebugEnabled()) {
LOG.debug("Class inspection response: {}", new String(toJson(response)));
}
return Response.ok().entity(toJson(response)).build();
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project atlasmap by atlasmap.
the class AtlasService method validateMappingRequest.
/**
* Validates the mapping file.
* @param mapping mapping
* @param mappingDefinitionId mapping definition ID
* @param uriInfo URI info
* @return {@link Validations} validation result
*/
@PUT
@Path("/mapping/validate/{mappingDefinitionId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Validate Mapping", description = "Validate mapping file")
@RequestBody(description = "Mapping file content", content = @Content(schema = @Schema(implementation = AtlasMapping.class)))
@ApiResponses(@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = Validations.class)), description = "Return a validation result"))
public Response validateMappingRequest(InputStream mapping, @Parameter(description = "Mapping ID") @PathParam("mappingDefinitionId") Integer mappingDefinitionId, @Context UriInfo uriInfo) {
try {
AtlasMapping atlasMapping = fromJson(mapping, AtlasMapping.class);
LOG.debug("Validate mappings: {}", atlasMapping.getName());
return validateMapping(mappingDefinitionId, atlasMapping, uriInfo);
} catch (AtlasException | IOException e) {
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project atlasmap by atlasmap.
the class AtlasService method getMappingRequest.
/**
* Retrieve a mapping file saved on the server.
* @param mappingFormat file type
* @param mappingDefinitionId mapping definition ID
* @return file
*/
@GET
@Path("/mapping/{mappingFormat}/{mappingDefinitionId}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.APPLICATION_OCTET_STREAM })
@Operation(summary = "Get Mapping", description = "Retrieve a mapping file saved on the server")
@ApiResponses({ @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = AtlasMapping.class)), description = "Return a mapping file content"), @ApiResponse(responseCode = "204", description = "Mapping file was not found"), @ApiResponse(responseCode = "500", description = "Mapping file access error") })
public Response getMappingRequest(@Parameter(description = "Mapping Format") @PathParam("mappingFormat") MappingFileType mappingFormat, @Parameter(description = "Mapping ID") @PathParam("mappingDefinitionId") Integer mappingDefinitionId) {
LOG.debug("getMappingRequest: {} '{}'", mappingFormat, mappingDefinitionId);
ADMArchiveHandler admHandler = loadExplodedMappingDirectory(mappingDefinitionId);
switch(mappingFormat) {
case JSON:
byte[] serialized = null;
try {
serialized = admHandler.getMappingDefinitionBytes();
} catch (Exception e) {
LOG.error("Error retrieving mapping definition file for ID:" + mappingDefinitionId, e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
if (LOG.isDebugEnabled() && serialized != null) {
LOG.debug(new String(serialized));
}
if (serialized == null) {
LOG.debug("Mapping definition not found for ID:{}", mappingDefinitionId);
return Response.noContent().build();
}
return Response.ok().entity(serialized).build();
case GZ:
try {
if (admHandler.getGzippedADMDigestBytes() == null) {
LOG.debug("ADM Digest file not found for ID:{}", mappingDefinitionId);
return Response.noContent().build();
}
return Response.ok().entity(admHandler.getGzippedADMDigestBytes()).build();
} catch (Exception e) {
LOG.error("Error getting compressed ADM digest file.\n" + e.getMessage(), e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
case ZIP:
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
admHandler.setIgnoreLibrary(false);
admHandler.setLibraryDirectory(Paths.get(this.libFolder));
admHandler.export(out);
return Response.ok().entity(out.toByteArray()).build();
} catch (Exception e) {
LOG.error("Error getting ADM archive file.\n" + e.getMessage(), e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
default:
throw new WebApplicationException("Unrecognized mapping format: " + mappingFormat, Status.INTERNAL_SERVER_ERROR);
}
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project atlasmap by atlasmap.
the class AtlasService method resetAllMappings.
/**
* Removes all mapping files and catalogs saved on the server.
* @return empty response
*/
@DELETE
@Path("/mapping/RESET/ALL")
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Remove All Mappings", description = "Remove all mapping files and catalogs saved on the server")
@ApiResponses({ @ApiResponse(responseCode = "200", description = "All mapping files were removed successfully"), @ApiResponse(responseCode = "204", description = "Unable to remove all mapping files") })
public Response resetAllMappings() {
LOG.debug("resetAllMappings");
java.nio.file.Path mappingFolderPath = Paths.get(mappingFolder);
File mappingFolderPathFile = mappingFolderPath.toFile();
if (mappingFolderPathFile == null || !mappingFolderPathFile.exists()) {
return Response.ok().build();
}
AtlasUtil.deleteDirectoryContents(mappingFolderPathFile);
return Response.ok().build();
}
Aggregations