Skip to content

Commit 62e3033

Browse files
authored
Merge pull request #14701 from rajat-garg/rg/extension-from-mime-type
[BAEL-6730] Add getting Extension from MIME type of a file
2 parents 9748166 + 2b5199a commit 62e3033

2 files changed

Lines changed: 73 additions & 0 deletions

File tree

core-java-modules/core-java-io/pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,17 @@
4343
<version>${angus-activation.version}</version>
4444
<scope>test</scope>
4545
</dependency>
46+
<dependency>
47+
<groupId>org.jodd</groupId>
48+
<artifactId>jodd-util</artifactId>
49+
<version>6.2.1</version>
50+
</dependency>
51+
<dependency>
52+
<groupId>com.j256.simplemagic</groupId>
53+
<artifactId>simplemagic</artifactId>
54+
<version>1.17</version>
55+
</dependency>
56+
4657
</dependencies>
4758

4859
<build>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.baeldung.extension;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.Assert.assertEquals;
5+
6+
import java.util.Arrays;
7+
import java.util.HashMap;
8+
import java.util.HashSet;
9+
import java.util.List;
10+
import java.util.Map;
11+
import java.util.Set;
12+
13+
import org.apache.tika.mime.MimeTypeException;
14+
15+
import org.junit.Test;
16+
17+
import com.j256.simplemagic.ContentInfo;
18+
19+
public class ExtensionFromMimeTypeUnitTest {
20+
private static final String IMAGE_JPEG_MIME_TYPE = "image/jpeg";
21+
@Test
22+
public void whenUsingTika_thenGetFileExtension() throws MimeTypeException {
23+
List<String> expectedExtensions = Arrays.asList(".jpg", ".jpeg", ".jpe", ".jif", ".jfif", ".jfi");
24+
org.apache.tika.mime.MimeTypes allTypes = org.apache.tika.mime.MimeTypes.getDefaultMimeTypes();
25+
org.apache.tika.mime.MimeType type = allTypes.forName(IMAGE_JPEG_MIME_TYPE);
26+
String primaryExtension = type.getExtension();
27+
assertEquals(".jpg", primaryExtension);
28+
List<String> detectedExtensions = type.getExtensions();
29+
assertThat(detectedExtensions).containsExactlyElementsOf(expectedExtensions);
30+
}
31+
32+
@Test
33+
public void whenUsingJodd_thenGetFileExtension() {
34+
List<String> expectedExtensions = Arrays.asList("jpeg", "jpg", "jpe");
35+
String[] detectedExtensions = jodd.net.MimeTypes.findExtensionsByMimeTypes(IMAGE_JPEG_MIME_TYPE, false);
36+
assertThat(detectedExtensions).containsExactlyElementsOf(expectedExtensions);
37+
}
38+
39+
@Test
40+
public void whenUsingMimetypesFileTypeMap_thenGetFileExtension() {
41+
List<String> expectedExtensions = Arrays.asList("jpeg", "jpg", "jpe");
42+
ContentInfo contentInfo = new ContentInfo("", IMAGE_JPEG_MIME_TYPE, "", true);
43+
String[] detectedExtensions = contentInfo.getFileExtensions();
44+
assertThat(detectedExtensions).containsExactlyElementsOf(expectedExtensions);
45+
}
46+
47+
@Test
48+
public void whenUsingCustomLogic_thenGetFileExtension() {
49+
Map<String, Set<String>> mimeExtensionsMap = new HashMap<>();
50+
List<String> expectedExtensions = Arrays.asList(".jpg", ".jpe", ".jpeg");
51+
addMimeExtensions(mimeExtensionsMap, "image/jpeg", ".jpg");
52+
addMimeExtensions(mimeExtensionsMap, "image/jpeg", ".jpe");
53+
addMimeExtensions(mimeExtensionsMap, "image/jpeg", ".jpeg");
54+
55+
Set<String> detectedExtensions = mimeExtensionsMap.get(IMAGE_JPEG_MIME_TYPE);
56+
assertThat(detectedExtensions).containsExactlyElementsOf(expectedExtensions);
57+
}
58+
59+
private void addMimeExtensions(Map<String, Set<String>> map, String mimeType, String extension) {
60+
map.computeIfAbsent(mimeType, k -> new HashSet<>()).add(extension);
61+
}
62+
}

0 commit comments

Comments
 (0)