[exo-jcr-commits] exo-jcr SVN: r4565 - in kernel/trunk/exo.kernel.commons: src/main/java/org/exoplatform/commons/utils and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Jun 24 05:26:04 EDT 2011


Author: dkuleshov
Date: 2011-06-24 05:26:03 -0400 (Fri, 24 Jun 2011)
New Revision: 4565

Modified:
   kernel/trunk/exo.kernel.commons/pom.xml
   kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java
   kernel/trunk/exo.kernel.commons/src/test/java/org/exoplatform/commons/utils/TestMimeTypeResolver.java
Log:
EXOJCR-1378: added new method to MimeTypeResolver to obtain mime type from InputStream

Modified: kernel/trunk/exo.kernel.commons/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.commons/pom.xml	2011-06-24 08:30:34 UTC (rev 4564)
+++ kernel/trunk/exo.kernel.commons/pom.xml	2011-06-24 09:26:03 UTC (rev 4565)
@@ -62,6 +62,7 @@
             <directory>src/test/resources</directory>
             <includes>
                <include>**/*.properties</include>
+               <include>**/test*</include>
             </includes>
          </testResource>
       </testResources>

Modified: kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java	2011-06-24 08:30:34 UTC (rev 4564)
+++ kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java	2011-06-24 09:26:03 UTC (rev 4565)
@@ -23,10 +23,8 @@
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.security.PrivilegedAction;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -113,45 +111,47 @@
    }
 
    /**
-    * Get MIMEType which corresponds to file extension or, in case if file extension 
-    * does not exist, file content. If file extension is unknown, or file content 
+    * Get MIMEType which corresponds to file extension. If file extension is unknown the default 
+    * MIMEType will be returned. If there are more than one MIMETypes for specific extension the 
+    * first occurred in the list will be returned. 
+    * 
+    * @param filename
+    * @return String MIMEType
+    */
+   public String getMimeType(String filename)
+   {
+      String ext = filename.substring(filename.lastIndexOf(".") + 1);
+      if (ext.isEmpty())
+      {
+         ext = filename;
+      }
+
+      List<String> values = mimeTypes.get(ext);
+      return values == null ? defaultMimeType : values.get(0);
+   }
+
+   /**
+    * Get MIMEType which corresponds to file content. If file content 
     * does not allow to determine MIMEtype, the default MIMEType will be returned. 
-    * If there are more than one MIMETypes for specific extension the first occurred 
-    * in the list will be returned. 
-    * 
+    *
     * @param fileName
+    * @param is
     * @return String MIMEType
     */
-   public String getMimeType(String fileName)
+   public String getMimeType(String fileName, InputStream is)
    {
-      final File file = new File(fileName);
-      String extension = MimeUtil.getExtension(file);
+      String mimeType = getMimeType(fileName);
 
-      if (extension.isEmpty())
+      if (mimeType == defaultMimeType)
       {
-         if (PrivilegedFileHelper.exists(file))
+         Collection<?> mimeTypes = MimeUtil.getMimeTypes(is);
+         if (!mimeTypes.isEmpty())
          {
-            Collection<?> mimeTypes = SecurityHelper.doPrivilegedAction(new PrivilegedAction<Collection<?>>()
-            {
-               public Collection<?> run()
-               {
-                  return MimeUtil.getMimeTypes(file);
-               }
-            });
-
-            return mimeTypes.isEmpty() ? defaultMimeType : mimeTypes.toArray()[0].toString();
+            mimeType = mimeTypes.toArray()[0].toString();
          }
-         else
-         {
-            log.warn("You're trying to resolve mime type of non-existing file with no extension.");
-            return defaultMimeType;
-         }
       }
-      else
-      {
-         List<String> values = mimeTypes.get(extension);
-         return values == null ? defaultMimeType : values.get(0);
-      }
+
+      return mimeType;
    }
 
    /**

Modified: kernel/trunk/exo.kernel.commons/src/test/java/org/exoplatform/commons/utils/TestMimeTypeResolver.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/test/java/org/exoplatform/commons/utils/TestMimeTypeResolver.java	2011-06-24 08:30:34 UTC (rev 4564)
+++ kernel/trunk/exo.kernel.commons/src/test/java/org/exoplatform/commons/utils/TestMimeTypeResolver.java	2011-06-24 09:26:03 UTC (rev 4565)
@@ -20,6 +20,9 @@
 
 import junit.framework.TestCase;
 
+import java.io.IOException;
+import java.io.InputStream;
+
 /**
  * Created by The eXo Platform SAS.
  *
@@ -63,7 +66,7 @@
     * Here we're going to test MimeTypeResolver to obtain corresponding or 
     * at least most corresponding mime types for files without extensions.
     */
-   public void testGetMimeTypeFromContent()
+   public void testGetMimeTypeFromContent() throws IOException
    {
       // should return default mime type as file name has no extension
       // and file does not exist to read its content
@@ -74,12 +77,24 @@
       // and file does not exist to read its content
       assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("file."));
 
-      assertEquals("image/jpeg", resolver.getMimeType("src/test/resources/testjpg"));
-      assertEquals("application/pdf", resolver.getMimeType("src/test/resources/testpdf"));
-      assertEquals("application/msword", resolver.getMimeType("src/test/resources/testdoc"));
-      assertEquals("text/xml", resolver.getMimeType("src/test/resources/testxml"));
-      assertEquals("application/msword", resolver.getMimeType("src/test/resources/testxls"));
+      InputStream is;
 
+      is = TestMimeTypeResolver.class.getResourceAsStream("/testjpg");
+      assertEquals("image/jpeg", resolver.getMimeType("testjpg", is));
+      is.close();
+      is = TestMimeTypeResolver.class.getResourceAsStream("/testpdf");
+      assertEquals("application/pdf", resolver.getMimeType("testpdf", is));
+      is.close();
+      is = TestMimeTypeResolver.class.getResourceAsStream("/testdoc");
+      assertEquals("application/msword", resolver.getMimeType("testdoc", is));
+      is.close();
+      is = TestMimeTypeResolver.class.getResourceAsStream("/testxml");
+      assertEquals("text/xml", resolver.getMimeType("testxml", is));
+      is.close();
+      is = TestMimeTypeResolver.class.getResourceAsStream("/testxls");
+      assertEquals("application/msword", resolver.getMimeType("testxls", is));
+      is.close();
+
    }
 
    public void testGetExtension()



More information about the exo-jcr-commits mailing list