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/21 22:37:00 UTC

[4/6] incubator-nifi git commit: NIFI-353: - Starting to add support for viewing JSON. - Updating codemirror to add support for JSON and XML.

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/43f6e3c0/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
index 4025ff0..b4eabfc 100644
--- a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
@@ -28,6 +28,11 @@
             <artifactId>commons-lang3</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-mapper-asl</artifactId>
+            <version>1.9.13</version>
+        </dependency>
+        <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/43f6e3c0/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 0988f53..e1206d0 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
@@ -19,14 +19,13 @@ package org.apache.nifi.web;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 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.codehaus.jackson.map.ObjectMapper;
 
 /**
  *
@@ -43,12 +42,25 @@ 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);
         
         // handle json/xml
         if ("application/json".equals(content.getContentType()) || "application/xml".equals(content.getContentType())) {
-            request.setAttribute("content", IOUtils.toString(content.getContent(), StandardCharsets.UTF_8));
+            final String formatted;
+            
+            // 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);
+                formatted = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(objectJson);
+            } else {
+                formatted = "";
+            }
+            
+            // defer the jsp
+            request.setAttribute("mode", content.getContentType());
+            request.setAttribute("content", formatted);
             request.getRequestDispatcher("/WEB-INF/jsp/codemirror.jsp").include(request, response);
         } 
         

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/43f6e3c0/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 5f73d47..13d32f8 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
@@ -15,4 +15,28 @@
   limitations under the License.
 --%>
 <%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
-<p>${content}</p>
\ No newline at end of file
+<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>
+
+<textarea id="codemirror-content">${content}</textarea>
+
+<style>
+    #codemirror-content {
+        width: 500px;
+    }
+</style>
+
+<script type="text/javascript">
+    function formatContent() {
+        var field = document.getElementById('codemirror-content');
+        var editor = CodeMirror.fromTextArea(field, {
+            mode: '${mode}',
+            lineNumbers: true,
+            matchBrackets: true,
+            readOnly: true,
+            width: 500
+        });
+    }
+    
+    formatContent();
+</script>
\ No newline at end of file