2002/css-validator/org/w3c/css/css StyleSheetGenerator.java,1.18,1.19 TagSoupStyleSheetHandler.java,1.4,1.5

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

Modified Files:
	StyleSheetGenerator.java TagSoupStyleSheetHandler.java 
Log Message:
Fix for 
http://www.w3.org/Bugs/Public/show_bug.cgi?id=6297
Handling TokenMgrError while processing CSS fragments in HTML (we might
ass other errors if needed). Reworked CssError to access Exceptions and 
Errors (Throwable), and modified StyleSheetGenerator accordingly.
+ some remaining optimisation+templating


Index: StyleSheetGenerator.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheetGenerator.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- StyleSheetGenerator.java	3 Jul 2008 14:20:39 -0000	1.18
+++ StyleSheetGenerator.java	10 Dec 2008 15:10:15 -0000	1.19
@@ -29,6 +29,7 @@
 import org.w3c.css.util.Messages;
 import org.w3c.css.util.Utf8Properties;
 import org.w3c.css.util.Warnings;
+import org.w3c.css.util.Warning;
 
 /**
  * @author Julien Grand-Mourcel
@@ -120,7 +121,7 @@
 	    String name;
 	    for (int i = 0; i < Messages.languages_name.size(); ++i) {
 		name = String.valueOf(Messages.languages_name.get(i));
-		HashMap l = new HashMap();
+		HashMap<String,String> l = new HashMap<String,String>();
 		l.put("name", name);
 		l.put("real", ((Utf8Properties) Messages.languages.get(name)).getProperty("language_name"));
 		languages[i] = l;
@@ -234,8 +235,8 @@
 		int nbError = error.length;
 		for (int i=0; i < nbError; i++) {
 		    CssError csserror = error[i];
-		    Exception ex = csserror.getException();
-		    Hashtable h = new Hashtable();
+		    Throwable ex = csserror.getException();
+		    Hashtable<String,Object> h = new Hashtable<String,Object>();
 		    errors_content[i] = h;
 		    h.put("Error", csserror);
 		    h.put("CtxName", "nocontext");
@@ -312,7 +313,7 @@
      * @param error, the error to check
      * @param ht_error, the Hastable with information about this error
      */
-    private void produceParseException(CssParseException error, Hashtable ht_error) {
+    private void produceParseException(CssParseException error, Hashtable<String,Object> ht_error) {
 	if (error.getContexts() != null && error.getContexts().size() != 0) {
 	    ht_error.put("CtxName", "codeContext");
 	    StringBuffer buf = new StringBuffer();
@@ -390,7 +391,7 @@
     private String queryReplace(String s) {
 	if (s != null) {
 	    int len = s.length();
-	    StringBuffer ret = new StringBuffer(len);
+	    StringBuilder ret = new StringBuilder(len+16);
 	    char c;
 
 	    for (int i = 0; i < len; i++) {

Index: TagSoupStyleSheetHandler.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/TagSoupStyleSheetHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- TagSoupStyleSheetHandler.java	18 Sep 2007 17:59:21 -0000	1.4
+++ TagSoupStyleSheetHandler.java	10 Dec 2008 15:10:15 -0000	1.5
@@ -20,10 +20,12 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
-import java.util.Hashtable;
+import java.util.HashMap;
 
 import org.w3c.css.parser.CssError;
 import org.w3c.css.parser.Errors;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.parser.analyzer.TokenMgrError;
 import org.w3c.css.util.Warning;
 import org.w3c.css.util.Warnings;
 import org.w3c.css.util.ApplContext;
@@ -70,7 +72,7 @@
     String media  = null;
     String type  = null;
     String title = null;
-    StringBuffer text = new StringBuffer(255);
+    StringBuilder text = new StringBuilder(255);
 
     Locator locator;
 
@@ -132,12 +134,12 @@
 
     public void processingInstruction (String target, String data)
         throws SAXException {
-	Hashtable atts = getValues(data);
+	HashMap<String,String> atts = getValues(data);
 
 	if ("xml-stylesheet".equals(target)) {
-	    String rel  = (String) atts.get("alternate");
-	    String type  = (String) atts.get("type");
-	    String href = (String) atts.get("href");
+	    String rel   = atts.get("alternate");
+	    String type  = atts.get("type");
+	    String href  = atts.get("href");
 
 	    if (Util.onDebug) {
 		System.err.println("<?xml-stylesheet alternate=\"" + rel
@@ -195,13 +197,13 @@
 					   + "should parse CSS url: "
 					   + url.toString() + "]");
 		    }
-		    String media = (String) atts.get("media");
+		    String media = atts.get("media");
 		    if (media == null) {
 			media="all";
 		    }
 		    styleSheetParser.parseURL(ac,
 					      url,
-					      (String) atts.get("title"),
+					      atts.get("title"),
 					      rel,
 					      media,
 					      StyleSheetOrigin.AUTHOR);
@@ -408,19 +410,29 @@
     public void handleStyleAttribute(String value, String id) {
 	if (id == null) { // but we have no id: create one.
 	    // a normal id should NOT contain a "#" character.
-	    id = "#autoXML" + autoIdCount;
-	    // workaround a java hashcode bug.
-	    id += "" + autoIdCount++;
+	    StringBuilder sb = new StringBuilder("#autoXML");
+	    sb.append(autoIdCount);
+	    // FIXME why two times?
+	    sb.append(autoIdCount++);
+	    id = sb.toString();
 	}
 	int line = 0;
 	if (locator != null) {
 	    line = locator.getLineNumber();
 	}
 	// parse the style attribute.
-	styleSheetParser
-	    .parseStyleAttribute(ac,
-				 new ByteArrayInputStream(value.getBytes()),
-				 id, documentURI, line);
+	try {
+	    styleSheetParser
+		.parseStyleAttribute(ac,
+				     new ByteArrayInputStream(value.getBytes()),
+				     id, documentURI, line);
+	} catch (TokenMgrError ex) {
+	    CssError err = new CssError(baseURI.toString(), line,
+					ex);
+	    Errors errs = new Errors();
+	    errs.addError(err);
+	    styleSheetParser.notifyErrors(errs);
+	}
     }
 
     public StyleSheet getStyleSheet() {
@@ -617,15 +629,15 @@
 	}
     }
 
-    Hashtable getValues(String data) {
+    HashMap<String,String> getValues(String data) {
 	int length = data.length();
 	int current = 0;
 	char c;
-	StringBuffer name = new StringBuffer(10);
-	StringBuffer value = new StringBuffer(128);
-	StringBuffer entity_name = new StringBuffer(16);
+	StringBuilder name = new StringBuilder(10);
+	StringBuilder value = new StringBuilder(128);
+	StringBuilder entity_name = new StringBuilder(16);
 	int state = 0;
-	Hashtable table = new Hashtable();
+	HashMap<String,String> table = new HashMap<String,String>();
 
 	while (current < length) {
 	    c = data.charAt(current);

Received on Wednesday, 10 December 2008 15:10:28 UTC