Author: toad
Date: 2007-02-14 20:30:59 +0000 (Wed, 14 Feb 2007)
New Revision: 11792
Modified:
trunk/freenet/src/freenet/client/DefaultMIMETypes.java
Log:
Store all extensions, fix isValidExt for the case where there are multiple MIME
types using the same extension (whether or not they mean the same thing).
Modified: trunk/freenet/src/freenet/client/DefaultMIMETypes.java
===================================================================
--- trunk/freenet/src/freenet/client/DefaultMIMETypes.java 2007-02-14
20:15:33 UTC (rev 11791)
+++ trunk/freenet/src/freenet/client/DefaultMIMETypes.java 2007-02-14
20:30:59 UTC (rev 11792)
@@ -31,6 +31,9 @@
/** Primary extension by MIME type number. */
private static HashMap primaryExtensionByMimeNumber = new HashMap();
+ /** All extension (String[]) by MIME type number. */
+ private static HashMap allExtensionsByMimeNumber = new HashMap();
+
/**
* Add a MIME type, without any extensions.
* @param number The number of the MIME type for compression. This
*must not change*
@@ -75,6 +78,7 @@
mimeTypesByExtension.put(ext, t);
}
}
+ allExtensionsByMimeNumber.put(t, extensions);
}
if(outExtension != null)
primaryExtensionByMimeNumber.put(t, outExtension);
@@ -763,9 +767,14 @@
}
public synchronized static boolean isValidExt(String expectedMimeType,
String oldExt) {
- Short s = (Short) mimeTypesByExtension.get(oldExt);
- if(s == null) return false;
- String type = byNumber(s.shortValue());
- return type.equals(expectedMimeType);
+ short typeNumber = byName(expectedMimeType);
+ if(typeNumber < 0) return false;
+
+ Short s = new Short(typeNumber);
+ String[] extensions = (String[])
allExtensionsByMimeNumber.get(s);
+ if(extensions == null) return false;
+ for(int i=0;i<extensions.length;i++)
+ if(oldExt.equals(extensions[i])) return true;
+ return false;
}
}