You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/11/06 05:29:05 UTC

svn commit: r711770 - in /incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp: JspScriptEngineFactory.java SlingIOProvider.java

Author: fmeschbe
Date: Wed Nov  5 20:29:05 2008
New Revision: 711770

URL: http://svn.apache.org/viewvc?rev=711770&view=rev
Log:
Sling-720 Try to assign a well-known MIME type derived from the filename extension

Modified:
    incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
    incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java

Modified: incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java?rev=711770&r1=711769&r2=711770&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java (original)
+++ incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java Wed Nov  5 20:29:05 2008
@@ -190,7 +190,7 @@
             // prepare some classes
             prepareJasperClasses();
 
-            ioProvider = new SlingIOProvider(repository);
+            ioProvider = new SlingIOProvider(repository, slingServletContext);
 
             tldLocationsCache = new SlingTldLocationsCache(slingServletContext,
                 componentContext.getBundleContext());

Modified: incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java?rev=711770&r1=711769&r2=711770&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java (original)
+++ incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java Wed Nov  5 20:29:05 2008
@@ -32,6 +32,7 @@
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.servlet.ServletContext;
 
 import org.apache.sling.api.SlingException;
 import org.apache.sling.api.resource.Resource;
@@ -52,15 +53,19 @@
 
     private final SlingRepository repository;
 
-    private ThreadLocal<ResourceResolver> requestResourceResolver;
+    private final ThreadLocal<ResourceResolver> requestResourceResolver;
 
     // private session for write access
-    private ThreadLocal<Session> privateSession;
+    private final ThreadLocal<Session> privateSession;
+    
+    // used to find out about the mime type for created files
+    private final ServletContext servletContext;
 
-    SlingIOProvider(SlingRepository repository) {
+    SlingIOProvider(SlingRepository repository, ServletContext servletContext) {
         this.repository = repository;
         this.requestResourceResolver = new ThreadLocal<ResourceResolver>();
         this.privateSession = new ThreadLocal<Session>();
+        this.servletContext = servletContext;
     }
 
     void setRequestResourceResolver(ResourceResolver resolver) {
@@ -80,6 +85,10 @@
         }
     }
 
+    ServletContext getServletContext() {
+        return servletContext;
+    }
+    
     // ---------- IOProvider interface -----------------------------------------
 
     /**
@@ -377,12 +386,17 @@
                     contentNode = fileNode.addNode("jcr:content", "nt:resource");
                 }
 
+                String mimeType = repositoryOutputProvider.getServletContext().getMimeType(
+                    fileName);
+                if (mimeType == null) {
+                    mimeType = "application/octet-stream";
+                }
+                
                 contentNode.setProperty("jcr:lastModified",
                     System.currentTimeMillis());
                 contentNode.setProperty("jcr:data", new ByteArrayInputStream(
                     buf, 0, size()));
-                contentNode.setProperty("jcr:mimeType",
-                    "application/octet-stream");
+                contentNode.setProperty("jcr:mimeType", mimeType);
 
                 parentNode.save();
             } catch (RepositoryException re) {