Repository: incubator-nifi
Updated Branches:
  refs/heads/NIFI-353 098f9709d -> 173177c91


NIFI-353:
- Cleaning up error handling.
- Showing the file name and content type.

Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/173177c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/173177c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/173177c9

Branch: refs/heads/NIFI-353
Commit: 173177c918e6c07c1c98d807ecc7f8be6d0fa637
Parents: 098f970
Author: Matt Gilman <[email protected]>
Authored: Wed Mar 11 23:21:43 2015 -0400
Committer: Matt Gilman <[email protected]>
Committed: Wed Mar 11 23:21:43 2015 -0400

----------------------------------------------------------------------
 .../nifi/web/ContentViewerController.java       | 77 ++++++++++++--------
 .../src/main/webapp/WEB-INF/jsp/header.jsp      |  1 +
 .../src/main/webapp/WEB-INF/jsp/no-viewer.jsp   |  4 +-
 .../src/main/webapp/css/main.css                | 30 +++++++-
 .../main/webapp/META-INF/nifi-content-viewer    |  2 +-
 5 files changed, 79 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/173177c9/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 bc29e7f..771465a 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
@@ -21,8 +21,6 @@ import com.ibm.icu.text.CharsetMatch;
 import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.PrintWriter;
-import javax.servlet.RequestDispatcher;
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
@@ -39,6 +37,7 @@ import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.security.access.AccessDeniedException;
 
 /**
  *
@@ -60,10 +59,12 @@ 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(getContentRequest(request));
-
-        // ensure the content is found
-        if (downloadableContent == null) {
+        
+        // get the content
+        final DownloadableContent downloadableContent;
+        try {
+            downloadableContent = 
contentAccess.getContent(getContentRequest(request));
+        } catch (final ResourceNotFoundException rnfe) {
             request.setAttribute("title", "Error");
             request.setAttribute("messages", "Unable to find the specified 
content");
             
@@ -71,6 +72,22 @@ public class ContentViewerController extends HttpServlet {
             final ServletContext viewerContext = 
servletContext.getContext("/nifi");
             viewerContext.getRequestDispatcher("/message").include(request, 
response);
             return;
+        } catch (final AccessDeniedException ade) {
+            request.setAttribute("title", "Acess Denied");
+            request.setAttribute("messages", "Unable to approve access to the 
specified content: " + ade.getMessage());
+            
+            // forward to the error page
+            final ServletContext viewerContext = 
servletContext.getContext("/nifi");
+            viewerContext.getRequestDispatcher("/message").include(request, 
response);
+            return;
+        } catch (final Exception e) {
+            request.setAttribute("title", "Error");
+            request.setAttribute("messages", "An unexcepted error has 
occurred: " + e.getMessage());
+            
+            // forward to the error page
+            final ServletContext viewerContext = 
servletContext.getContext("/nifi");
+            viewerContext.getRequestDispatcher("/message").include(request, 
response);
+            return;
         }
 
         // determine how we want to view the data
@@ -95,57 +112,53 @@ public class ContentViewerController extends HttpServlet {
             return;
         }
         
-        // build the request url
+        // detect the content type
+        final DefaultDetector detector = new DefaultDetector();
+
+        // 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());
+
+        // Get mime type
+        final MediaType mediatype = detector.detect(tikaStream, metadata);
+        final String mimeType = mediatype.toString();
+        
+        // add attributes needed for the header
         final StringBuffer requestUrl = request.getRequestURL();
         request.setAttribute("requestUrl", requestUrl.toString());
         request.setAttribute("dataRef", request.getParameter("ref"));
+        request.setAttribute("filename", downloadableContent.getFilename());
+        request.setAttribute("contentType", mimeType);
         
         // generate the header
         
request.getRequestDispatcher("/WEB-INF/jsp/header.jsp").include(request, 
response);
         
-        // remove the request url
+        // remove the attributes needed for the header
         request.removeAttribute("requestUrl");
         request.removeAttribute("dataRef");
+        request.removeAttribute("filename");
+        request.removeAttribute("contentType");
         
         // generate the markup for the content based on the display mode
         if (DisplayMode.Hex.equals(displayMode)) {
             // convert stream into the base 64 bytes
-            final byte[] bytes = 
IOUtils.toByteArray(downloadableContent.getContent());
+            final byte[] bytes = IOUtils.toByteArray(bis);
             final String base64 = Base64.encodeBase64String(bytes);
             
             // defer to the jsp
             request.setAttribute("content", base64);
             
request.getRequestDispatcher("/WEB-INF/jsp/hexview.jsp").include(request, 
response);
         } else {
-            // detect the content type
-            final DefaultDetector detector = new DefaultDetector();
-
-            // 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());
-
-            // Get mime type
-            final MediaType mediatype = detector.detect(tikaStream, metadata);
-            final String mimeType = mediatype.toString();
-
             // lookup a viewer for the content
             final String contentViewerUri = 
servletContext.getInitParameter(mimeType);
 
             // handle no viewer for content type
             if (contentViewerUri == null) {
                 
request.getRequestDispatcher("/WEB-INF/jsp/no-viewer.jsp").include(request, 
response);
-                
-//                final PrintWriter out = response.getWriter();
-//                out.println("No viewer...");
-//                out.println("identified mime type: " + mimeType);
-//                out.println("filename: " + 
downloadableContent.getFilename());
-//                out.println("type: " + downloadableContent.getType());
-//
-//                return;
             } else {
                 // create a request attribute for accessing the content
                 
request.setAttribute(ViewableContent.CONTENT_REQUEST_ATTRIBUTE, new 
ViewableContent() {

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/173177c9/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/header.jsp
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/header.jsp
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/header.jsp
index 2f5047b..6501f5b 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/header.jsp
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/header.jsp
@@ -87,4 +87,5 @@
     <body class="message-pane">
         <div id="view-as-label">View as</div>
         <div id="view-as" class="pointer button-normal"></div>
+        <div id="content-filename">${filename} <span 
id="content-type">(${contentType})</span></div>
         <div class="message-pane-message-box">
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/173177c9/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/no-viewer.jsp
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/no-viewer.jsp
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/no-viewer.jsp
index 845df4f..8eddbe2 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/no-viewer.jsp
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/WEB-INF/jsp/no-viewer.jsp
@@ -15,4 +15,6 @@
   limitations under the License.
 --%>
 <%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
-No viewer is registered for this content type.
\ No newline at end of file
+<div id="no-viewer">
+    No viewer is registered for this content type.
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/173177c9/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/css/main.css
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/css/main.css
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/css/main.css
index 47904bb..0d260ee 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/css/main.css
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-content-viewer/src/main/webapp/css/main.css
@@ -35,6 +35,20 @@
     height: 18px;
 }
 
+#content-filename {
+    position: absolute;
+    top: 72px;
+    right: 50px;
+    line-height: 24px;
+    font-size: 12px;
+    font-weight: bold;
+}
+
+#content-type {
+    font-style: italic;
+    font-weight: normal;
+}
+
 .pointer {
     cursor: pointer;
 }
@@ -66,4 +80,18 @@
     padding: 2px;
 }
 
-/* no viewer */
\ No newline at end of file
+/* no viewer */
+
+#no-viewer {
+    position: absolute;
+    right: 50px;
+    bottom: 50px;
+    left: 100px;
+    top: 100px;
+    border: 1px solid #aaa;
+    overflow: auto;
+    background-color: #fff;
+    font-style: italic;
+    padding: 5px;
+    font-size: 13px;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/173177c9/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/META-INF/nifi-content-viewer
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/META-INF/nifi-content-viewer
 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/META-INF/nifi-content-viewer
index 29fed60..6fb1b93 100644
--- 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/META-INF/nifi-content-viewer
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/webapp/META-INF/nifi-content-viewer
@@ -1,2 +1,2 @@
 application/xml
-application/json
\ No newline at end of file
+application/js2on
\ No newline at end of file

Reply via email to