You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2015/02/22 03:49:59 UTC
incubator-nifi git commit: NIFI-353: - Allowing the content to be
obtained by either stream or as a string (with the char encoding detected
using tika). - Set the json viewer size during window resize events.
Repository: incubator-nifi
Updated Branches:
refs/heads/NIFI-353 43f6e3c05 -> 1955926a8
NIFI-353:
- Allowing the content to be obtained by either stream or as a string (with the char encoding detected using tika).
- Set the json viewer size during window resize events.
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/1955926a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/1955926a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/1955926a
Branch: refs/heads/NIFI-353
Commit: 1955926a857daede8091a761e984d22273ada235
Parents: 43f6e3c
Author: Matt Gilman <ma...@gmail.com>
Authored: Sat Feb 21 21:49:48 2015 -0500
Committer: Matt Gilman <ma...@gmail.com>
Committed: Sat Feb 21 21:49:48 2015 -0500
----------------------------------------------------------------------
.../org/apache/nifi/web/ViewableContent.java | 11 ++-
.../nifi/web/ContentViewerController.java | 75 ++++++++++++++------
.../web/StandardContentViewerController.java | 4 +-
.../src/main/webapp/WEB-INF/jsp/codemirror.jsp | 23 +++---
4 files changed, 78 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/1955926a/nifi/nifi-api/src/main/java/org/apache/nifi/web/ViewableContent.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-api/src/main/java/org/apache/nifi/web/ViewableContent.java b/nifi/nifi-api/src/main/java/org/apache/nifi/web/ViewableContent.java
index 46a4ab7..25eee9a 100644
--- a/nifi/nifi-api/src/main/java/org/apache/nifi/web/ViewableContent.java
+++ b/nifi/nifi-api/src/main/java/org/apache/nifi/web/ViewableContent.java
@@ -16,6 +16,7 @@
*/
package org.apache.nifi.web;
+import java.io.IOException;
import java.io.InputStream;
/**
@@ -30,7 +31,15 @@ public interface ViewableContent {
*
* @return
*/
- InputStream getContent();
+ InputStream getContentStream();
+
+ /**
+ * Gets the content as a string.
+ *
+ * @return
+ * @throws java.io.IOException
+ */
+ String getContent() throws IOException;
/**
* The contents file name.
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/1955926a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
index 8cc11a3..b538631 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/java/org/apache/nifi/web/ContentViewerController.java
@@ -20,6 +20,7 @@ import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
+import java.nio.charset.Charset;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
@@ -28,10 +29,13 @@ import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.io.IOUtils;
import org.apache.tika.detect.DefaultDetector;
import org.apache.tika.io.TikaInputStream;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
+import org.apache.tika.parser.txt.CharsetDetector;
+import org.apache.tika.parser.txt.CharsetMatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,27 +59,7 @@ public class ContentViewerController extends HttpServlet {
// get the content
final ServletContext servletContext = request.getServletContext();
final ContentAccess contentAccess = (ContentAccess) servletContext.getAttribute("nifi-content-access");
- final DownloadableContent downloadableContent = contentAccess.getContent(new ContentRequestContext() {
- @Override
- public String getDataUri() {
- return request.getParameter("ref");
- }
-
- @Override
- public String getClusterNodeId() {
- return request.getParameter("clusterNodeId");
- }
-
- @Override
- public String getClientId() {
- return request.getParameter("clientId");
- }
-
- @Override
- public String getProxiedEntitiesChain() {
- return request.getHeader("X-ProxiedEntitiesChain");
- }
- });
+ final DownloadableContent downloadableContent = contentAccess.getContent(getContentRequest(request));
// ensure the content is found
if (downloadableContent == null) {
@@ -89,6 +73,8 @@ public class ContentViewerController extends HttpServlet {
// create the stream for tika to process, buffer to support reseting
final BufferedInputStream bis = new BufferedInputStream(downloadableContent.getContent());
final TikaInputStream tikaStream = TikaInputStream.get(bis);
+
+ // provide a hint based on the filename
final Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, downloadableContent.getFilename());
@@ -117,11 +103,28 @@ public class ContentViewerController extends HttpServlet {
// create a request attribute for accessing the content
request.setAttribute(ViewableContent.CONTENT_REQUEST_ATTRIBUTE, new ViewableContent() {
@Override
- public InputStream getContent() {
+ public InputStream getContentStream() {
return bis;
}
@Override
+ public String getContent() throws IOException {
+ // detect the charset
+ final CharsetDetector detector = new CharsetDetector();
+ detector.setText(bis);
+ detector.enableInputFilter(true);
+ final CharsetMatch match = detector.detect();
+
+ // ensure we were able to detect the charset
+ if (match == null) {
+ throw new IOException("Unable to detect character encoding.");
+ }
+
+ // convert the stream using the detected charset
+ return IOUtils.toString(bis, match.getName());
+ }
+
+ @Override
public String getFileName() {
return downloadableContent.getFilename();
}
@@ -145,4 +148,32 @@ public class ContentViewerController extends HttpServlet {
footer.include(request, response);
}
+ /**
+ * Get the content request context based on the specified request.
+ * @param request
+ * @return
+ */
+ private ContentRequestContext getContentRequest(final HttpServletRequest request) {
+ return new ContentRequestContext() {
+ @Override
+ public String getDataUri() {
+ return request.getParameter("ref");
+ }
+
+ @Override
+ public String getClusterNodeId() {
+ return request.getParameter("clusterNodeId");
+ }
+
+ @Override
+ public String getClientId() {
+ return request.getParameter("clientId");
+ }
+
+ @Override
+ public String getProxiedEntitiesChain() {
+ return request.getHeader("X-ProxiedEntitiesChain");
+ }
+ };
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/1955926a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerController.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerController.java b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerController.java
index e1206d0..af3cc6d 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerController.java
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerController.java
@@ -43,6 +43,7 @@ public class StandardContentViewerController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final ViewableContent content = (ViewableContent) request.getAttribute(ViewableContent.CONTENT_REQUEST_ATTRIBUTE);
+ final String contentString = content.getContent();
// handle json/xml
if ("application/json".equals(content.getContentType()) || "application/xml".equals(content.getContentType())) {
@@ -50,9 +51,8 @@ public class StandardContentViewerController extends HttpServlet {
// format the content
if ("application/json".equals(content.getContentType())) {
- final String json = IOUtils.toString(content.getContent(), StandardCharsets.UTF_8);
final ObjectMapper mapper = new ObjectMapper();
- final Object objectJson = mapper.readValue(json, Object.class);
+ final Object objectJson = mapper.readValue(contentString, Object.class);
formatted = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(objectJson);
} else {
formatted = "";
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/1955926a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/WEB-INF/jsp/codemirror.jsp
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/WEB-INF/jsp/codemirror.jsp b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/WEB-INF/jsp/codemirror.jsp
index 13d32f8..dd79378 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/WEB-INF/jsp/codemirror.jsp
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/WEB-INF/jsp/codemirror.jsp
@@ -17,17 +17,12 @@
<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
<link rel="stylesheet" href="../nifi/js/codemirror/lib/codemirror.css" type="text/css" />
<script type="text/javascript" src="../nifi/js/codemirror/lib/codemirror-compressed.js"></script>
+<script type="text/javascript" src="../nifi/js/jquery/jquery-2.1.1.min.js"></script>
<textarea id="codemirror-content">${content}</textarea>
-<style>
- #codemirror-content {
- width: 500px;
- }
-</style>
-
<script type="text/javascript">
- function formatContent() {
+ $(document).ready(function() {
var field = document.getElementById('codemirror-content');
var editor = CodeMirror.fromTextArea(field, {
mode: '${mode}',
@@ -36,7 +31,15 @@
readOnly: true,
width: 500
});
- }
-
- formatContent();
+
+ var setEditorSize = function() {
+ editor.setSize($(window).width() - 150, $(window).height() - 150);
+ };
+
+ // reset the editor size when the window changes
+ $(window).resize(setEditorSize);
+
+ // initialize the editor size
+ setEditorSize();
+ });
</script>
\ No newline at end of file