You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2014/12/17 13:48:43 UTC

svn commit: r1646222 - in /myfaces/tobago/branches/tobago-3.0.x/tobago-core/src: main/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtils.java test/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtilsUniTest.java

Author: lofwyr
Date: Wed Dec 17 12:48:43 2014
New Revision: 1646222

URL: http://svn.apache.org/r1646222
Log:
TOBAGO-1368: Create a new theme which uses Bootstrap
 - Mime Type support for woff fonts
 - speed optimization

Added:
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtilsUniTest.java
Modified:
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtils.java

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtils.java?rev=1646222&r1=1646221&r2=1646222&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtils.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtils.java Wed Dec 17 12:48:43 2014
@@ -25,25 +25,47 @@ public final class MimeTypeUtils {
     // utils class
   }
 
-  // todo: maybe support more extensions (configurable?)  
+  // todo: maybe support more extensions
   public static String getMimeTypeForFile(final String file) {
-    if (file.endsWith(".gif")) {
-      return "image/gif";
-    } else if (file.endsWith(".png")) {
-      return "image/png";
-    } else if (file.endsWith(".jpg")) {
-      return "image/jpeg";
-    } else if (file.endsWith(".js")) {
-      return "text/javascript";
-    } else if (file.endsWith(".css")) {
-      return "text/css";
-    } else if (file.endsWith(".ico")) {
-      return "image/vnd.microsoft.icon";
-    } else if (file.endsWith(".html") || file.endsWith(".htm")) {
-      return "text/html";
-    } else if (file.endsWith(".map")) {
-      return "application/json";
+    int length = file.length();
+    if (file.charAt(length - 4) == '.') {
+      if (file.charAt(length - 1) == 'g') {
+        if (file.regionMatches(length - 3, "png", 0, 2)) {
+          return "image/png";
+        }
+        if (file.regionMatches(length - 3, "jpg", 0, 2)) {
+          return "image/jpeg";
+        }
+      } else {
+        if (file.endsWith("css")) {
+          return "text/css";
+        }
+        if (file.endsWith("gif")) {
+          return "image/gif";
+        }
+        if (file.endsWith("htm")) {
+          return "text/html";
+        }
+        if (file.endsWith("ico")) {
+          return "image/vnd.microsoft.icon";
+        }
+        if (file.endsWith("map")) {
+          return "application/json";
+        }
+      }
+    } else if (file.charAt(length - 3) == '.') {
+      if (file.endsWith("js")) {
+        return "text/javascript";
+      }
+    } else if (file.charAt(length - 5) == '.') {
+      if (file.endsWith("woff")) {
+        return "application/font-woff";
+      }
+      if (file.endsWith("html")) {
+        return "text/html";
+      }
     }
+
     return null;
   }
 }

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtilsUniTest.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtilsUniTest.java?rev=1646222&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtilsUniTest.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/util/MimeTypeUtilsUniTest.java Wed Dec 17 12:48:43 2014
@@ -0,0 +1,69 @@
+package org.apache.myfaces.tobago.internal.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class MimeTypeUtilsUniTest {
+
+  public static final int INT = 100000000;
+
+  public static final String GIF = "http:///localhost:8080/demo/demo.gif";
+  public static final String PNG = "http:///localhost:8080/demo/demo.png";
+  public static final String JPG = "http:///localhost:8080/demo/demo.jpg";
+  public static final String JS = "http:///localhost:8080/demo/demo.js";
+  public static final String CSS = "http:///localhost:8080/demo/demo.css";
+  public static final String ICO = "http:///localhost:8080/demo/demo.ico";
+  public static final String HTML = "http:///localhost:8080/demo/demo.html";
+  public static final String HTM = "http:///localhost:8080/demo/demo.htm";
+  public static final String MAP = "http:///localhost:8080/demo/demo.map";
+  public static final String WOFF = "http:///localhost:8080/demo/demo.woff";
+
+  public static final String UNKNOWN0 = "http:///localhost:8080/demo/demo.PNG";
+  public static final String UNKNOWN1 = "http:///localhost:8080/demo/demos._png";
+  public static final String UNKNOWN2 = "http:///localhost:8080/demo/demo.ggif";
+  public static final String UNKNOWN3 = "http:///localhost:8080/demo/demos.ppg";
+
+  @Test
+  public void testMimeTypes() {
+
+    Assert.assertEquals("image/gif", MimeTypeUtils.getMimeTypeForFile(GIF));
+    Assert.assertEquals("image/png", MimeTypeUtils.getMimeTypeForFile(PNG));
+    Assert.assertEquals("image/jpeg", MimeTypeUtils.getMimeTypeForFile(JPG));
+    Assert.assertEquals("text/javascript", MimeTypeUtils.getMimeTypeForFile(JS));
+    Assert.assertEquals("text/css", MimeTypeUtils.getMimeTypeForFile(CSS));
+    Assert.assertEquals("image/vnd.microsoft.icon", MimeTypeUtils.getMimeTypeForFile(ICO));
+    Assert.assertEquals("text/html", MimeTypeUtils.getMimeTypeForFile(HTML));
+    Assert.assertEquals("text/html", MimeTypeUtils.getMimeTypeForFile(HTM));
+    Assert.assertEquals("application/json", MimeTypeUtils.getMimeTypeForFile(MAP));
+    Assert.assertEquals("application/font-woff", MimeTypeUtils.getMimeTypeForFile(WOFF));
+  }
+
+  @Test
+  public void testMimeTypesUnknown() {
+
+    Assert.assertEquals(null, MimeTypeUtils.getMimeTypeForFile(UNKNOWN0));
+    Assert.assertEquals(null, MimeTypeUtils.getMimeTypeForFile(UNKNOWN1));
+    Assert.assertEquals(null, MimeTypeUtils.getMimeTypeForFile(UNKNOWN2));
+    Assert.assertEquals(null, MimeTypeUtils.getMimeTypeForFile(UNKNOWN3));
+  }
+
+//  @Test
+  public void testPerformace() {
+    final long start = System.currentTimeMillis();
+    for (int i = 0; i < INT; i++) {
+      MimeTypeUtils.getMimeTypeForFile(GIF);
+      MimeTypeUtils.getMimeTypeForFile(PNG);
+      MimeTypeUtils.getMimeTypeForFile(JPG);
+      MimeTypeUtils.getMimeTypeForFile(JS);
+      MimeTypeUtils.getMimeTypeForFile(CSS);
+      MimeTypeUtils.getMimeTypeForFile(ICO);
+      MimeTypeUtils.getMimeTypeForFile(HTML);
+      MimeTypeUtils.getMimeTypeForFile(HTM);
+      MimeTypeUtils.getMimeTypeForFile(MAP);
+      MimeTypeUtils.getMimeTypeForFile(WOFF);
+      MimeTypeUtils.getMimeTypeForFile(UNKNOWN0);
+    }
+    System.out.println("-----------------------> " + (System.currentTimeMillis() - start) + " ms");
+  }
+
+}
\ No newline at end of file