- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 08 Sep 2005 16:07:08 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/util
In directory hutz:/tmp/cvs-serv5791
Modified Files:
ApplContext.java
Log Message:
make jdk1.2 compliant
Index: ApplContext.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/util/ApplContext.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- ApplContext.java 8 Sep 2005 14:24:29 -0000 1.6
+++ ApplContext.java 8 Sep 2005 16:07:06 -0000 1.7
@@ -8,7 +8,9 @@
*/
package org.w3c.css.util;
-import java.nio.charset.Charset;
+//import java.nio.charset.Charset;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
import org.w3c.css.parser.Frame;
import org.w3c.www.http.HttpAcceptCharset;
@@ -21,6 +23,8 @@
*/
public class ApplContext {
+ private static Method m = null;
+
String credential = null;
String lang;
@@ -41,6 +45,18 @@
String medium;
+ static {
+ try {
+ Class c = Class.forName("java.nio.charset.Charset");
+ Class cp[] = { java.lang.String.class };
+ m = c.getDeclaredMethod("isSupported", cp);
+ } catch (ClassNotFoundException ex) {
+ m = null;
+ } catch (NoSuchMethodException ex) {
+ m = null;
+ }
+ }
+
/**
* Creates a new ApplContext
*/
@@ -164,22 +180,25 @@
* Sets the content encoding to the first charset that appears in
* <i>acceptCharset</i>.
* If the charset is not supported, the content encoding will be utf-8
- * @param acceptCharset a String representing the Accept-Charset request parameter
+ * @param acceptCharset a String representing the Accept-Charset
+ * request parameter
*/
public void setContentEncoding(String acceptCharset) {
if(acceptCharset != null) {
// uses some Jigsaw classes to parse the Accept-Charset
- // these classes need to load a lot of stuff, so it may be quite long
- // the first time
- HttpAcceptCharsetList charsetList =
- HttpFactory.parseAcceptCharsetList(acceptCharset);
- HttpAcceptCharset[] charsets = (HttpAcceptCharset[])charsetList.getValue();
+ // these classes need to load a lot of stuff, so it may be quite
+ // long the first time
+ HttpAcceptCharsetList charsetList;
+ HttpAcceptCharset[] charsets;
+
+ charsetList = HttpFactory.parseAcceptCharsetList(acceptCharset);
+ charsets = (HttpAcceptCharset[])charsetList.getValue();
String encoding = null;
double quality = 0.0;
String biasedcharset = getMsg().getString("output-encoding-name");
-
+
for(int i = 0; i < charsets.length && quality < 1.0 ; i++) {
HttpAcceptCharset charset = charsets[i];
@@ -194,7 +213,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) {
@@ -217,72 +237,19 @@
}
}
- private boolean isCharsetSupported(String charset) {
+ private boolean isCharsetSupported(String charset) {
+ // if we can't check, assume it's ok, and fail later.
+ if (m == null) {
+ return true;
+ }
try {
- return Charset.isSupported(charset);
+ String p[] = new String[1];
+ p[0] = charset;
+ Boolean b = (Boolean) m.invoke(null, p);
+ return b.booleanValue();
}
catch(Exception e) {
return false;
}
}
-
- /*
- // First version of the Accept-Charset parser
- public void setContentEncoding(String acceptCharset) {
- String encoding = Utf8Properties.ENCODING;
- double quality = 0.;
- System.out.println(acceptCharset);
- if(acceptCharset != null) {
- StringTokenizer csTok = new StringTokenizer(acceptCharset, ",");
- // 1.0 is the highest possible quality, so if we reach it, we
- // don't need to continue
- while(csTok.hasMoreTokens() && quality < 1.0) {
- String[] currentCharset = csTok.nextToken().split(";");
- if(currentCharset.length > 0) {
- String enc = currentCharset[0].trim().toLowerCase();
- // we need to know if the current charset has a valid name
- // and is supported
- boolean supported = false;
- try {
- supported = Charset.isSupported(enc);
- }
- catch(IllegalCharsetNameException e) {
- supported = false;
- }
- catch(IllegalArgumentException e) {
- supported = false;
- }
- // if the current encoding is supported, we try to get its quality
- if(supported) {
- if(currentCharset.length == 2) {
- String sQual = Util.strip(currentCharset[1]);
- // now, sQual should be "q=x.y"
- try {
- sQual = sQual.substring(2, sQual.length());
- double qual = Double.parseDouble(sQual);
- if(qual > quality) {
- quality = qual;
- }
- }
- catch(Exception e) {
- // if the quality field is not correct, we ignore
- // this encoding
- continue;
- }
- }
- else {
- // if no quality is given for this encoding,
- // we consider that quality=1, according to RFC2616 14.2
- quality = 1.0;
- }
- encoding = enc;
- }
- }
- }
- if(encoding != null) {
- getMsg().properties.setProperty("content-encoding", encoding);
- }
- }
- }
- */
}
Received on Thursday, 8 September 2005 16:07:33 UTC