]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test case and fix for #4064
authorArtur Signell <artur.signell@itmill.com>
Mon, 25 Jan 2010 10:15:00 +0000 (10:15 +0000)
committerArtur Signell <artur.signell@itmill.com>
Mon, 25 Jan 2010 10:15:00 +0000 (10:15 +0000)
svn changeset:10984/svn branch:6.2

src/com/vaadin/service/FileTypeResolver.java
tests/src/com/vaadin/tests/server/TestFileTypeResolver.java [new file with mode: 0644]

index 599cce924f09c59590e872c903b45c9f8451938e..566f29937663eb6fe3fd82bfcea994defa198b85 100644 (file)
@@ -245,7 +245,13 @@ public class FileTypeResolver implements Serializable {
         dotIndex++;
 
         if (fileName.length() > dotIndex) {
-            final String ext = fileName.substring(dotIndex);
+            String ext = fileName.substring(dotIndex);
+
+            // Ignore any query parameters
+            int queryStringStart = ext.indexOf('?');
+            if (queryStringStart > 0) {
+                ext = ext.substring(0, queryStringStart);
+            }
 
             // Return type from extension map, if found
             final String type = (String) extToMIMEMap.get(ext);
diff --git a/tests/src/com/vaadin/tests/server/TestFileTypeResolver.java b/tests/src/com/vaadin/tests/server/TestFileTypeResolver.java
new file mode 100644 (file)
index 0000000..dc1b292
--- /dev/null
@@ -0,0 +1,52 @@
+package com.vaadin.tests.server;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import com.vaadin.service.FileTypeResolver;
+
+public class TestFileTypeResolver extends TestCase {
+
+    private static final String FLASH_MIME_TYPE = "application/x-shockwave-flash";
+    private static final String TEXT_MIME_TYPE = "text/plain";
+    private static final String HTML_MIME_TYPE = "text/html";
+
+    public void testMimeTypes() {
+        File plainFlash = new File("MyFlash.swf");
+        File plainText = new File("/a/b/MyFlash.txt");
+        File plainHtml = new File("c:\\MyFlash.html");
+
+        // Flash
+        assertEquals(
+                FileTypeResolver.getMIMEType(plainFlash.getAbsolutePath()),
+                FLASH_MIME_TYPE);
+        assertEquals(FileTypeResolver.getMIMEType(plainFlash.getAbsolutePath()
+                + "?param1=value1"), FLASH_MIME_TYPE);
+        assertEquals(FileTypeResolver.getMIMEType(plainFlash.getAbsolutePath()
+                + "?param1=value1&param2=value2"), FLASH_MIME_TYPE);
+
+        // Plain text
+        assertEquals(FileTypeResolver.getMIMEType(plainText.getAbsolutePath()),
+                TEXT_MIME_TYPE);
+        assertEquals(FileTypeResolver.getMIMEType(plainText.getAbsolutePath()
+                + "?param1=value1"), TEXT_MIME_TYPE);
+        assertEquals(FileTypeResolver.getMIMEType(plainText.getAbsolutePath()
+                + "?param1=value1&param2=value2"), TEXT_MIME_TYPE);
+
+        // Plain text
+        assertEquals(FileTypeResolver.getMIMEType(plainHtml.getAbsolutePath()),
+                HTML_MIME_TYPE);
+        assertEquals(FileTypeResolver.getMIMEType(plainHtml.getAbsolutePath()
+                + "?param1=value1"), HTML_MIME_TYPE);
+        assertEquals(FileTypeResolver.getMIMEType(plainHtml.getAbsolutePath()
+                + "?param1=value1&param2=value2"), HTML_MIME_TYPE);
+
+        // Filename missing
+        assertEquals(FileTypeResolver.DEFAULT_MIME_TYPE, FileTypeResolver
+                .getMIMEType(""));
+        assertEquals(FileTypeResolver.DEFAULT_MIME_TYPE, FileTypeResolver
+                .getMIMEType("?param1"));
+
+    }
+}