mirror of https://github.com/apache/nifi.git
NIFI-3865: - Obtaining the appropriate input stream after accessing content. The stream was being consumed into a buffer and was not longer available.
This closes #1780. Signed-off-by: Bryan Bende <bbende@apache.org>
This commit is contained in:
parent
dc44e30698
commit
cf497c9cf9
|
@ -16,22 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.nifi.cluster.manager;
|
package org.apache.nifi.cluster.manager;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import com.sun.jersey.api.client.ClientResponse;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.ws.rs.HttpMethod;
|
|
||||||
import javax.ws.rs.WebApplicationException;
|
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
import javax.ws.rs.core.Response.ResponseBuilder;
|
|
||||||
import javax.ws.rs.core.Response.Status;
|
|
||||||
import javax.ws.rs.core.StreamingOutput;
|
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.nifi.cluster.protocol.NodeIdentifier;
|
import org.apache.nifi.cluster.protocol.NodeIdentifier;
|
||||||
|
@ -40,7 +25,20 @@ import org.apache.nifi.web.api.entity.Entity;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.sun.jersey.api.client.ClientResponse;
|
import javax.ws.rs.HttpMethod;
|
||||||
|
import javax.ws.rs.WebApplicationException;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
import javax.ws.rs.core.Response.ResponseBuilder;
|
||||||
|
import javax.ws.rs.core.Response.Status;
|
||||||
|
import javax.ws.rs.core.StreamingOutput;
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encapsulates a node's response in regards to receiving a external API request.
|
* Encapsulates a node's response in regards to receiving a external API request.
|
||||||
|
@ -170,7 +168,7 @@ public class NodeResponse {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized InputStream getInputStream() {
|
public synchronized InputStream getInputStream() {
|
||||||
if (bufferedResponse == null) {
|
if (bufferedResponse == null) {
|
||||||
return clientResponse.getEntityInputStream();
|
return clientResponse.getEntityInputStream();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,16 +19,6 @@ package org.apache.nifi.web;
|
||||||
import com.sun.jersey.api.client.ClientResponse;
|
import com.sun.jersey.api.client.ClientResponse;
|
||||||
import com.sun.jersey.api.client.ClientResponse.Status;
|
import com.sun.jersey.api.client.ClientResponse.Status;
|
||||||
import com.sun.jersey.core.util.MultivaluedMapImpl;
|
import com.sun.jersey.core.util.MultivaluedMapImpl;
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import javax.ws.rs.HttpMethod;
|
|
||||||
import javax.ws.rs.core.MultivaluedMap;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.nifi.authorization.AccessDeniedException;
|
import org.apache.nifi.authorization.AccessDeniedException;
|
||||||
import org.apache.nifi.cluster.coordination.ClusterCoordinator;
|
import org.apache.nifi.cluster.coordination.ClusterCoordinator;
|
||||||
|
@ -40,6 +30,17 @@ import org.apache.nifi.cluster.protocol.NodeIdentifier;
|
||||||
import org.apache.nifi.controller.repository.claim.ContentDirection;
|
import org.apache.nifi.controller.repository.claim.ContentDirection;
|
||||||
import org.apache.nifi.util.NiFiProperties;
|
import org.apache.nifi.util.NiFiProperties;
|
||||||
|
|
||||||
|
import javax.ws.rs.HttpMethod;
|
||||||
|
import javax.ws.rs.core.MultivaluedMap;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -120,7 +121,7 @@ public class StandardNiFiContentAccess implements ContentAccess {
|
||||||
final String contentType = responseHeaders.getFirst("Content-Type");
|
final String contentType = responseHeaders.getFirst("Content-Type");
|
||||||
|
|
||||||
// create the downloadable content
|
// create the downloadable content
|
||||||
return new DownloadableContent(filename, contentType, clientResponse.getEntityInputStream());
|
return new DownloadableContent(filename, contentType, nodeResponse.getInputStream());
|
||||||
} else {
|
} else {
|
||||||
// example URIs:
|
// example URIs:
|
||||||
// http://localhost:8080/nifi-api/provenance/events/{id}/content/{input|output}
|
// http://localhost:8080/nifi-api/provenance/events/{id}/content/{input|output}
|
||||||
|
|
Loading…
Reference in New Issue