- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 04 Aug 2012 21:17:10 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/www/mime In directory hutz:/tmp/cvs-serv31218/w3c/www/mime Modified Files: MimeType.java Log Message: font revamp, still some missing properties for CSS3 and @font-face for CSS2 and CSS3 Index: MimeType.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/www/mime/MimeType.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- MimeType.java 3 Apr 2012 14:20:54 -0000 1.6 +++ MimeType.java 4 Aug 2012 21:17:07 -0000 1.7 @@ -3,7 +3,7 @@ // (c) COPYRIGHT MIT and INRIA, 1996. // Please first read the full copyright statement in file COPYRIGHT.html -package org.w3c.www.mime ; +package org.w3c.www.mime; import java.io.Serializable; import java.util.ArrayList; @@ -15,432 +15,441 @@ */ public class MimeType implements Serializable, Cloneable { - /** - * List of well known MIME types: - */ - public static MimeType TEXT_HTML = null ; - public static MimeType APPLICATION_POSTSCRIPT = null ; - public static MimeType TEXT_PLAIN = null ; - public static MimeType APPLICATION_X_WWW_FORM_URLENCODED = null ; - public static MimeType APPLICATION_OCTET_STREAM = null ; - public static MimeType MULTIPART_FORM_DATA = null ; - public static MimeType APPLICATION_X_JAVA_AGENT = null ; - public static MimeType MESSAGE_HTTP = null ; - public static MimeType TEXT_CSS = null ; - public static MimeType TEXT_XML = null ; - public static MimeType APPLICATION_XML = null ; - public static MimeType TEXT = null ; - public static MimeType APPLICATION_RDF_XML = null ; - public static MimeType APPLICATION_XHTML_XML = null ; + /** + * List of well known MIME types: + */ + public static MimeType TEXT_HTML = null; + public static MimeType APPLICATION_POSTSCRIPT = null; + public static MimeType TEXT_PLAIN = null; + public static MimeType APPLICATION_X_WWW_FORM_URLENCODED = null; + public static MimeType APPLICATION_OCTET_STREAM = null; + public static MimeType MULTIPART_FORM_DATA = null; + public static MimeType APPLICATION_X_JAVA_AGENT = null; + public static MimeType MESSAGE_HTTP = null; + public static MimeType TEXT_CSS = null; + public static MimeType TEXT_XML = null; + public static MimeType APPLICATION_XML = null; + public static MimeType TEXT = null; + public static MimeType APPLICATION_RDF_XML = null; + public static MimeType APPLICATION_XHTML_XML = null; - public static String star = "*".intern(); + public static String star = "*".intern(); - static { - try { - TEXT_HTML - = new MimeType("text/html"); - APPLICATION_POSTSCRIPT - = new MimeType ("application/postscript") ; - TEXT_PLAIN - = new MimeType("text/plain") ; - APPLICATION_X_WWW_FORM_URLENCODED - = new MimeType("application/x-www-form-urlencoded") ; - APPLICATION_OCTET_STREAM - = new MimeType("application/octet-stream") ; - MULTIPART_FORM_DATA - = new MimeType("multipart/form-data") ; - APPLICATION_X_JAVA_AGENT - = new MimeType("application/x-java-agent") ; - MESSAGE_HTTP - = new MimeType("message/http"); - TEXT_CSS - = new MimeType("text/css"); - TEXT_XML - = new MimeType("text/xml"); - TEXT - = new MimeType("text/*"); - APPLICATION_RDF_XML - = new MimeType("application/rdf+xml"); - APPLICATION_XHTML_XML - = new MimeType("application/xhtml+xml"); - APPLICATION_XML - = new MimeType("application/xml"); - } catch (MimeTypeFormatException e) { - System.out.println ("httpd.MimeType: invalid static init.") ; - System.exit (1) ; + static { + try { + TEXT_HTML + = new MimeType("text/html"); + APPLICATION_POSTSCRIPT + = new MimeType("application/postscript"); + TEXT_PLAIN + = new MimeType("text/plain"); + APPLICATION_X_WWW_FORM_URLENCODED + = new MimeType("application/x-www-form-urlencoded"); + APPLICATION_OCTET_STREAM + = new MimeType("application/octet-stream"); + MULTIPART_FORM_DATA + = new MimeType("multipart/form-data"); + APPLICATION_X_JAVA_AGENT + = new MimeType("application/x-java-agent"); + MESSAGE_HTTP + = new MimeType("message/http"); + TEXT_CSS + = new MimeType("text/css"); + TEXT_XML + = new MimeType("text/xml"); + TEXT + = new MimeType("text/*"); + APPLICATION_RDF_XML + = new MimeType("application/rdf+xml"); + APPLICATION_XHTML_XML + = new MimeType("application/xhtml+xml"); + APPLICATION_XML + = new MimeType("application/xml"); + } catch (MimeTypeFormatException e) { + System.out.println("httpd.MimeType: invalid static init."); + System.exit(1); + } } - } - public final static int NO_MATCH = -1 ; - public final static int MATCH_TYPE = 1 ; - public final static int MATCH_SPECIFIC_TYPE = 2 ; - public final static int MATCH_SUBTYPE = 3 ; - public final static int MATCH_SPECIFIC_SUBTYPE = 4 ; + public final static int NO_MATCH = -1; + public final static int MATCH_TYPE = 1; + public final static int MATCH_SPECIFIC_TYPE = 2; + public final static int MATCH_SUBTYPE = 3; + public final static int MATCH_SPECIFIC_SUBTYPE = 4; - /** - * String representation of type - * - * @serial - */ - protected String type = null ; - /** - * String representation of subtype - * - * @serial - */ - protected String subtype = null ; - /** - * parameter names - * - * @serial - */ - protected String pnames[] = null; - /** - * parameter values - * - * @serial - */ - protected String pvalues[] = null; - /** - * external form of this mime type - * - * @serial - */ - protected String external = null ; + /** + * String representation of type + * + * @serial + */ + protected String type = null; + /** + * String representation of subtype + * + * @serial + */ + protected String subtype = null; + /** + * parameter names + * + * @serial + */ + protected String pnames[] = null; + /** + * parameter values + * + * @serial + */ + protected String pvalues[] = null; + /** + * external form of this mime type + * + * @serial + */ + protected String external = null; - /** - * How good the given MimeType matches the receiver of the method ? - * This method returns a matching level among: - * <dl> - * <dt>NO_MATCH<dd>Types not matching,</dd> - * <dt>MATCH_TYPE<dd>Types match,</dd> - * <dt>MATCH_SPECIFIC_TYPE<dd>Types match exactly,</dd> - * <dt>MATCH_SUBTYPE<dd>Types match, subtypes matches too</dd> - * <dt>MATCH_SPECIFIC_SUBTYPE<dd>Types match, subtypes matches exactly</dd> - * </dl> - * The matches are ranked from worst match to best match, a simple - * Max ( match[i], matched) will give the best match. - * @param other The other MimeType to match against ourself. - */ + /** + * How good the given MimeType matches the receiver of the method ? + * This method returns a matching level among: + * <dl> + * <dt>NO_MATCH<dd>Types not matching,</dd> + * <dt>MATCH_TYPE<dd>Types match,</dd> + * <dt>MATCH_SPECIFIC_TYPE<dd>Types match exactly,</dd> + * <dt>MATCH_SUBTYPE<dd>Types match, subtypes matches too</dd> + * <dt>MATCH_SPECIFIC_SUBTYPE<dd>Types match, subtypes matches exactly</dd> + * </dl> + * The matches are ranked from worst match to best match, a simple + * Max ( match[i], matched) will give the best match. + * + * @param other The other MimeType to match against ourself. + */ - public int match (MimeType other) { - int match = NO_MATCH; - // match types: - if ( (type == star) || (other.type == star) ) { - return MATCH_TYPE; - } else if ( type != other.type ) { - return NO_MATCH ; - } else { - match = MATCH_SPECIFIC_TYPE; - } - // match subtypes: - if ( (subtype == star) || (other.subtype == star) ) { - match = MATCH_SUBTYPE ; - } else if ( subtype != other.subtype ) { - return NO_MATCH; - } else { - match = MATCH_SPECIFIC_SUBTYPE; + public int match(MimeType other) { + int match = NO_MATCH; + // match types: + if ((type == star) || (other.type == star)) { + return MATCH_TYPE; + } else if (type != other.type) { + return NO_MATCH; + } else { + match = MATCH_SPECIFIC_TYPE; + } + // match subtypes: + if ((subtype == star) || (other.subtype == star)) { + match = MATCH_SUBTYPE; + } else if (subtype != other.subtype) { + return NO_MATCH; + } else { + match = MATCH_SPECIFIC_SUBTYPE; + } + return match; } - return match; - } - /** - * Find out if mime types are equivalent, based on heuristics - * like text/xml <=> application/xml and other problems related - * to format that may have multiple mime types. - * Note that text/html and application/xhtml+xml are not exactly - * the same - * @param mtype, a MimeType - * @return a boolean, true if the two mime types are equivalent - */ - public boolean equiv(MimeType mtype) { - if (match(mtype) == MATCH_SPECIFIC_SUBTYPE) { - return true; - } - if ((match(TEXT_XML) == MATCH_SPECIFIC_SUBTYPE) || - (match(APPLICATION_XML)== MATCH_SPECIFIC_SUBTYPE) ) { - if ((mtype.match(TEXT_XML) == MATCH_SPECIFIC_SUBTYPE) || - (mtype.match(APPLICATION_XML) == MATCH_SPECIFIC_SUBTYPE)) { - return true; - } + /** + * Find out if mime types are equivalent, based on heuristics + * like text/xml <=> application/xml and other problems related + * to format that may have multiple mime types. + * Note that text/html and application/xhtml+xml are not exactly + * the same + * + * @param mtype, a MimeType + * @return a boolean, true if the two mime types are equivalent + */ + public boolean equiv(MimeType mtype) { + if (match(mtype) == MATCH_SPECIFIC_SUBTYPE) { + return true; + } + if ((match(TEXT_XML) == MATCH_SPECIFIC_SUBTYPE) || + (match(APPLICATION_XML) == MATCH_SPECIFIC_SUBTYPE)) { + if ((mtype.match(TEXT_XML) == MATCH_SPECIFIC_SUBTYPE) || + (mtype.match(APPLICATION_XML) == MATCH_SPECIFIC_SUBTYPE)) { + return true; + } + } + return false; } - return false; - } - /** - * A printable representation of this MimeType. - * The printed representation is guaranteed to be parseable by the - * String constructor. - */ - public String toString () { - if ( external == null ) { - StringBuilder sb = new StringBuilder(type) ; - sb.append((char) '/') ; - sb.append (subtype) ; - if ( pnames != null ) { - for (int i = 0 ; i < pnames.length; i++) { - sb.append(';'); - sb.append(pnames[i]); - if ( pvalues[i] != null ) { - sb.append('='); - sb.append(pvalues[i]); - } + /** + * A printable representation of this MimeType. + * The printed representation is guaranteed to be parseable by the + * String constructor. + */ + + public String toString() { + if (external == null) { + StringBuilder sb = new StringBuilder(type); + sb.append((char) '/'); + sb.append(subtype); + if (pnames != null) { + for (int i = 0; i < pnames.length; i++) { + sb.append(';'); + sb.append(pnames[i]); + if (pvalues[i] != null) { + sb.append('='); + sb.append(pvalues[i]); + } + } + } + external = sb.toString().intern(); } - } - external = sb.toString().intern(); + return external; } - return external ; - } - /** - * Does this MIME type has some value for the given parameter ? - * @param name The parameter to check. - * @return <strong>True</strong> if this parameter has a value, false - * otherwise. - */ - public boolean hasParameter (String name) { - if (name != null) { - if ( pnames != null ) { - String lname = name.toLowerCase(); - for (String pname : pnames) { - if (pname.equals(name)) - return true; - } - } + /** + * Does this MIME type has some value for the given parameter ? + * + * @param name The parameter to check. + * @return <strong>True</strong> if this parameter has a value, false + * otherwise. + */ + public boolean hasParameter(String name) { + if (name != null) { + if (pnames != null) { + String lname = name.toLowerCase(); + for (String pname : pnames) { + if (pname.equals(name)) + return true; + } + } + } + return false; } - return false ; - } - /** - * Get the major type of this mime type. - * @return The major type, encoded as a String. - */ + /** + * Get the major type of this mime type. + * + * @return The major type, encoded as a String. + */ - public String getType() { - return type; - } + public String getType() { + return type; + } - /** - * Get the minor type (subtype) of this mime type. - * @return The minor or subtype encoded as a String. - */ - public String getSubtype() { - return subtype; - } + /** + * Get the minor type (subtype) of this mime type. + * + * @return The minor or subtype encoded as a String. + */ + public String getSubtype() { + return subtype; + } - /** - * Get a mime type parameter value. - * @param name The parameter whose value is to be returned. - * @return The parameter value, or <b>null</b> if not found. - */ - public String getParameterValue (String name) { - if (name != null) { - if ( pnames != null ) { - String lname = name.toLowerCase(); - for (int i = 0 ; i < pnames.length ; i++) { - if ( pnames[i].equals(lname) ) - return pvalues[i]; + /** + * Get a mime type parameter value. + * + * @param name The parameter whose value is to be returned. + * @return The parameter value, or <b>null</b> if not found. + */ + public String getParameterValue(String name) { + if (name != null) { + if (pnames != null) { + String lname = name.toLowerCase(); + for (int i = 0; i < pnames.length; i++) { + if (pnames[i].equals(lname)) + return pvalues[i]; + } + } } - } + return null; } - return null ; - } - /** - * adds some parameters to a MimeType - * @param param a String array of parameter names - * @param values the corresponding String array of values - */ - public void addParameters(String[] param, String[] values) { - // sanity check - if ((param == null) || (values == null) || - (values.length != param.length)) - return; - if (pnames == null) { - pnames = param; - pvalues = values; - } else { - String[] nparam = new String[pnames.length+param.length]; - String[] nvalues = new String[pvalues.length+values.length]; - System.arraycopy(pnames, 0, nparam, 0, pnames.length); - System.arraycopy(param, 0, nparam, pnames.length, param.length); - System.arraycopy(pvalues, 0, nvalues, 0, pvalues.length); - System.arraycopy(values,0, nvalues, pvalues.length, values.length); - pnames = nparam; - pvalues = nvalues; - } - for (int i = 0; i < pnames.length; i++) { - pnames[i] = pnames[i].toLowerCase(); + /** + * adds some parameters to a MimeType + * + * @param param a String array of parameter names + * @param values the corresponding String array of values + */ + public void addParameters(String[] param, String[] values) { + // sanity check + if ((param == null) || (values == null) || + (values.length != param.length)) + return; + if (pnames == null) { + pnames = param; + pvalues = values; + } else { + String[] nparam = new String[pnames.length + param.length]; + String[] nvalues = new String[pvalues.length + values.length]; + System.arraycopy(pnames, 0, nparam, 0, pnames.length); + System.arraycopy(param, 0, nparam, pnames.length, param.length); + System.arraycopy(pvalues, 0, nvalues, 0, pvalues.length); + System.arraycopy(values, 0, nvalues, pvalues.length, values.length); + pnames = nparam; + pvalues = nvalues; + } + for (int i = 0; i < pnames.length; i++) { + pnames[i] = pnames[i].toLowerCase(); + } + external = null; } - external = null; - } - /** - * get a clone of this object - * @return another cloned instance of MimeType - */ - public MimeType getClone() { - try { - return (MimeType) clone(); - } catch (CloneNotSupportedException ex) { - // should never happen as we are Cloneable! + /** + * get a clone of this object + * + * @return another cloned instance of MimeType + */ + public MimeType getClone() { + try { + return (MimeType) clone(); + } catch (CloneNotSupportedException ex) { + // should never happen as we are Cloneable! + } + // never reached + return null; } - // never reached - return null; - } - /** - * adds a parameterto a MimeType - * @param param the parameter name, as a String - * @param value the parameter value, as a Sting - */ - public void addParameter(String param, String value) { - String[] p = new String[1]; - String[] v = new String[1]; - p[0] = param; - v[0] = value; - addParameters(p, v); - } + /** + * adds a parameterto a MimeType + * + * @param param the parameter name, as a String + * @param value the parameter value, as a Sting + */ + public void addParameter(String param, String value) { + String[] p = new String[1]; + String[] v = new String[1]; + p[0] = param; + v[0] = value; + addParameters(p, v); + } - /** - * Set the parameter to a MimeType (replace old value if any). - * @param param the parameter name, as a String - * @param value the parameter value, as a Sting - */ - public void setParameter(String param, String value) { - if (pnames == null) { - addParameter(param, value); - } else { - String lparam = param.toLowerCase(); - for (int i = 0 ; i < pnames.length ; i++) { - if (pnames[i].equals(lparam)) { - pvalues[i] = value; - return; + /** + * Set the parameter to a MimeType (replace old value if any). + * + * @param param the parameter name, as a String + * @param value the parameter value, as a Sting + */ + public void setParameter(String param, String value) { + if (pnames == null) { + addParameter(param, value); + } else { + String lparam = param.toLowerCase(); + for (int i = 0; i < pnames.length; i++) { + if (pnames[i].equals(lparam)) { + pvalues[i] = value; + return; + } + } + addParameter(lparam, value); } - } - addParameter(lparam, value); } - } - /** - * Construct MimeType object for the given string. - * The string should be the representation of the type. This methods - * tries to be compliant with HTTP1.1, p 15, although it is not - * (because of quoted-text not being accepted). - * FIXME - * @parameter spec A string representing a MimeType - * @return A MimeType object - * @exception MimeTypeFormatException if the string couldn't be parsed. - */ - public MimeType (String spec) - throws MimeTypeFormatException - { - int strl = spec.length() ; - int start = 0, look = -1 ; - // skip leading/trailing blanks: - while ((start < strl) && (spec.charAt (start)) <= ' ') - start++ ; - while ((strl > start) && (spec.charAt (strl-1) <= ' ')) - strl-- ; - // get the type: - StringBuilder sb = new StringBuilder() ; - while ((start < strl) && ((look = spec.charAt(start)) != '/')) { - sb.append (Character.toLowerCase((char) look)) ; - start++ ; - } - if ( look != '/' ) - throw new MimeTypeFormatException (spec) ; - this.type = sb.toString().intern() ; - // get the subtype: - start++ ; - sb.setLength(0) ; - while ((start < strl) - && ((look = spec.charAt(start)) > ' ') && (look != ';')) { - sb.append (Character.toLowerCase((char) look)) ; - start++ ; - } - this.subtype = sb.toString().intern() ; - // get parameters, if any: - while ((start < strl) && ((look = spec.charAt(start)) <= ' ')) - start++ ; - if ( start < strl ) { - if (spec.charAt(start) != ';') - throw new MimeTypeFormatException (spec) ; - start++ ; - ArrayList vp = new ArrayList(4) ; - ArrayList vv = new ArrayList(4) ; - while ( start < strl ) { - while ((start < strl) && (spec.charAt(start) <= ' ')) start++ ; - // get parameter name: - sb.setLength (0) ; - while ((start < strl) - && ((look=spec.charAt(start)) > ' ') && (look != '=')) { - sb.append (Character.toLowerCase((char) look)) ; - start++ ; + /** + * Construct MimeType object for the given string. + * The string should be the representation of the type. This methods + * tries to be compliant with HTTP1.1, p 15, although it is not + * (because of quoted-text not being accepted). + * FIXME + * + * @return A MimeType object + * @throws MimeTypeFormatException if the string couldn't be parsed. + * @parameter spec A string representing a MimeType + */ + public MimeType(String spec) + throws MimeTypeFormatException { + int strl = spec.length(); + int start = 0, look = -1; + // skip leading/trailing blanks: + while ((start < strl) && (spec.charAt(start)) <= ' ') + start++; + while ((strl > start) && (spec.charAt(strl - 1) <= ' ')) + strl--; + // get the type: + StringBuilder sb = new StringBuilder(); + while ((start < strl) && ((look = spec.charAt(start)) != '/')) { + sb.append(Character.toLowerCase((char) look)); + start++; } - String name = sb.toString() ; - // get the value: - while ((start < strl) && (spec.charAt(start) <= ' ')) start++ ; - if (spec.charAt(start) != '=') - throw new MimeTypeFormatException (spec) ; - start++ ; - while ((start < strl) && - ((spec.charAt(start) == '"') || - (spec.charAt(start) <= ' '))) start++ ; - sb.setLength(0) ; + if (look != '/') + throw new MimeTypeFormatException(spec); + this.type = sb.toString().intern(); + // get the subtype: + start++; + sb.setLength(0); while ((start < strl) - && ((look=spec.charAt(start)) > ' ') - && (look != ';') - && (look != '"')) { - sb.append ((char) look) ; - start++ ; + && ((look = spec.charAt(start)) > ' ') && (look != ';')) { + sb.append(Character.toLowerCase((char) look)); + start++; + } + this.subtype = sb.toString().intern(); + // get parameters, if any: + while ((start < strl) && ((look = spec.charAt(start)) <= ' ')) + start++; + if (start < strl) { + if (spec.charAt(start) != ';') + throw new MimeTypeFormatException(spec); + start++; + ArrayList<String> vp = new ArrayList<String>(4); + ArrayList<String> vv = new ArrayList<String>(4); + while (start < strl) { + while ((start < strl) && (spec.charAt(start) <= ' ')) start++; + // get parameter name: + sb.setLength(0); + while ((start < strl) + && ((look = spec.charAt(start)) > ' ') && (look != '=')) { + sb.append(Character.toLowerCase((char) look)); + start++; + } + String name = sb.toString(); + // get the value: + while ((start < strl) && (spec.charAt(start) <= ' ')) start++; + if (spec.charAt(start) != '=') + throw new MimeTypeFormatException(spec); + start++; + while ((start < strl) && + ((spec.charAt(start) == '"') || + (spec.charAt(start) <= ' '))) start++; + sb.setLength(0); + while ((start < strl) + && ((look = spec.charAt(start)) > ' ') + && (look != ';') + && (look != '"')) { + sb.append((char) look); + start++; + } + while ((start < strl) && (spec.charAt(start) != ';')) start++; + start++; + String value = sb.toString(); + vp.add(name); + vv.add(value); + } + this.pnames = vp.toArray(new String[vp.size()]); + this.pvalues = vv.toArray(new String[vv.size()]); } - while ((start < strl) && (spec.charAt(start) != ';')) start++ ; - start++ ; - String value = sb.toString() ; - vp.add(name); - vv.add(value); - } - this.pnames = new String[vp.size()]; - vp.toArray(pnames); - this.pvalues = new String[vv.size()]; - vv.toArray(pvalues); } - } - public MimeType (String type, String subtype - , String pnames[], String pvalues[]) { - this.type = type.toLowerCase().intern() ; - this.subtype = subtype.toLowerCase().intern() ; - this.pnames = pnames; - this.pvalues = pvalues; - } + public MimeType(String type, String subtype + , String pnames[], String pvalues[]) { + this.type = type.toLowerCase().intern(); + this.subtype = subtype.toLowerCase().intern(); + this.pnames = pnames; + this.pvalues = pvalues; + } - public MimeType (String type, String subtype) { - this.type = type.toLowerCase().intern(); - this.subtype = subtype.toLowerCase().intern(); - } + public MimeType(String type, String subtype) { + this.type = type.toLowerCase().intern(); + this.subtype = subtype.toLowerCase().intern(); + } - public static void main (String args[]) { - if ( args.length == 1) { - MimeType type = null ; - try { - type = new MimeType (args[0]) ; - } catch (MimeTypeFormatException e) { - } - if ( type != null ) { - System.out.println (type) ; - if (type.getClone().match(type) == MATCH_SPECIFIC_SUBTYPE) { - System.out.println("Clone OK"); + public static void main(String args[]) { + if (args.length == 1) { + MimeType type = null; + try { + type = new MimeType(args[0]); + } catch (MimeTypeFormatException e) { + } + if (type != null) { + System.out.println(type); + if (type.getClone().match(type) == MATCH_SPECIFIC_SUBTYPE) { + System.out.println("Clone OK"); + } else { + System.out.println("Cloning failed"); + } + } else { + System.out.println("Invalid mime type specification."); + } } else { - System.out.println("Cloning failed"); + System.out.println("Usage: java MimeType <type-to-parse>"); } - } else { - System.out.println ("Invalid mime type specification.") ; - } - } else { - System.out.println ("Usage: java MimeType <type-to-parse>") ; } - } }
Received on Saturday, 4 August 2012 21:17:12 UTC