Search in sources :

Example 1 with FlowFileEntity

use of org.apache.nifi.web.api.entity.FlowFileEntity in project nifi by apache.

the class FlowFileQueueResource method getFlowFile.

/**
 * Gets the specified flowfile from the specified connection.
 *
 * @param connectionId  The connection id
 * @param flowFileUuid  The flowfile uuid
 * @param clusterNodeId The cluster node id where the flowfile resides
 * @return a flowFileDTO
 * @throws InterruptedException if interrupted
 */
@GET
@Consumes(MediaType.WILDCARD)
@Produces(MediaType.APPLICATION_JSON)
@Path("{id}/flowfiles/{flowfile-uuid}")
@ApiOperation(value = "Gets a FlowFile from a Connection.", response = FlowFileEntity.class, authorizations = { @Authorization(value = "Read Source Data - /data/{component-type}/{uuid}") })
@ApiResponses(value = { @ApiResponse(code = 400, message = "NiFi was unable to complete the request because it was invalid. The request should not be retried without modification."), @ApiResponse(code = 401, message = "Client could not be authenticated."), @ApiResponse(code = 403, message = "Client is not authorized to make this request."), @ApiResponse(code = 404, message = "The specified resource could not be found."), @ApiResponse(code = 409, message = "The request was valid but NiFi was not in the appropriate state to process it. Retrying the same request later may be successful.") })
public Response getFlowFile(@ApiParam(value = "The connection id.", required = true) @PathParam("id") final String connectionId, @ApiParam(value = "The flowfile uuid.", required = true) @PathParam("flowfile-uuid") final String flowFileUuid, @ApiParam(value = "The id of the node where the content exists if clustered.", required = false) @QueryParam("clusterNodeId") final String clusterNodeId) throws InterruptedException {
    // replicate if cluster manager
    if (isReplicateRequest()) {
        // determine where this request should be sent
        if (clusterNodeId == null) {
            throw new IllegalArgumentException("The id of the node in the cluster is required.");
        } else {
            // get the target node and ensure it exists
            final NodeIdentifier targetNode = getClusterCoordinator().getNodeIdentifier(clusterNodeId);
            if (targetNode == null) {
                throw new UnknownNodeException("The specified cluster node does not exist.");
            }
            return replicate(HttpMethod.GET, targetNode);
        }
    }
    // NOTE - deferred authorization so we can consider flowfile attributes in the access decision
    // get the flowfile
    final FlowFileDTO flowfileDto = serviceFacade.getFlowFile(connectionId, flowFileUuid);
    populateRemainingFlowFileContent(connectionId, flowfileDto);
    // create the response entity
    final FlowFileEntity entity = new FlowFileEntity();
    entity.setFlowFile(flowfileDto);
    return generateOkResponse(entity).build();
}
Also used : FlowFileEntity(org.apache.nifi.web.api.entity.FlowFileEntity) UnknownNodeException(org.apache.nifi.cluster.manager.exception.UnknownNodeException) NodeIdentifier(org.apache.nifi.cluster.protocol.NodeIdentifier) FlowFileDTO(org.apache.nifi.web.api.dto.FlowFileDTO) Path(javax.ws.rs.Path) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Aggregations

ApiOperation (io.swagger.annotations.ApiOperation)1 ApiResponses (io.swagger.annotations.ApiResponses)1 Consumes (javax.ws.rs.Consumes)1 GET (javax.ws.rs.GET)1 Path (javax.ws.rs.Path)1 Produces (javax.ws.rs.Produces)1 UnknownNodeException (org.apache.nifi.cluster.manager.exception.UnknownNodeException)1 NodeIdentifier (org.apache.nifi.cluster.protocol.NodeIdentifier)1 FlowFileDTO (org.apache.nifi.web.api.dto.FlowFileDTO)1 FlowFileEntity (org.apache.nifi.web.api.entity.FlowFileEntity)1