use of io.swagger.v3.oas.annotations.responses.ApiResponses in project atlasmap by atlasmap.
the class AtlasService method listMappingBuilderClasses.
/**
* List mapping builder classes which defines custom mapping logic.
* @param uriInfo URI info
* @return class names
*/
@GET
@Path("/mappingBuilders")
@Operation(summary = "List mapping builder classes", description = "List mapping builder classes which defines custom mapping logic")
@Produces(MediaType.APPLICATION_JSON)
@ApiResponses(@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(type = "ArrayList<String>")), description = "Return a list of loadable class names"))
public Response listMappingBuilderClasses(@Context UriInfo uriInfo) {
ArrayList<String> classNames;
try {
classNames = libraryLoader.getSubTypesOf(AtlasMappingBuilder.class, false);
} catch (Exception e) {
if (LOG.isDebugEnabled()) {
LOG.error("Library class retrieval error.", e);
}
throw new WebApplicationException("Error retrieving class names from uploaded JARs.");
}
byte[] serialized = toJson(classNames);
if (LOG.isDebugEnabled()) {
LOG.debug(new String(serialized));
}
return Response.ok().entity(serialized).build();
}
use of io.swagger.v3.oas.annotations.responses.ApiResponses in project atlasmap by atlasmap.
the class AtlasService method updateMappingRequest.
/**
* Updates existing mapping file on the server.
* @param mapping mapping
* @param mappingDefinitionId mapping definition ID
* @param uriInfo URI info
* @return empty response
*/
@POST
@Path("/mapping/{mappingDefinitionId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Update Mapping", description = "Update existing mapping file on the server")
@RequestBody(description = "Mapping file content", content = @Content(schema = @Schema(implementation = AtlasMapping.class)))
@ApiResponses(@ApiResponse(responseCode = "200", description = "Succeeded"))
public Response updateMappingRequest(InputStream mapping, @Parameter(description = "Mapping Definition ID") @PathParam("mappingDefinitionId") Integer mappingDefinitionId, @Context UriInfo uriInfo) {
ADMArchiveHandler handler = loadExplodedMappingDirectory(mappingDefinitionId);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
try {
handler.setMappingDefinitionBytes(mapping);
handler.persist();
builder.path(handler.getMappingDefinition().getName());
} catch (AtlasException e) {
LOG.error("Error saving Mapping Definition file.\n" + e.getMessage(), e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
return Response.ok().location(builder.build()).build();
}
use of io.swagger.v3.oas.annotations.responses.ApiResponses in project atlasmap by atlasmap.
the class AtlasService method createMappingRequest.
/**
* Saves a file on the server.
* @param mapping request payload
* @param mappingFormat file type
* @param mappingDefinitionId mapping definition ID
* @param uriInfo URI info
* @return empty response
*/
@PUT
@Path("/mapping/{mappingFormat}/{mappingDefinitionId}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.APPLICATION_OCTET_STREAM })
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Create Mapping", description = "Save a mapping file on the server")
@RequestBody(description = "Mapping file content", content = @Content(schema = @Schema(implementation = AtlasMapping.class)))
@ApiResponses({ @ApiResponse(responseCode = "200", description = "Succeeded"), @ApiResponse(responseCode = "500", description = "Mapping file save error") })
public Response createMappingRequest(InputStream mapping, @Parameter(description = "Mapping Format") @PathParam("mappingFormat") MappingFileType mappingFormat, @Parameter(description = "Mapping ID") @PathParam("mappingDefinitionId") Integer mappingDefinitionId, @Context UriInfo uriInfo) {
LOG.debug("createMappingRequest (save) with format '{}'", mappingFormat);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
ADMArchiveHandler admHandler = loadExplodedMappingDirectory(mappingDefinitionId);
switch(mappingFormat) {
case JSON:
try {
admHandler.setMappingDefinitionBytes(mapping);
admHandler.persist();
if (admHandler.getMappingDefinition() != null) {
builder.path(admHandler.getMappingDefinition().getName());
}
} catch (AtlasException e) {
LOG.error("Error saving Mapping Definition file.\n" + e.getMessage(), e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
return Response.ok().location(builder.build()).build();
case GZ:
LOG.debug(" saveGzippedADMDigestRequest '{}' - ID: {}", admHandler.getGzippedADMDigestFileName(), mappingDefinitionId);
try {
admHandler.setGzippedADMDigest(mapping);
admHandler.persist();
} catch (AtlasException e) {
LOG.error("Error saving gzipped ADM digest file.\n" + e.getMessage(), e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
builder.path(admHandler.getGzippedADMDigestFileName());
return Response.ok().location(builder.build()).build();
case ZIP:
LOG.debug(" importADMArchiveRequest - ID:'{}'", mappingDefinitionId);
try {
admHandler.setIgnoreLibrary(false);
admHandler.setLibraryDirectory(Paths.get(libFolder));
admHandler.load(mapping);
this.libraryLoader.reload();
admHandler.persist();
LOG.debug(" importADMArchiveRequest complete - ID:'{}'", mappingDefinitionId);
} catch (Exception e) {
LOG.error("Error importing ADM archive.\n" + e.getMessage(), e);
throw new WebApplicationException(e.getMessage(), e, Status.INTERNAL_SERVER_ERROR);
}
builder.path("atlasmap-" + mappingDefinitionId + ".adm");
return Response.ok().location(builder.build()).build();
case XML:
throw new WebApplicationException("XML mapping format is no longer supported. Please use JSON format instead.");
default:
throw new WebApplicationException("Unrecognized mapping format: " + mappingFormat, Status.INTERNAL_SERVER_ERROR);
}
}
use of io.swagger.v3.oas.annotations.responses.ApiResponses in project atlasmap by atlasmap.
the class AtlasService method listMappings.
/**
* Retrieves a list of mapping file name saved with specified mapping definition ID.
* @param uriInfo URI info
* @param filter filter
* @param mappingDefinitionId mapping definition ID
* @return A list of mapping file name in {@link StringMap}
*/
@GET
@Path("/mappings/{mappingDefinitionId}")
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "List Mappings", description = "Retrieves a list of mapping file name saved with specified mappingDefinitionId")
@ApiResponses(@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = StringMap.class)), description = "Return a list of a pair of mapping file name and content"))
public Response listMappings(@Context UriInfo uriInfo, @QueryParam("filter") final String filter, @Parameter(description = "Mapping Definition ID") @PathParam("mappingDefinitionId") Integer mappingDefinitionId) {
StringMap sMap = new StringMap();
LOG.debug("listMappings with filter '{}'", filter);
ADMArchiveHandler handler = loadExplodedMappingDirectory(mappingDefinitionId);
AtlasMapping map = handler.getMappingDefinition();
if (map == null) {
return Response.ok().entity(toJson(sMap)).build();
}
StringMapEntry mapEntry = new StringMapEntry();
mapEntry.setName(map.getName());
UriBuilder builder = uriInfo.getBaseUriBuilder().path("v2").path("atlas").path("mapping").path(map.getName());
mapEntry.setValue(builder.build().toString());
sMap.getStringMapEntry().add(mapEntry);
byte[] serialized = toJson(sMap);
if (LOG.isDebugEnabled()) {
LOG.debug(new String(serialized));
}
return Response.ok().entity(serialized).build();
}
use of io.swagger.v3.oas.annotations.responses.ApiResponses 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();
}
Aggregations