SLING-1496 fixes missing content type on directory listings where there is a resource.

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@936614 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java
index 5045cd3..23f6f71 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServlet.java
@@ -176,38 +176,7 @@
 
             // set various response headers, unless the request is included
             if (!included) {
-                final ResourceMetadata meta = resource.getResourceMetadata();
-                final long modifTime = meta.getModificationTime();
-                if (modifTime > 0) {
-                    response.setDateHeader(HEADER_LAST_MODIFIED, modifTime);
-                }
-
-                final String defaultContentType = "application/octet-stream";
-                String contentType = meta.getContentType();
-                if (contentType == null || defaultContentType.equals(contentType)) {
-                    // if repository doesn't provide a content-type, or
-                    // provides the
-                    // default one,
-                    // try to do better using our servlet context
-                    final String ct = getServletContext().getMimeType(
-                        resource.getPath());
-                    if (ct != null) {
-                        contentType = ct;
-                    }
-                }
-                if (contentType != null) {
-                    response.setContentType(contentType);
-                }
-
-                String encoding = meta.getCharacterEncoding();
-                if (encoding != null) {
-                    response.setCharacterEncoding(encoding);
-                }
-
-                long length = meta.getContentLength();
-                if (length > 0 && length < Integer.MAX_VALUE) {
-                    response.setContentLength((int) length);
-                }
+                setHeaders(resource, response);
             }
 
             OutputStream out = response.getOutputStream();
@@ -260,6 +229,8 @@
                     dispatcher = request.getRequestDispatcher(fileRes, rdo);
                 }
 
+                setHeaders(fileRes, response);
+
                 dispatcher.include(request, response);
                 return;
             }
@@ -273,6 +244,49 @@
 
     }
 
+    /**
+     * @param resource
+     * @param request
+     * @param response
+     */
+    private void setHeaders(Resource resource, 
+            SlingHttpServletResponse response) {
+        
+        final ResourceMetadata meta = resource.getResourceMetadata();
+        final long modifTime = meta.getModificationTime();
+        if (modifTime > 0) {
+            response.setDateHeader(HEADER_LAST_MODIFIED, modifTime);
+        }
+
+        final String defaultContentType = "application/octet-stream";
+        String contentType = meta.getContentType();
+        if (contentType == null || defaultContentType.equals(contentType)) {
+            // if repository doesn't provide a content-type, or
+            // provides the
+            // default one,
+            // try to do better using our servlet context
+            final String ct = getServletContext().getMimeType(
+                resource.getPath());
+            if (ct != null) {
+                contentType = ct;
+            }
+        }
+        if (contentType != null) {
+            response.setContentType(contentType);
+        }
+
+        String encoding = meta.getCharacterEncoding();
+        if (encoding != null) {
+            response.setCharacterEncoding(encoding);
+        }
+
+        long length = meta.getContentLength();
+        if (length > 0 && length < Integer.MAX_VALUE) {
+            response.setContentLength((int) length);
+        }
+        
+    }
+
     private void renderIndex(Resource resource,
             SlingHttpServletResponse response) throws IOException {