[SM-2590]javax.activation.MimetypesFileTypeMap#addMimeTypes() not implemented correctly
diff --git a/activation-api-1.1/src/main/java/javax/activation/MimetypesFileTypeMap.java b/activation-api-1.1/src/main/java/javax/activation/MimetypesFileTypeMap.java
index ed78099..bf8836a 100644
--- a/activation-api-1.1/src/main/java/javax/activation/MimetypesFileTypeMap.java
+++ b/activation-api-1.1/src/main/java/javax/activation/MimetypesFileTypeMap.java
@@ -27,6 +27,7 @@
import java.io.FileReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.StringReader;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
@@ -122,7 +123,7 @@
try {
String line;
while ((line = reader.readLine()) != null) {
- addMimeTypes(line);
+ addMimeTypesOneLine(line);
}
reader.close();
} catch (IOException e) {
@@ -148,11 +149,11 @@
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
- addMimeTypes(line);
+ addMimeTypesOneLine(line);
}
}
- public synchronized void addMimeTypes(String mime_types) {
+ private synchronized void addMimeTypesOneLine(String mime_types) {
int hashPos = mime_types.indexOf('#');
if (hashPos != -1) {
mime_types = mime_types.substring(0, hashPos);
@@ -167,6 +168,24 @@
types.put(fileType, contentType);
}
}
+
+ public synchronized void addMimeTypes(String mime_types) {
+ BufferedReader reader = new BufferedReader(new StringReader(mime_types));
+ try {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ addMimeTypesOneLine(line);
+ }
+ reader.close();
+ } catch (IOException e) {
+ try {
+ reader.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ }
+
public String getContentType(File f) {
return getContentType(f.getName());