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()
Show replies by date