2002/css-validator/org/w3c/css/util ApplContext.java,1.14,1.15 FakeFile.java,1.6,1.7 HTTPURL.java,1.21,1.22

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

Modified Files:
	ApplContext.java FakeFile.java HTTPURL.java 
Log Message:
fix for charset support of fake URIs (upload and text input)

Index: ApplContext.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/util/ApplContext.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- ApplContext.java	13 Feb 2009 21:50:16 -0000	1.14
+++ ApplContext.java	15 Feb 2009 18:23:48 -0000	1.15
@@ -8,9 +8,16 @@
  */
 package org.w3c.css.util;
 
-import java.nio.charset.Charset;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+
 import java.util.HashMap;
 import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
 
 import org.w3c.css.parser.Frame;
 import org.w3c.www.http.HttpAcceptCharset;
@@ -23,6 +30,8 @@
  */
 public class ApplContext {
 
+    public static Charset defaultCharset;
+
     String credential = null;
     String lang;
     Messages msgs;
@@ -36,7 +45,20 @@
     private String link;
     int warningLevel = 0;
 
-    private HashMap<URL,String> uricharsets = null;
+    FakeFile fakefile = null;
+    String   faketext = null;
+    URL      fakeurl  = null;
+
+    private HashMap<URL,Charset> uricharsets = null;
+
+    static {
+	try {
+	    defaultCharset = Charset.forName("iso-8859-1");
+	} catch (Exception ex) {
+	    // we are in deep trouble here
+	    defaultCharset = null;
+	}
+    }
 
     /**
      * Creates a new ApplContext
@@ -211,7 +233,8 @@
 		    // we prefer utf-8
 		    // FIXME (the bias value and the biased charset
 		    // should be dependant on the language)
-		    if ((biasedcharset != null) && !biasedcharset.equalsIgnoreCase(currentCharset)) {
+		    if ((biasedcharset != null) && 
+			!biasedcharset.equalsIgnoreCase(currentCharset)) {
 			currentQuality = currentQuality * 0.5;
 		    }
 		    if (currentQuality > quality) {
@@ -243,18 +266,107 @@
 	}
     }
 
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
     public void setCharsetForURL(URL url, String charset) {
 	if (uricharsets == null) {
-	    uricharsets = new HashMap<URL,String>();
+	    uricharsets = new HashMap<URL,Charset>();
+	}
+	Charset c = null;
+	try {
+	    c = Charset.forName(charset);
+	} catch (IllegalCharsetNameException icex) {
+	    // FIXME add a warning in the CSS
+	} catch (UnsupportedCharsetException ucex) {
+	    // FIXME inform about lack of support
+	}
+	if (c != null) {
+	    uricharsets.put(url, c);
+	}
+    }
+
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
+    public void setCharsetForURL(URL url, Charset charset) {
+	if (uricharsets == null) {
+	    uricharsets = new HashMap<URL,Charset>();
 	}
 	uricharsets.put(url, charset);
     }
-    
+  
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
     public String getCharsetForURL(URL url) {
+	Charset c;
+	if (uricharsets == null) {
+	    return null;
+	}
+	c = uricharsets.get(url);
+	if (c != null) {
+	    return c.toString();
+	}
+	return null;
+    }
+    
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
+    public Charset getCharsetObjForURL(URL url) {
+	Charset c;
 	if (uricharsets == null) {
 	    return null;
 	}
 	return uricharsets.get(url);
     }
+
+    /**
+     * store content of uploaded file 
+     */
+    public void setFakeFile(FakeFile fakefile) {
+	this.fakefile = fakefile;
+    }
+
+    /**
+     * store content of entered text
+     */
+    public void setFakeText(String faketext) {
+	this.faketext = faketext;
+    }
+
+    public InputStream getFakeInputStream() throws IOException {
+	if (fakefile != null) {
+	    return fakefile.getInputStream();
+	}
+	if (faketext != null) {
+	    return new ByteArrayInputStream(faketext.getBytes());
+	}
+	return null;
+    }
     
+    public boolean isInputFake() {
+	return ((faketext != null) || (fakefile != null));
+    }
+
+    public void setFakeURL(String fakeurl) {
+	try {
+	    this.fakeurl = new URL(fakeurl);
+	} catch (Exception ex) {
+	}
+    }
+
+    public URL getFakeURL() {
+	return fakeurl;
+    }
+	
 }

Index: HTTPURL.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/util/HTTPURL.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- HTTPURL.java	13 Feb 2009 21:50:16 -0000	1.21
+++ HTTPURL.java	15 Feb 2009 18:23:48 -0000	1.22
@@ -298,7 +298,9 @@
 	return orig_stream;
     }
 
-    public static String getCharacterEncoding(ApplContext ac, URLConnection uco) {
+    public static String getCharacterEncoding(ApplContext ac, 
+					      URLConnection uco) 
+    {
 	String charset = ac.getCharsetForURL(uco.getURL());
 	if (charset != null) {
 	    return charset;

Index: FakeFile.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/util/FakeFile.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- FakeFile.java	13 Sep 2007 10:18:49 -0000	1.6
+++ FakeFile.java	15 Feb 2009 18:23:48 -0000	1.7
@@ -121,12 +121,12 @@
     count += len;
   }
 
-	public void setContentType(String mimeType) {
-		contentType = mimeType;
-	}
-	
-	public String getContentType() {
-		return contentType;
-	}
+    public void setContentType(String mimeType) {
+	contentType = mimeType;
+    }
+    
+    public String getContentType() {
+	return contentType;
+    }
 
 }

Received on Sunday, 15 February 2009 18:23:59 UTC