Utility class for declaring MIME types to use for various requests and provide * utility manipulation methods.
*Added Content-Encoding capability, with defaults * * @author Rapha\u00ebl Luta * @author Santiago Gala * @version $Id: MimeType.java 516448 2007-03-09 16:25:47Z ate $ */ public class MimeType { public static final MimeType HTML = new MimeType("text/html", "UTF-8"); //FIXME: test public static final MimeType XHTML = new MimeType("text/xhtml"); public static final MimeType WML = new MimeType("text/vnd.wap.wml"); public static final MimeType XML = new MimeType("text/xml"); public static final MimeType VXML = new MimeType("text/vxml"); /** * Standard ContentType String, with no encoding appended. */ private String mimeType = ""; /** * null value means default encoding. * Otherwise, charset to be used. */ private String charSet = null; public MimeType(String mimeType) { if (mimeType == null) { throw new NullPointerException(); } this.mimeType = mimeType; } /** * */ public MimeType(String mimeType, String charSet) { if (mimeType == null) { throw new NullPointerException(); } this.mimeType = mimeType; this.charSet = charSet; } /** Extracts from this MimeType a user-friendly identifying code * ie "html" for "text/html" or "wml" for "text/vnd.wap.wml" * * @return the simplified type */ public String getCode() { String type = this.mimeType; // get everything after "/" type = type.substring(type.indexOf("/") + 1); // remove any dot in the name int idx = type.lastIndexOf("."); if (idx >= 0) { type = type.substring(idx + 1); } //remove anything before a "-" idx = type.lastIndexOf("-"); if (idx >= 0) { type = type.substring(idx + 1); } return type.toLowerCase(); } /** * Return the media type associated */ public String getContentType() { return this.mimeType; } /** * Return the character encoding associated, if any */ public String getCharSet() { return this.charSet; } /** * Convert this MimeType to its external String representation */ public String toString() { if (null == this.charSet) { return this.mimeType; } return this.mimeType + "; charset=" + this.charSet; } /** * Compare one MimeType to another */ public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof MimeType) { MimeType comp = (MimeType) obj; return this.toString().equals(comp.toString()); } else { return false; } } }