You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jw...@apache.org on 2009/12/02 00:53:49 UTC

svn commit: r886013 - /myfaces/trinidad/branches/1.2.12.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java

Author: jwaldman
Date: Tue Dec  1 23:53:49 2009
New Revision: 886013

URL: http://svn.apache.org/viewvc?rev=886013&view=rev
Log:
TRINIDAD-1629 ResourceServlet.java._setHeaders() can call response.setContentType() with a null contentType resulting in an NPE on Websphere.
Thanks to Gary Kind.
The _setHeaders method was changed to check for more cases and to check for null and log a warning.

Modified:
    myfaces/trinidad/branches/1.2.12.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java

Modified: myfaces/trinidad/branches/1.2.12.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java?rev=886013&r1=886012&r2=886013&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java (original)
+++ myfaces/trinidad/branches/1.2.12.2-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java Tue Dec  1 23:53:49 2009
@@ -418,24 +418,47 @@
     URLConnection       connection,
     HttpServletResponse response)
   {
-    String contentType = connection.getContentType();
+    String resourcePath;
+    URL    url;
+    String contentType  = connection.getContentType();
+
     if (contentType == null || "content/unknown".equals(contentType))
     {
-      URL url = connection.getURL();
-      String resourcePath = url.getPath();
-      if(resourcePath.endsWith(".css"))
+      url = connection.getURL();
+      resourcePath = url.getPath();
+
+      // 'Case' statement for unknown content types
+      if (resourcePath.endsWith(".css"))
         contentType = "text/css";
-      else if(resourcePath.endsWith(".js"))
+      else if (resourcePath.endsWith(".js"))
         contentType = "application/x-javascript";
+      else if (resourcePath.endsWith(".cur") || resourcePath.endsWith(".ico"))
+        contentType = "image/vnd.microsoft.icon";
       else
         contentType = getServletContext().getMimeType(resourcePath);
     }
-    response.setContentType(contentType);
-
-    int contentLength = connection.getContentLength();
-    if (contentLength >= 0)
-      response.setContentLength(contentLength);
+    
+    if (contentType != null)
+    {
+      response.setContentType(contentType);    
+      int contentLength = connection.getContentLength();
 
+      if (contentLength >= 0)
+        response.setContentLength(contentLength);
+    }
+    else
+    {
+      // The resource has an file extension we have not 
+      // included in the case statement above
+      url = connection.getURL();
+      resourcePath = url.getPath();
+
+      _LOG.warning("ResourceServlet._setHeaders(): " +  
+                   "Content type for {0} is NULL!\n" +
+                   "Cause: Unknown file extension",
+                   resourcePath);
+    } 
+    
     long lastModified;
     try
     {