W3C home > Mailing lists > Public > www-validator-cvs@w3.org > August 2005

2002/css-validator/org/w3c/css/css HTMLStyleSheetParser.java,1.14,1.15 StyleSheetCom.java,1.9,1.10 XMLStyleSheetHandler.java,1.16,1.17

From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
Date: Mon, 29 Aug 2005 12:00:44 +0000
To: www-validator-cvs@w3.org
Message-Id: <E1E9iJg-0003ll-9X@lionel-hutz.w3.org>

Update of /sources/public/2002/css-validator/org/w3c/css/css
In directory hutz:/tmp/cvs-serv14471/css

Modified Files:
	HTMLStyleSheetParser.java StyleSheetCom.java 
	XMLStyleSheetHandler.java 
Log Message:
Use the MimeType class to avoid issues with case and parameters

Index: StyleSheetCom.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheetCom.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- StyleSheetCom.java	23 Aug 2005 16:22:54 -0000	1.9
+++ StyleSheetCom.java	29 Aug 2005 12:00:42 -0000	1.10
@@ -6,6 +6,9 @@
 // Please first read the full copyright statement in file COPYRIGHT.html
 /*
  * $Log$
+ * Revision 1.10  2005/08/29 12:00:42  ylafon
+ * Use the MimeType class to avoid issues with case and parameters
+ *
  * Revision 1.9  2005/08/23 16:22:54  ylafon
  * Patch by Jean-Guilhem Rouel
  *
@@ -292,11 +295,16 @@
 		    URLConnection urlC = HTTPURL.getConnection(style.htmlURL, null);
 
 		    if (urlC.getContentType() != null) {
-			if (urlC.getContentType().indexOf("text/html") != -1) {
+			MimeType mt = null;
+			try {
+			    mt = new MimeType(urlC.getContentType());
+			} catch (Exception ex);
+			if (MimeType.TEXT_HTML.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
 			    style.htmlRequest();
-			} else if (urlC.getContentType().indexOf("text/xml") != -1) {
+			} else if ((MimeType.TEXT_XML.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) ||
+				   (MimeType.APPLICATION_XHTML_XML..match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE)) {
 			    style.xmlRequest();
-			} else if (urlC.getContentType().indexOf("text/css") != -1) {
+			} else if (MimeType.TEXT_CSS.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
 			    style.cssRequest(selector, style.defaultmedium);
 			}
 		    } else {

Index: XMLStyleSheetHandler.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/XMLStyleSheetHandler.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- XMLStyleSheetHandler.java	23 Aug 2005 16:22:54 -0000	1.16
+++ XMLStyleSheetHandler.java	29 Aug 2005 12:00:42 -0000	1.17
@@ -30,6 +30,7 @@
 import org.w3c.css.util.Util;
 import org.w3c.css.util.xml.XMLCatalog;
 import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.EntityResolver;
@@ -153,37 +154,45 @@
 		styleSheetParser.notifyErrors(ers);
 	    }
 
-	    if (type.equalsIgnoreCase("text/css")) {
+	    if (type != null) {
+		MimeType mt = null;
+		try {
+		    new MimeType(type);
+		} catch (Exception ex) { /* at worst, null */ };
+		if (MimeType.TEXT_CSS.match(mt) == 
+		                           MimeType.MATCH_SPECIFIC_SUBTYPE ) {
 		// we're dealing with a stylesheet...
-		URL url;
-		
-		try { 
-		    if (baseURI != null) {
-			url = new URL(baseURI, href); 
-		    } else {
-			url = new URL(href); 
+		    URL url;
+		    
+		    try { 
+			if (baseURI != null) {
+			    url = new URL(baseURI, href); 
+			} else {
+			    url = new URL(href); 
+			}
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+		    
+		    if (Util.onDebug) {
+			System.err.println("[XMLStyleSheetHandler::"+
+					   "initialize(): "
+					   + "should parse CSS url: " 
+					   + url.toString() + "]");
+		    }
+		    String media = (String) atts.get("media");
+		    if (media == null) {
+			media="all";
+		    }
+		    styleSheetParser.parseURL(ac,
+					      url, 
+					      (String) atts.get("title"),
+					      rel,
+					      media,
+					      StyleSheetOrigin.AUTHOR);
+		    if (Util.onDebug) {
+			System.err.println("[parsed!]");
 		    }
-		} catch (MalformedURLException e) {
-		    return; // Ignore errors
-		}
-		
-		if (Util.onDebug) {
-		    System.err.println("[XMLStyleSheetHandler::initialize(): "
-				       + "should parse CSS url: " 
-				       + url.toString() + "]");
-		}
-		String media = (String) atts.get("media");
-		if (media == null) {
-		    media="all";
-		}
-		styleSheetParser.parseURL(ac,
-					  url, 
-					  (String) atts.get("title"),
-					  rel,
-					  media,
-					  StyleSheetOrigin.AUTHOR);
-		if (Util.onDebug) {
-		    System.err.println("[parsed!]");
 		}
 	    }
 	}
@@ -231,8 +240,17 @@
 				       + "\" type=\"" + type
 				       + "\"" + "   href=\"" + href + "\"");
 		}
-		// Spif
-		if ((type != null) && !type.equalsIgnoreCase("text/css")) {
+		if (type == null) {
+		    return;
+		}
+		MimeType mt = null;
+		try {
+		    mt = new MimeType(type);
+		} catch (MimeTypeFormatException mtfe) {
+		    return;
+		}
+		if (MimeType.TEXT_CSS.match(mt) != 
+		                            MimeType.MATCH_SPECIFIC_SUBTYPE) {
 		    return;
 		}
 		if (href == null) {
@@ -243,14 +261,16 @@
 		    }
 		    CssError er =
 			new CssError(baseURI.toString(), line,
-				     new InvalidParamException("unrecognized.link", ac));
+				                    new InvalidParamException(
+					            "unrecognized.link", ac));
 		    Errors ers = new Errors();
 		    ers.addError(er);
 		    styleSheetParser.notifyErrors(ers);
 		    return;
 		}
 	
-		if ((rel != null) && rel.toLowerCase().indexOf("stylesheet") != -1) {
+		if ((rel != null) && 
+		              rel.toLowerCase().indexOf("stylesheet") != -1) {
 		    // we're dealing with a stylesheet...
 		    // @@TODO alternate stylesheet
 		    URL url;
@@ -306,13 +326,22 @@
 		    }
 		    CssError er =
 			new CssError(baseURI.toString(), line,
-				     new InvalidParamException("unrecognized.link", ac));
+				     new InvalidParamException(
+					             "unrecognized.link", ac));
 		    Errors ers = new Errors();
 		    ers.addError(er);
 		    styleSheetParser.notifyErrors(ers);
-		} else if (type.equals("text/css")) {		
-		    text.setLength(0);
-		    inStyle = true;
+		} else {
+		    try {
+			MimeType mt = new MimeType(type);
+			if (MimeType.TEXT_CSS.match(mt) == 
+			                     MimeType.MATCH_SPECIFIC_SUBTYPE) {
+			    text.setLength(0);
+			    inStyle = true;
+			}
+		    } catch (MimeTypeFormatException ex) {
+			// do nothing
+		    }
 		}
 	    } else if (atts.getValue("style") != null) {
 		String value = atts.getValue("style");

Index: HTMLStyleSheetParser.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/HTMLStyleSheetParser.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- HTMLStyleSheetParser.java	8 Aug 2005 13:18:04 -0000	1.14
+++ HTMLStyleSheetParser.java	29 Aug 2005 12:00:42 -0000	1.15
@@ -21,6 +21,9 @@
 import org.w3c.css.util.HTTPURL;
 import org.w3c.css.util.Util;
 
+import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
+
 /**
  * @version $Revision$
  */
@@ -95,17 +98,23 @@
 		    htmlURL = HTTPURL.getURL(htmlURL, httpCL);
 		}
 
-		contentType = connection.getContentType();
-		if (contentType == null) {
-		    contentType = "unknown";
+		cType = connection.getContentType();
+		if (cType == null) {
+		    cType = "unknown/unknown";
 		}
-		contentType = contentType.toLowerCase();
+		MimeType contentType = null;
+		try {
+		    contentType = new MimeTYpe(cType());
+		} catch (MimeTypeFormatException ex) {
+		}
+		
 		if (Util.onDebug) {
 		    System.err.println( "[DEBUG] content type is [" + 
 					contentType + ']');
 		}
 
-		if (contentType.indexOf("text/html") != -1) {
+		if (cType.match(MimeType.TEXT_HTML) == 
+		                           MimeType.MATCH_SPECIFIC_SUBTYPE) {
 		    HtmlParser htmlParser;
 		    htmlParser = new HtmlParser(ac, "html4", urlString,
 						connection);
@@ -141,18 +150,24 @@
 		    } finally {
 			Util.fromHTMLFile = false;
 		    }
-		} else if (contentType.indexOf("text/css") != -1) {
+		} else if (contentType.match(MimeType.TEXT_CSS) ==
+			                   MimeType.MATCH_SPECIFIC_SUBTYPE ) {
 		    StyleSheetParser parser = new StyleSheetParser();
 		    parser.parseURL(ac, htmlURL, null, null, media, 
 				    StyleSheetOrigin.AUTHOR);
 		    style = parser.getStyleSheet();
-		} else if ((contentType.indexOf("text/xml") == -1)
-			   && (contentType.indexOf("application/xhtml+xml") == -1)) {
+		} else if ((contentType.match(MimeType.TEXT_XML) != 
+			    MimeType.MATCH_SPECIFIC_SUBTYPE) &&
+	       	         (contentType.match(MimeType.APPLICATION_XHTML_XML) != 
+			  MimeType.MATCH_SPECIFIC_SUBTYPE)) {
 		    throw new IOException("Unknown mime type : "+ contentType);
 		}
 		
-		if ((contentType.indexOf("text/xml") != -1) || isXML
-		    || (contentType.indexOf("application/xhtml+xml") != -1)) {
+		if (isXML ||
+		    (contentType.match(MimeType.TEXT_XML) == 
+		                            MimeType.MATCH_SPECIFIC_SUBTYPE) ||
+		    (contentType.match(MimeType.APPLICATION_XHTML_XML) == 
+		                            MimeType.MATCH_SPECIFIC_SUBTYPE)) {
 		    XMLStyleSheetHandler handler;
 		    handler = new XMLStyleSheetHandler(htmlURL, ac);
 		    handler.parse(urlString, connection);
Received on Monday, 29 August 2005 12:00:49 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 12:54:51 GMT