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;
        }
 }


Reply via email to