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