2 * jSite2 - MIMETypes.java -
3 * Copyright © 2008 David Roden
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 package net.pterodactylus.util.io;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.List;
29 * Handles MIME types and maps them to file extensions.
31 * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
34 public class MimeTypes {
36 /** List of all MIME types. */
37 private static final List<String> mimeTypes = new ArrayList<String>();
39 /** Maps from MIME types to registered extensions. */
40 private static final Map<String, List<String>> mimeTypeExtensions = new HashMap<String, List<String>>();
42 /** Maps from extensions to registered MIME types. */
43 private static final Map<String, List<String>> extensionMimeTypes = new HashMap<String, List<String>>();
45 /* MIME type list generated from my /etc/mime.types. */
47 addMimeType("application/activemessage");
48 addMimeType("application/andrew-inset", "ez");
49 addMimeType("application/applefile");
50 addMimeType("application/atomicmail");
51 addMimeType("application/batch-SMTP");
52 addMimeType("application/beep+xml");
53 addMimeType("application/cals-1840");
54 addMimeType("application/commonground");
55 addMimeType("application/cu-seeme", "cu");
56 addMimeType("application/cybercash");
57 addMimeType("application/dca-rft");
58 addMimeType("application/dec-dx");
59 addMimeType("application/docbook+xml");
60 addMimeType("application/dsptype", "tsp");
61 addMimeType("application/dvcs");
62 addMimeType("application/edi-consent");
63 addMimeType("application/edi-x12");
64 addMimeType("application/edifact");
65 addMimeType("application/eshop");
66 addMimeType("application/font-tdpfr");
67 addMimeType("application/futuresplash", "spl");
68 addMimeType("application/ghostview");
69 addMimeType("application/hta", "hta");
70 addMimeType("application/http");
71 addMimeType("application/hyperstudio");
72 addMimeType("application/iges");
73 addMimeType("application/index");
74 addMimeType("application/index.cmd");
75 addMimeType("application/index.obj");
76 addMimeType("application/index.response");
77 addMimeType("application/index.vnd");
78 addMimeType("application/iotp");
79 addMimeType("application/ipp");
80 addMimeType("application/isup");
81 addMimeType("application/java-archive", "jar");
82 addMimeType("application/java-serialized-object", "ser");
83 addMimeType("application/java-vm", "class");
84 addMimeType("application/mac-binhex40", "hqx");
85 addMimeType("application/mac-compactpro", "cpt");
86 addMimeType("application/macwriteii");
87 addMimeType("application/marc");
88 addMimeType("application/mathematica", "nb");
89 addMimeType("application/mathematica-old");
90 addMimeType("application/msaccess", "mdb");
91 addMimeType("application/msword", "doc", "dot");
92 addMimeType("application/news-message-id");
93 addMimeType("application/news-transmission");
94 addMimeType("application/ocsp-request");
95 addMimeType("application/ocsp-response");
96 addMimeType("application/octet-stream", "bin");
97 addMimeType("application/oda", "oda");
98 addMimeType("application/ogg", "ogg");
99 addMimeType("application/parityfec");
100 addMimeType("application/pdf", "pdf");
101 addMimeType("application/pgp-encrypted");
102 addMimeType("application/pgp-keys", "key");
103 addMimeType("application/pgp-signature", "pgp");
104 addMimeType("application/pics-rules", "prf");
105 addMimeType("application/pkcs10");
106 addMimeType("application/pkcs7-mime");
107 addMimeType("application/pkcs7-signature");
108 addMimeType("application/pkix-cert");
109 addMimeType("application/pkix-crl");
110 addMimeType("application/pkixcmp");
111 addMimeType("application/postscript", "ps", "ai", "eps");
112 addMimeType("application/prs.alvestrand.titrax-sheet");
113 addMimeType("application/prs.cww");
114 addMimeType("application/prs.nprend");
115 addMimeType("application/qsig");
116 addMimeType("application/rar", "rar");
117 addMimeType("application/rdf+xml", "rdf");
118 addMimeType("application/remote-printing");
119 addMimeType("application/riscos");
120 addMimeType("application/rss+xml", "rss");
121 addMimeType("application/rtf");
122 addMimeType("application/sdp");
123 addMimeType("application/set-payment");
124 addMimeType("application/set-payment-initiation");
125 addMimeType("application/set-registration");
126 addMimeType("application/set-registration-initiation");
127 addMimeType("application/sgml");
128 addMimeType("application/sgml-open-catalog");
129 addMimeType("application/sieve");
130 addMimeType("application/slate");
131 addMimeType("application/smil", "smi", "smil");
132 addMimeType("application/timestamp-query");
133 addMimeType("application/timestamp-reply");
134 addMimeType("application/vemmi");
135 addMimeType("application/whoispp-query");
136 addMimeType("application/whoispp-response");
137 addMimeType("application/wita");
138 addMimeType("application/wordperfect", "wpd");
139 addMimeType("application/wordperfect5.1", "wp5");
140 addMimeType("application/x400-bp");
141 addMimeType("application/xhtml+xml", "xhtml", "xht");
142 addMimeType("application/xml", "xml", "xsl");
143 addMimeType("application/xml-dtd");
144 addMimeType("application/xml-external-parsed-entity");
145 addMimeType("application/zip", "zip");
146 addMimeType("application/vnd.3M.Post-it-Notes");
147 addMimeType("application/vnd.accpac.simply.aso");
148 addMimeType("application/vnd.accpac.simply.imp");
149 addMimeType("application/vnd.acucobol");
150 addMimeType("application/vnd.aether.imp");
151 addMimeType("application/vnd.anser-web-certificate-issue-initiation");
152 addMimeType("application/vnd.anser-web-funds-transfer-initiation");
153 addMimeType("application/vnd.audiograph");
154 addMimeType("application/vnd.bmi");
155 addMimeType("application/vnd.businessobjects");
156 addMimeType("application/vnd.canon-cpdl");
157 addMimeType("application/vnd.canon-lips");
158 addMimeType("application/vnd.cinderella", "cdy");
159 addMimeType("application/vnd.claymore");
160 addMimeType("application/vnd.commerce-battelle");
161 addMimeType("application/vnd.commonspace");
162 addMimeType("application/vnd.comsocaller");
163 addMimeType("application/vnd.contact.cmsg");
164 addMimeType("application/vnd.cosmocaller");
165 addMimeType("application/vnd.ctc-posml");
166 addMimeType("application/vnd.cups-postscript");
167 addMimeType("application/vnd.cups-raster");
168 addMimeType("application/vnd.cups-raw");
169 addMimeType("application/vnd.cybank");
170 addMimeType("application/vnd.dna");
171 addMimeType("application/vnd.dpgraph");
172 addMimeType("application/vnd.dxr");
173 addMimeType("application/vnd.ecdis-update");
174 addMimeType("application/vnd.ecowin.chart");
175 addMimeType("application/vnd.ecowin.filerequest");
176 addMimeType("application/vnd.ecowin.fileupdate");
177 addMimeType("application/vnd.ecowin.series");
178 addMimeType("application/vnd.ecowin.seriesrequest");
179 addMimeType("application/vnd.ecowin.seriesupdate");
180 addMimeType("application/vnd.enliven");
181 addMimeType("application/vnd.epson.esf");
182 addMimeType("application/vnd.epson.msf");
183 addMimeType("application/vnd.epson.quickanime");
184 addMimeType("application/vnd.epson.salt");
185 addMimeType("application/vnd.epson.ssf");
186 addMimeType("application/vnd.ericsson.quickcall");
187 addMimeType("application/vnd.eudora.data");
188 addMimeType("application/vnd.fdf");
189 addMimeType("application/vnd.ffsns");
190 addMimeType("application/vnd.flographit");
191 addMimeType("application/vnd.framemaker");
192 addMimeType("application/vnd.fsc.weblaunch");
193 addMimeType("application/vnd.fujitsu.oasys");
194 addMimeType("application/vnd.fujitsu.oasys2");
195 addMimeType("application/vnd.fujitsu.oasys3");
196 addMimeType("application/vnd.fujitsu.oasysgp");
197 addMimeType("application/vnd.fujitsu.oasysprs");
198 addMimeType("application/vnd.fujixerox.ddd");
199 addMimeType("application/vnd.fujixerox.docuworks");
200 addMimeType("application/vnd.fujixerox.docuworks.binder");
201 addMimeType("application/vnd.fut-misnet");
202 addMimeType("application/vnd.grafeq");
203 addMimeType("application/vnd.groove-account");
204 addMimeType("application/vnd.groove-identity-message");
205 addMimeType("application/vnd.groove-injector");
206 addMimeType("application/vnd.groove-tool-message");
207 addMimeType("application/vnd.groove-tool-template");
208 addMimeType("application/vnd.groove-vcard");
209 addMimeType("application/vnd.hhe.lesson-player");
210 addMimeType("application/vnd.hp-HPGL");
211 addMimeType("application/vnd.hp-PCL");
212 addMimeType("application/vnd.hp-PCLXL");
213 addMimeType("application/vnd.hp-hpid");
214 addMimeType("application/vnd.hp-hps");
215 addMimeType("application/vnd.httphone");
216 addMimeType("application/vnd.hzn-3d-crossword");
217 addMimeType("application/vnd.ibm.MiniPay");
218 addMimeType("application/vnd.ibm.afplinedata");
219 addMimeType("application/vnd.ibm.modcap");
220 addMimeType("application/vnd.informix-visionary");
221 addMimeType("application/vnd.intercon.formnet");
222 addMimeType("application/vnd.intertrust.digibox");
223 addMimeType("application/vnd.intertrust.nncp");
224 addMimeType("application/vnd.intu.qbo");
225 addMimeType("application/vnd.intu.qfx");
226 addMimeType("application/vnd.irepository.package+xml");
227 addMimeType("application/vnd.is-xpr");
228 addMimeType("application/vnd.japannet-directory-service");
229 addMimeType("application/vnd.japannet-jpnstore-wakeup");
230 addMimeType("application/vnd.japannet-payment-wakeup");
231 addMimeType("application/vnd.japannet-registration");
232 addMimeType("application/vnd.japannet-registration-wakeup");
233 addMimeType("application/vnd.japannet-setstore-wakeup");
234 addMimeType("application/vnd.japannet-verification");
235 addMimeType("application/vnd.japannet-verification-wakeup");
236 addMimeType("application/vnd.koan");
237 addMimeType("application/vnd.lotus-1-2-3");
238 addMimeType("application/vnd.lotus-approach");
239 addMimeType("application/vnd.lotus-freelance");
240 addMimeType("application/vnd.lotus-notes");
241 addMimeType("application/vnd.lotus-organizer");
242 addMimeType("application/vnd.lotus-screencam");
243 addMimeType("application/vnd.lotus-wordpro");
244 addMimeType("application/vnd.mcd");
245 addMimeType("application/vnd.mediastation.cdkey");
246 addMimeType("application/vnd.meridian-slingshot");
247 addMimeType("application/vnd.mif");
248 addMimeType("application/vnd.minisoft-hp3000-save");
249 addMimeType("application/vnd.mitsubishi.misty-guard.trustweb");
250 addMimeType("application/vnd.mobius.daf");
251 addMimeType("application/vnd.mobius.dis");
252 addMimeType("application/vnd.mobius.msl");
253 addMimeType("application/vnd.mobius.plc");
254 addMimeType("application/vnd.mobius.txf");
255 addMimeType("application/vnd.motorola.flexsuite");
256 addMimeType("application/vnd.motorola.flexsuite.adsi");
257 addMimeType("application/vnd.motorola.flexsuite.fis");
258 addMimeType("application/vnd.motorola.flexsuite.gotap");
259 addMimeType("application/vnd.motorola.flexsuite.kmr");
260 addMimeType("application/vnd.motorola.flexsuite.ttc");
261 addMimeType("application/vnd.motorola.flexsuite.wem");
262 addMimeType("application/vnd.mozilla.xul+xml", "xul");
263 addMimeType("application/vnd.ms-artgalry");
264 addMimeType("application/vnd.ms-asf");
265 addMimeType("application/vnd.ms-excel", "xls", "xlb", "xlt");
266 addMimeType("application/vnd.ms-lrm");
267 addMimeType("application/vnd.ms-pki.seccat", "cat");
268 addMimeType("application/vnd.ms-pki.stl", "stl");
269 addMimeType("application/vnd.ms-powerpoint", "ppt", "pps");
270 addMimeType("application/vnd.ms-project");
271 addMimeType("application/vnd.ms-tnef");
272 addMimeType("application/vnd.ms-works");
273 addMimeType("application/vnd.mseq");
274 addMimeType("application/vnd.msign");
275 addMimeType("application/vnd.music-niff");
276 addMimeType("application/vnd.musician");
277 addMimeType("application/vnd.netfpx");
278 addMimeType("application/vnd.noblenet-directory");
279 addMimeType("application/vnd.noblenet-sealer");
280 addMimeType("application/vnd.noblenet-web");
281 addMimeType("application/vnd.novadigm.EDM");
282 addMimeType("application/vnd.novadigm.EDX");
283 addMimeType("application/vnd.novadigm.EXT");
284 addMimeType("application/vnd.oasis.opendocument.chart", "odc");
285 addMimeType("application/vnd.oasis.opendocument.database", "odb");
286 addMimeType("application/vnd.oasis.opendocument.formula", "odf");
287 addMimeType("application/vnd.oasis.opendocument.graphics", "odg");
288 addMimeType("application/vnd.oasis.opendocument.graphics-template", "otg");
289 addMimeType("application/vnd.oasis.opendocument.image", "odi");
290 addMimeType("application/vnd.oasis.opendocument.presentation", "odp");
291 addMimeType("application/vnd.oasis.opendocument.presentation-template", "otp");
292 addMimeType("application/vnd.oasis.opendocument.spreadsheet", "ods");
293 addMimeType("application/vnd.oasis.opendocument.spreadsheet-template", "ots");
294 addMimeType("application/vnd.oasis.opendocument.text", "odt");
295 addMimeType("application/vnd.oasis.opendocument.text-master", "odm");
296 addMimeType("application/vnd.oasis.opendocument.text-template", "ott");
297 addMimeType("application/vnd.oasis.opendocument.text-web", "oth");
298 addMimeType("application/vnd.osa.netdeploy");
299 addMimeType("application/vnd.palm");
300 addMimeType("application/vnd.pg.format");
301 addMimeType("application/vnd.pg.osasli");
302 addMimeType("application/vnd.powerbuilder6");
303 addMimeType("application/vnd.powerbuilder6-s");
304 addMimeType("application/vnd.powerbuilder7");
305 addMimeType("application/vnd.powerbuilder7-s");
306 addMimeType("application/vnd.powerbuilder75");
307 addMimeType("application/vnd.powerbuilder75-s");
308 addMimeType("application/vnd.previewsystems.box");
309 addMimeType("application/vnd.publishare-delta-tree");
310 addMimeType("application/vnd.pvi.ptid1");
311 addMimeType("application/vnd.pwg-xhtml-print+xml");
312 addMimeType("application/vnd.rapid");
313 addMimeType("application/vnd.rim.cod", "cod");
314 addMimeType("application/vnd.s3sms");
315 addMimeType("application/vnd.seemail");
316 addMimeType("application/vnd.shana.informed.formdata");
317 addMimeType("application/vnd.shana.informed.formtemplate");
318 addMimeType("application/vnd.shana.informed.interchange");
319 addMimeType("application/vnd.shana.informed.package");
320 addMimeType("application/vnd.smaf", "mmf");
321 addMimeType("application/vnd.sss-cod");
322 addMimeType("application/vnd.sss-dtf");
323 addMimeType("application/vnd.sss-ntf");
324 addMimeType("application/vnd.stardivision.calc", "sdc");
325 addMimeType("application/vnd.stardivision.draw", "sda");
326 addMimeType("application/vnd.stardivision.impress", "sdd", "sdp");
327 addMimeType("application/vnd.stardivision.math", "smf");
328 addMimeType("application/vnd.stardivision.writer", "sdw", "vor");
329 addMimeType("application/vnd.stardivision.writer-global", "sgl");
330 addMimeType("application/vnd.street-stream");
331 addMimeType("application/vnd.sun.xml.calc", "sxc");
332 addMimeType("application/vnd.sun.xml.calc.template", "stc");
333 addMimeType("application/vnd.sun.xml.draw", "sxd");
334 addMimeType("application/vnd.sun.xml.draw.template", "std");
335 addMimeType("application/vnd.sun.xml.impress", "sxi");
336 addMimeType("application/vnd.sun.xml.impress.template", "sti");
337 addMimeType("application/vnd.sun.xml.math", "sxm");
338 addMimeType("application/vnd.sun.xml.writer", "sxw");
339 addMimeType("application/vnd.sun.xml.writer.global", "sxg");
340 addMimeType("application/vnd.sun.xml.writer.template", "stw");
341 addMimeType("application/vnd.svd");
342 addMimeType("application/vnd.swiftview-ics");
343 addMimeType("application/vnd.symbian.install", "sis");
344 addMimeType("application/vnd.triscape.mxs");
345 addMimeType("application/vnd.trueapp");
346 addMimeType("application/vnd.truedoc");
347 addMimeType("application/vnd.tve-trigger");
348 addMimeType("application/vnd.ufdl");
349 addMimeType("application/vnd.uplanet.alert");
350 addMimeType("application/vnd.uplanet.alert-wbxml");
351 addMimeType("application/vnd.uplanet.bearer-choice");
352 addMimeType("application/vnd.uplanet.bearer-choice-wbxml");
353 addMimeType("application/vnd.uplanet.cacheop");
354 addMimeType("application/vnd.uplanet.cacheop-wbxml");
355 addMimeType("application/vnd.uplanet.channel");
356 addMimeType("application/vnd.uplanet.channel-wbxml");
357 addMimeType("application/vnd.uplanet.list");
358 addMimeType("application/vnd.uplanet.list-wbxml");
359 addMimeType("application/vnd.uplanet.listcmd");
360 addMimeType("application/vnd.uplanet.listcmd-wbxml");
361 addMimeType("application/vnd.uplanet.signal");
362 addMimeType("application/vnd.vcx");
363 addMimeType("application/vnd.vectorworks");
364 addMimeType("application/vnd.vidsoft.vidconference");
365 addMimeType("application/vnd.visio", "vsd");
366 addMimeType("application/vnd.vividence.scriptfile");
367 addMimeType("application/vnd.wap.sic");
368 addMimeType("application/vnd.wap.slc");
369 addMimeType("application/vnd.wap.wbxml", "wbxml");
370 addMimeType("application/vnd.wap.wmlc", "wmlc");
371 addMimeType("application/vnd.wap.wmlscriptc", "wmlsc");
372 addMimeType("application/vnd.webturbo");
373 addMimeType("application/vnd.wrq-hp3000-labelled");
374 addMimeType("application/vnd.wt.stf");
375 addMimeType("application/vnd.xara");
376 addMimeType("application/vnd.xfdl");
377 addMimeType("application/vnd.yellowriver-custom-menu");
378 addMimeType("application/x-123", "wk");
379 addMimeType("application/x-abiword", "abw");
380 addMimeType("application/x-apple-diskimage", "dmg");
381 addMimeType("application/x-bcpio", "bcpio");
382 addMimeType("application/x-bittorrent", "torrent");
383 addMimeType("application/x-cdf", "cdf");
384 addMimeType("application/x-cdlink", "vcd");
385 addMimeType("application/x-chess-pgn", "pgn");
386 addMimeType("application/x-core");
387 addMimeType("application/x-cpio", "cpio");
388 addMimeType("application/x-csh", "csh");
389 addMimeType("application/x-debian-package", "deb", "udeb");
390 addMimeType("application/x-director", "dcr", "dir", "dxr");
391 addMimeType("application/x-dms", "dms");
392 addMimeType("application/x-doom", "wad");
393 addMimeType("application/x-dvi", "dvi");
394 addMimeType("application/x-executable");
395 addMimeType("application/x-flac", "flac");
396 addMimeType("application/x-font", "pfa", "pfb", "gsf", "pcf", "pcf.Z");
397 addMimeType("application/x-freemind", "mm");
398 addMimeType("application/x-futuresplash", "spl");
399 addMimeType("application/x-gnumeric", "gnumeric");
400 addMimeType("application/x-go-sgf", "sgf");
401 addMimeType("application/x-graphing-calculator", "gcf");
402 addMimeType("application/x-gtar", "gtar", "tgz", "taz");
403 addMimeType("application/x-hdf", "hdf");
404 addMimeType("application/x-ica", "ica");
405 addMimeType("application/x-internet-signup", "ins", "isp");
406 addMimeType("application/x-iphone", "iii");
407 addMimeType("application/x-iso9660-image", "iso");
408 addMimeType("application/x-java-applet");
409 addMimeType("application/x-java-bean");
410 addMimeType("application/x-java-jnlp-file", "jnlp");
411 addMimeType("application/x-javascript", "js");
412 addMimeType("application/x-jmol", "jmz");
413 addMimeType("application/x-kchart", "chrt");
414 addMimeType("application/x-kdelnk");
415 addMimeType("application/x-killustrator", "kil");
416 addMimeType("application/x-koan", "skp", "skd", "skt", "skm");
417 addMimeType("application/x-kpresenter", "kpr", "kpt");
418 addMimeType("application/x-kspread", "ksp");
419 addMimeType("application/x-kword", "kwd", "kwt");
420 addMimeType("application/x-latex", "latex");
421 addMimeType("application/x-lha", "lha");
422 addMimeType("application/x-lzh", "lzh");
423 addMimeType("application/x-lzx", "lzx");
424 addMimeType("application/x-maker", "frm", "maker", "frame", "fm", "fb", "book", "fbdoc");
425 addMimeType("application/x-mif", "mif");
426 addMimeType("application/x-ms-wmd", "wmd");
427 addMimeType("application/x-ms-wmz", "wmz");
428 addMimeType("application/x-msdos-program", "com", "exe", "bat", "dll");
429 addMimeType("application/x-msi", "msi");
430 addMimeType("application/x-netcdf", "nc");
431 addMimeType("application/x-ns-proxy-autoconfig", "pac");
432 addMimeType("application/x-nwc", "nwc");
433 addMimeType("application/x-object", "o");
434 addMimeType("application/x-oz-application", "oza");
435 addMimeType("application/x-pkcs7-certreqresp", "p7r");
436 addMimeType("application/x-pkcs7-crl", "crl");
437 addMimeType("application/x-python-code", "pyc", "pyo");
438 addMimeType("application/x-quicktimeplayer", "qtl");
439 addMimeType("application/x-redhat-package-manager", "rpm");
440 addMimeType("application/x-rx");
441 addMimeType("application/x-sh", "sh");
442 addMimeType("application/x-shar", "shar");
443 addMimeType("application/x-shellscript");
444 addMimeType("application/x-shockwave-flash", "swf", "swfl");
445 addMimeType("application/x-stuffit", "sit");
446 addMimeType("application/x-sv4cpio", "sv4cpio");
447 addMimeType("application/x-sv4crc", "sv4crc");
448 addMimeType("application/x-tar", "tar");
449 addMimeType("application/x-tcl", "tcl");
450 addMimeType("application/x-tex-gf", "gf");
451 addMimeType("application/x-tex-pk", "pk");
452 addMimeType("application/x-texinfo", "texinfo", "texi");
453 addMimeType("application/x-trash", "~", "%", "bak", "old", "sik");
454 addMimeType("application/x-troff", "t", "tr", "roff");
455 addMimeType("application/x-troff-man", "man");
456 addMimeType("application/x-troff-me", "me");
457 addMimeType("application/x-troff-ms", "ms");
458 addMimeType("application/x-ustar", "ustar");
459 addMimeType("application/x-videolan");
460 addMimeType("application/x-wais-source", "src");
461 addMimeType("application/x-wingz", "wz");
462 addMimeType("application/x-x509-ca-cert", "crt");
463 addMimeType("application/x-xcf", "xcf");
464 addMimeType("application/x-xfig", "fig");
465 addMimeType("application/x-xpinstall", "xpi");
466 addMimeType("audio/32kadpcm");
467 addMimeType("audio/basic", "au", "snd");
468 addMimeType("audio/dvi4");
469 addMimeType("audio/g.722.1");
470 addMimeType("audio/g722");
471 addMimeType("audio/g723");
472 addMimeType("audio/g726-16");
473 addMimeType("audio/g726-24");
474 addMimeType("audio/g726-32");
475 addMimeType("audio/g726-40");
476 addMimeType("audio/g728");
477 addMimeType("audio/g729");
478 addMimeType("audio/g729d");
479 addMimeType("audio/g729e");
480 addMimeType("audio/gsm");
481 addMimeType("audio/gsm-efr");
482 addMimeType("audio/l8");
483 addMimeType("audio/l16");
484 addMimeType("audio/lpc");
485 addMimeType("audio/midi", "mid", "midi", "kar");
486 addMimeType("audio/mp4a-latm");
487 addMimeType("audio/mpa");
488 addMimeType("audio/mpa-robust");
489 addMimeType("audio/mpeg", "mpga", "mpega", "mp2", "mp3", "m4a");
490 addMimeType("audio/mpegurl", "m3u");
491 addMimeType("audio/parityfec");
492 addMimeType("audio/pcma");
493 addMimeType("audio/pcmu");
494 addMimeType("audio/prs.sid", "sid");
495 addMimeType("audio/qcelp");
496 addMimeType("audio/red");
497 addMimeType("audio/telephone-event");
498 addMimeType("audio/tone");
499 addMimeType("audio/vdvi");
500 addMimeType("audio/vnd.cisco.nse");
501 addMimeType("audio/vnd.cns.anp1");
502 addMimeType("audio/vnd.cns.inf1");
503 addMimeType("audio/vnd.digital-winds");
504 addMimeType("audio/vnd.everad.plj");
505 addMimeType("audio/vnd.lucent.voice");
506 addMimeType("audio/vnd.nortel.vbk");
507 addMimeType("audio/vnd.nuera.ecelp4800");
508 addMimeType("audio/vnd.nuera.ecelp7470");
509 addMimeType("audio/vnd.nuera.ecelp9600");
510 addMimeType("audio/vnd.octel.sbc");
511 addMimeType("audio/vnd.qcelp");
512 addMimeType("audio/vnd.rhetorex.32kadpcm");
513 addMimeType("audio/vnd.vmx.cvsd");
514 addMimeType("audio/x-aiff", "aif", "aiff", "aifc");
515 addMimeType("audio/x-gsm", "gsm");
516 addMimeType("audio/x-mpegurl", "m3u");
517 addMimeType("audio/x-ms-wma", "wma");
518 addMimeType("audio/x-ms-wax", "wax");
519 addMimeType("audio/x-pn-realaudio-plugin");
520 addMimeType("audio/x-pn-realaudio", "ra", "rm", "ram");
521 addMimeType("audio/x-realaudio", "ra");
522 addMimeType("audio/x-scpls", "pls");
523 addMimeType("audio/x-sd2", "sd2");
524 addMimeType("audio/x-wav", "wav");
525 addMimeType("chemical/x-alchemy", "alc");
526 addMimeType("chemical/x-cache", "cac", "cache");
527 addMimeType("chemical/x-cache-csf", "csf");
528 addMimeType("chemical/x-cactvs-binary", "cbin", "cascii", "ctab");
529 addMimeType("chemical/x-cdx", "cdx");
530 addMimeType("chemical/x-cerius", "cer");
531 addMimeType("chemical/x-chem3d", "c3d");
532 addMimeType("chemical/x-chemdraw", "chm");
533 addMimeType("chemical/x-cif", "cif");
534 addMimeType("chemical/x-cmdf", "cmdf");
535 addMimeType("chemical/x-cml", "cml");
536 addMimeType("chemical/x-compass", "cpa");
537 addMimeType("chemical/x-crossfire", "bsd");
538 addMimeType("chemical/x-csml", "csml", "csm");
539 addMimeType("chemical/x-ctx", "ctx");
540 addMimeType("chemical/x-cxf", "cxf", "cef");
541 addMimeType("chemical/x-embl-dl-nucleotide", "emb", "embl");
542 addMimeType("chemical/x-galactic-spc", "spc");
543 addMimeType("chemical/x-gamess-input", "inp", "gam", "gamin");
544 addMimeType("chemical/x-gaussian-checkpoint", "fch", "fchk");
545 addMimeType("chemical/x-gaussian-cube", "cub");
546 addMimeType("chemical/x-gaussian-input", "gau", "gjc", "gjf");
547 addMimeType("chemical/x-gaussian-log", "gal");
548 addMimeType("chemical/x-gcg8-sequence", "gcg");
549 addMimeType("chemical/x-genbank", "gen");
550 addMimeType("chemical/x-hin", "hin");
551 addMimeType("chemical/x-isostar", "istr", "ist");
552 addMimeType("chemical/x-jcamp-dx", "jdx", "dx");
553 addMimeType("chemical/x-kinemage", "kin");
554 addMimeType("chemical/x-macmolecule", "mcm");
555 addMimeType("chemical/x-macromodel-input", "mmd", "mmod");
556 addMimeType("chemical/x-mdl-molfile", "mol");
557 addMimeType("chemical/x-mdl-rdfile", "rd");
558 addMimeType("chemical/x-mdl-rxnfile", "rxn");
559 addMimeType("chemical/x-mdl-sdfile", "sd", "sdf");
560 addMimeType("chemical/x-mdl-tgf", "tgf");
561 addMimeType("chemical/x-mmcif", "mcif");
562 addMimeType("chemical/x-mol2", "mol2");
563 addMimeType("chemical/x-molconn-Z", "b");
564 addMimeType("chemical/x-mopac-graph", "gpt");
565 addMimeType("chemical/x-mopac-input", "mop", "mopcrt", "mpc", "dat", "zmt");
566 addMimeType("chemical/x-mopac-out", "moo");
567 addMimeType("chemical/x-mopac-vib", "mvb");
568 addMimeType("chemical/x-ncbi-asn1", "asn");
569 addMimeType("chemical/x-ncbi-asn1-ascii", "prt", "ent");
570 addMimeType("chemical/x-ncbi-asn1-binary", "val", "aso");
571 addMimeType("chemical/x-ncbi-asn1-spec", "asn");
572 addMimeType("chemical/x-pdb", "pdb", "ent");
573 addMimeType("chemical/x-rosdal", "ros");
574 addMimeType("chemical/x-swissprot", "sw");
575 addMimeType("chemical/x-vamas-iso14976", "vms");
576 addMimeType("chemical/x-vmd", "vmd");
577 addMimeType("chemical/x-xtel", "xtel");
578 addMimeType("chemical/x-xyz", "xyz");
579 addMimeType("image/cgm");
580 addMimeType("image/g3fax");
581 addMimeType("image/gif", "gif");
582 addMimeType("image/ief", "ief");
583 addMimeType("image/jpeg", "jpeg", "jpg", "jpe");
584 addMimeType("image/naplps");
585 addMimeType("image/pcx", "pcx");
586 addMimeType("image/png", "png");
587 addMimeType("image/prs.btif");
588 addMimeType("image/prs.pti");
589 addMimeType("image/svg+xml", "svg", "svgz");
590 addMimeType("image/tiff", "tiff", "tif");
591 addMimeType("image/vnd.cns.inf2");
592 addMimeType("image/vnd.djvu", "djvu", "djv");
593 addMimeType("image/vnd.dwg");
594 addMimeType("image/vnd.dxf");
595 addMimeType("image/vnd.fastbidsheet");
596 addMimeType("image/vnd.fpx");
597 addMimeType("image/vnd.fst");
598 addMimeType("image/vnd.fujixerox.edmics-mmr");
599 addMimeType("image/vnd.fujixerox.edmics-rlc");
600 addMimeType("image/vnd.mix");
601 addMimeType("image/vnd.net-fpx");
602 addMimeType("image/vnd.svf");
603 addMimeType("image/vnd.wap.wbmp", "wbmp");
604 addMimeType("image/vnd.xiff");
605 addMimeType("image/x-cmu-raster", "ras");
606 addMimeType("image/x-coreldraw", "cdr");
607 addMimeType("image/x-coreldrawpattern", "pat");
608 addMimeType("image/x-coreldrawtemplate", "cdt");
609 addMimeType("image/x-corelphotopaint", "cpt");
610 addMimeType("image/x-icon", "ico");
611 addMimeType("image/x-jg", "art");
612 addMimeType("image/x-jng", "jng");
613 addMimeType("image/x-ms-bmp", "bmp");
614 addMimeType("image/x-photoshop", "psd");
615 addMimeType("image/x-portable-anymap", "pnm");
616 addMimeType("image/x-portable-bitmap", "pbm");
617 addMimeType("image/x-portable-graymap", "pgm");
618 addMimeType("image/x-portable-pixmap", "ppm");
619 addMimeType("image/x-rgb", "rgb");
620 addMimeType("image/x-xbitmap", "xbm");
621 addMimeType("image/x-xpixmap", "xpm");
622 addMimeType("image/x-xwindowdump", "xwd");
623 addMimeType("inode/chardevice");
624 addMimeType("inode/blockdevice");
625 addMimeType("inode/directory-locked");
626 addMimeType("inode/directory");
627 addMimeType("inode/fifo");
628 addMimeType("inode/socket");
629 addMimeType("message/delivery-status");
630 addMimeType("message/disposition-notification");
631 addMimeType("message/external-body");
632 addMimeType("message/http");
633 addMimeType("message/s-http");
634 addMimeType("message/news");
635 addMimeType("message/partial");
636 addMimeType("message/rfc822");
637 addMimeType("model/iges", "igs", "iges");
638 addMimeType("model/mesh", "msh", "mesh", "silo");
639 addMimeType("model/vnd.dwf");
640 addMimeType("model/vnd.flatland.3dml");
641 addMimeType("model/vnd.gdl");
642 addMimeType("model/vnd.gs-gdl");
643 addMimeType("model/vnd.gtw");
644 addMimeType("model/vnd.mts");
645 addMimeType("model/vnd.vtu");
646 addMimeType("model/vrml", "wrl", "vrml");
647 addMimeType("multipart/alternative");
648 addMimeType("multipart/appledouble");
649 addMimeType("multipart/byteranges");
650 addMimeType("multipart/digest");
651 addMimeType("multipart/encrypted");
652 addMimeType("multipart/form-data");
653 addMimeType("multipart/header-set");
654 addMimeType("multipart/mixed");
655 addMimeType("multipart/parallel");
656 addMimeType("multipart/related");
657 addMimeType("multipart/report");
658 addMimeType("multipart/signed");
659 addMimeType("multipart/voice-message");
660 addMimeType("text/calendar", "ics", "icz");
661 addMimeType("text/comma-separated-values", "csv");
662 addMimeType("text/css", "css");
663 addMimeType("text/directory");
664 addMimeType("text/english");
665 addMimeType("text/enriched");
666 addMimeType("text/h323", "323");
667 addMimeType("text/html", "html", "htm", "shtml");
668 addMimeType("text/iuls", "uls");
669 addMimeType("text/mathml", "mml");
670 addMimeType("text/parityfec");
671 addMimeType("text/plain", "asc", "txt", "text", "diff", "pot");
672 addMimeType("text/prs.lines.tag");
673 addMimeType("text/x-psp", "psp");
674 addMimeType("text/rfc822-headers");
675 addMimeType("text/richtext", "rtx");
676 addMimeType("text/rtf", "rtf");
677 addMimeType("text/scriptlet", "sct", "wsc");
678 addMimeType("text/t140");
679 addMimeType("text/texmacs", "tm", "ts");
680 addMimeType("text/tab-separated-values", "tsv");
681 addMimeType("text/uri-list");
682 addMimeType("text/vnd.abc");
683 addMimeType("text/vnd.curl");
684 addMimeType("text/vnd.DMClientScript");
685 addMimeType("text/vnd.flatland.3dml");
686 addMimeType("text/vnd.fly");
687 addMimeType("text/vnd.fmi.flexstor");
688 addMimeType("text/vnd.in3d.3dml");
689 addMimeType("text/vnd.in3d.spot");
690 addMimeType("text/vnd.IPTC.NewsML");
691 addMimeType("text/vnd.IPTC.NITF");
692 addMimeType("text/vnd.latex-z");
693 addMimeType("text/vnd.motorola.reflex");
694 addMimeType("text/vnd.ms-mediapackage");
695 addMimeType("text/vnd.sun.j2me.app-descriptor", "jad");
696 addMimeType("text/vnd.wap.si");
697 addMimeType("text/vnd.wap.sl");
698 addMimeType("text/vnd.wap.wml", "wml");
699 addMimeType("text/vnd.wap.wmlscript", "wmls");
700 addMimeType("text/x-bibtex", "bib");
701 addMimeType("text/x-c++hdr", "h++", "hpp", "hxx", "hh");
702 addMimeType("text/x-c++src", "c++", "cpp", "cxx", "cc");
703 addMimeType("text/x-chdr", "h");
704 addMimeType("text/x-crontab");
705 addMimeType("text/x-csh", "csh");
706 addMimeType("text/x-csrc", "c");
707 addMimeType("text/x-haskell", "hs");
708 addMimeType("text/x-java", "java");
709 addMimeType("text/x-literate-haskell", "lhs");
710 addMimeType("text/x-makefile");
711 addMimeType("text/x-moc", "moc");
712 addMimeType("text/x-pascal", "p", "pas");
713 addMimeType("text/x-pcs-gcd", "gcd");
714 addMimeType("text/x-perl", "pl", "pm");
715 addMimeType("text/x-python", "py");
716 addMimeType("text/x-server-parsed-html");
717 addMimeType("text/x-setext", "etx");
718 addMimeType("text/x-sh", "sh");
719 addMimeType("text/x-tcl", "tcl", "tk");
720 addMimeType("text/x-tex", "tex", "ltx", "sty", "cls");
721 addMimeType("text/x-vcalendar", "vcs");
722 addMimeType("text/x-vcard", "vcf");
723 addMimeType("video/bmpeg");
724 addMimeType("video/bt656");
725 addMimeType("video/celb");
726 addMimeType("video/dl", "dl");
727 addMimeType("video/dv", "dif", "dv");
728 addMimeType("video/fli", "fli");
729 addMimeType("video/gl", "gl");
730 addMimeType("video/jpeg");
731 addMimeType("video/h261");
732 addMimeType("video/h263");
733 addMimeType("video/h263-1998");
734 addMimeType("video/h263-2000");
735 addMimeType("video/mp1s");
736 addMimeType("video/mp2p");
737 addMimeType("video/mp2t");
738 addMimeType("video/mp4", "mp4");
739 addMimeType("video/mp4v-es");
740 addMimeType("video/mpeg", "mpeg", "mpg", "mpe");
741 addMimeType("video/mpv");
742 addMimeType("video/nv");
743 addMimeType("video/parityfec");
744 addMimeType("video/pointer");
745 addMimeType("video/quicktime", "qt", "mov");
746 addMimeType("video/vnd.fvt");
747 addMimeType("video/vnd.motorola.video");
748 addMimeType("video/vnd.motorola.videop");
749 addMimeType("video/vnd.mpegurl", "mxu");
750 addMimeType("video/vnd.mts");
751 addMimeType("video/vnd.nokia.interleaved-multimedia");
752 addMimeType("video/vnd.vivo");
753 addMimeType("video/x-la-asf", "lsf", "lsx");
754 addMimeType("video/x-mng", "mng");
755 addMimeType("video/x-ms-asf", "asf", "asx");
756 addMimeType("video/x-ms-wm", "wm");
757 addMimeType("video/x-ms-wmv", "wmv");
758 addMimeType("video/x-ms-wmx", "wmx");
759 addMimeType("video/x-ms-wvx", "wvx");
760 addMimeType("video/x-msvideo", "avi");
761 addMimeType("video/x-sgi-movie", "movie");
762 addMimeType("video/x-flv", "flv");
763 addMimeType("x-conference/x-cooltalk", "ice");
764 addMimeType("x-world/x-vrml", "vrm", "vrml", "wrl");
768 * Returns a list of all known MIME types.
770 * @return All known MIME types
772 public List<String> getAllMimeTypes() {
777 * Returns a list of MIME types that are registered for the given extension.
780 * The extension to get the MIME types for
781 * @return A list of MIME types, or an empty list if there are no registered
782 * MIME types for the extension
784 public List<String> getMimeTypes(String extension) {
785 if (extensionMimeTypes.containsKey(extension)) {
786 return extensionMimeTypes.get(extension);
788 return Collections.emptyList();
796 * Adds a MIME type and optional extensions.
799 * The MIME type to add
801 * The extension the MIME type is registered for
803 private static void addMimeType(String mimeType, String... extensions) {
804 mimeTypes.add(mimeType);
805 for (String extension: extensions) {
806 if (!mimeTypeExtensions.containsKey(mimeType)) {
807 mimeTypeExtensions.put(mimeType, new ArrayList<String>());
809 mimeTypeExtensions.get(mimeType).add(extension);
810 if (!extensionMimeTypes.containsKey(extension)) {
811 extensionMimeTypes.put(extension, new ArrayList<String>());
813 extensionMimeTypes.get(extension).add(mimeType);