- From: Sijtsche Smeman <sijtsche@dev.w3.org>
- Date: Thu, 25 Nov 2004 13:23:27 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/servlet
In directory hutz:/tmp/cvs-serv10053/servlet
Modified Files:
CssValidator.java check.java
Log Message:
HTML output escaped
Index: CssValidator.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/servlet/CssValidator.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- CssValidator.java 1 Jun 2004 10:15:42 -0000 1.14
+++ CssValidator.java 25 Nov 2004 13:23:25 -0000 1.15
@@ -114,36 +114,36 @@
* @exception ServletException if a servlet exception has occurred.
*/
public void init(ServletConfig config) throws ServletException {
- super.init(config);
+ super.init(config);
- // [SECURITY] don't forget this !
- Util.servlet = true;
+ // [SECURITY] don't forget this !
+ Util.servlet = true;
- if (config.getInitParameter("debug") != null) {
- // servlet debug mode
- // define a boolean property CSS.StyleSheet.debug if you want more debug.
- Util.onDebug = config.getInitParameter("debug").equals("true");
- System.err.println( "RUN IN DEBUG MODE: "
- + config.getInitParameter("debug").equals("true"));
- } else if (Util.onDebug) {
- System.err.println( "RUN IN DEBUG MODE but activated outside the servlet" );
- }
+ if (config.getInitParameter("debug") != null) {
+ // servlet debug mode
+ // define a boolean property CSS.StyleSheet.debug if you want more debug.
+ Util.onDebug = config.getInitParameter("debug").equals("true");
+ System.err.println( "RUN IN DEBUG MODE: "
+ + config.getInitParameter("debug").equals("true"));
+ } else if (Util.onDebug) {
+ System.err.println( "RUN IN DEBUG MODE but activated outside the servlet" );
+ }
- if ((config.getInitParameter("import") != null) &&
- (config.getInitParameter("import").equals("false"))) {
- Util.importSecurity = true;
- }
+ if ((config.getInitParameter("import") != null) &&
+ (config.getInitParameter("import").equals("false"))) {
+ Util.importSecurity = true;
+ }
}
private PrintWriter getLocalPrintWriter(OutputStream os, String encoding)
- throws IOException {
- if (encoding != null) {
- return new PrintWriter(new OutputStreamWriter(os, encoding));
- } else {
- return new PrintWriter(os);
- }
+ throws IOException {
+ if (encoding != null) {
+ return new PrintWriter(new OutputStreamWriter(os, encoding));
+ } else {
+ return new PrintWriter(os);
+ }
}
/**
@@ -188,159 +188,159 @@
* @see org.w3c.css.css.StyleSheetGenerator
*/
public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
+ throws ServletException, IOException {
- boolean errorReport = true;
- int warningLevel = 2;
- CssParser parser = null;
+ boolean errorReport = true;
+ int warningLevel = 2;
+ CssParser parser = null;
- String uri = null;
- try {
- uri = req.getParameter("uri");
- } catch (Exception ex) {
- // pb in URI decoding (bad escaping, most probably)
- handleError(res, "No file",
- new IOException("Invalid escape sequence in URI"));
- }
- String text = null;
- try {
- text = req.getParameter("text");
- } catch (Exception ex) {
- // pb in URI decoding (bad escaping, most probably)
- // not sure it will work here, as it may be catched by the first
- // getParameter call
- handleError(res, "Invalid text",
- new IOException("Invalid escape sequence in URI"));
- }
- String output = req.getParameter("output");
- String warning = req.getParameter("warning");
- String error = req.getParameter("error");
- String profile = req.getParameter("profile");
- String usermedium = req.getParameter("usermedium");
- ApplContext ac = new ApplContext(req.getHeader("Accept-Language"));
+ String uri = null;
+ try {
+ uri = req.getParameter("uri");
+ } catch (Exception ex) {
+ // pb in URI decoding (bad escaping, most probably)
+ handleError(res, "No file",
+ new IOException("Invalid escape sequence in URI"));
+ }
+ String text = null;
+ try {
+ text = req.getParameter("text");
+ } catch (Exception ex) {
+ // pb in URI decoding (bad escaping, most probably)
+ // not sure it will work here, as it may be catched by the first
+ // getParameter call
+ handleError(res, "Invalid text",
+ new IOException("Invalid escape sequence in URI"));
+ }
+ String output = req.getParameter("output");
+ String warning = req.getParameter("warning");
+ String error = req.getParameter("error");
+ String profile = req.getParameter("profile");
+ String usermedium = req.getParameter("usermedium");
+ ApplContext ac = new ApplContext(req.getHeader("Accept-Language"));
- String credential = req.getHeader("Authorization");
- if ((credential != null) && (credential.length() > 1)) {
- ac.setCredential(credential);
- }
+ String credential = req.getHeader("Authorization");
+ if ((credential != null) && (credential.length() > 1)) {
+ ac.setCredential(credential);
+ }
- if (usermedium == null || "".equals(usermedium)) {
- usermedium = "all";
- }
+ if (usermedium == null || "".equals(usermedium)) {
+ usermedium = "all";
+ }
- InputStream in = req.getInputStream();
+ InputStream in = req.getInputStream();
- ac.setMedium(usermedium);
+ ac.setMedium(usermedium);
- if (req.getParameter("debug") != null) {
- Util.onDebug = req.getParameter("debug").equals("true")
- || Util.onDebug;
- if (Util.onDebug) {
- System.err.println("SWITCH DEBUG MODE REQUEST");
- }
- }
+ if (req.getParameter("debug") != null) {
+ Util.onDebug = req.getParameter("debug").equals("true")
+ || Util.onDebug;
+ if (Util.onDebug) {
+ System.err.println("SWITCH DEBUG MODE REQUEST");
+ }
+ }
- text = Util.suppressWhiteSpace(text);
- uri = Util.suppressWhiteSpace(uri);
+ text = Util.suppressWhiteSpace(text);
+ uri = Util.suppressWhiteSpace(uri);
- if (output == null) {
- output = texthtml;
- }
+ if (output == null) {
+ output = texthtml;
+ }
- if (profile != null && !"none".equals(profile)) {
- if ("css1".equals(profile) || "css2".equals(profile) ||
- "css3".equals(profile) || "svg".equals(profile) ||
- "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
- ac.setCssVersion(profile);
- } else {
- ac.setProfile(profile);
- ac.setCssVersion("css2");
- }
- } else {
- ac.setCssVersion("css2");
- }
- if (Util.onDebug) {
- System.err.println( "[DEBUG] profile is : " + ac.getCssVersion()
- + " medium is " + usermedium);
- }
+ if (profile != null && !"none".equals(profile)) {
+ if ("css1".equals(profile) || "css2".equals(profile) ||
+ "css3".equals(profile) || "svg".equals(profile) ||
+ "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
+ ac.setCssVersion(profile);
+ } else {
+ ac.setProfile(profile);
+ ac.setCssVersion("css2");
+ }
+ } else {
+ ac.setCssVersion("css2");
+ }
+ if (Util.onDebug) {
+ System.err.println( "[DEBUG] profile is : " + ac.getCssVersion()
+ + " medium is " + usermedium);
+ }
- // verify the request
- if ((uri == null) && (text == null)) {
- // res.sendError(res.SC_BAD_REQUEST,
+ // verify the request
+ if ((uri == null) && (text == null)) {
+ // res.sendError(res.SC_BAD_REQUEST,
// "You have send an invalid request.");
- handleError(res, "No file",
- new IOException(ac.getMsg().getServletString("invalid-request")));
- return;
- }
+ handleError(res, "No file",
+ new IOException(ac.getMsg().getServletString("invalid-request")));
+ return;
+ }
- in.close();
+ in.close();
- // set the warning output
- if (warning != null) {
- if (warning.equals("no")) {
- warningLevel = -1;
- } else {
- try {
- warningLevel = Integer.parseInt(warning);
- } catch (Exception e) {
- System.err.println( e );
- }
- }
- }
+ // set the warning output
+ if (warning != null) {
+ if (warning.equals("no")) {
+ warningLevel = -1;
+ } else {
+ try {
+ warningLevel = Integer.parseInt(warning);
+ } catch (Exception e) {
+ System.err.println( e );
+ }
+ }
+ }
- // set the error erport
- if (error != null && error.equals("no")) {
- errorReport = false;
- }
+ // set the error erport
+ if (error != null && error.equals("no")) {
+ errorReport = false;
+ }
- // debug mode
- Util.verbose("\nServlet request ");
- if (uri != null) {
- Util.verbose("Source file : " + uri );
- } else {
- Util.verbose("TEXTAREA Input");
- }
- // verbose("From " + req.getRemoteHost() +
- // " (" + req.getRemoteAddr() + ") at " + (new Date()) );
+ // debug mode
+ Util.verbose("\nServlet request ");
+ if (uri != null) {
+ Util.verbose("Source file : " + uri );
+ } else {
+ Util.verbose("TEXTAREA Input");
+ }
+ // verbose("From " + req.getRemoteHost() +
+ // " (" + req.getRemoteAddr() + ") at " + (new Date()) );
- if (uri != null) {
- // HTML document
- try {
- uri = HTTPURL.getURL(uri).toString();
- HTMLStyleSheetParser URLparser = new HTMLStyleSheetParser(ac,
- uri);
- handleRequest(ac, res, uri, URLparser.getStyleSheet(), output,
- warningLevel, errorReport);
- } catch (ProtocolException pex) {
- if (Util.onDebug) {
- pex.printStackTrace();
- }
- res.setHeader("WWW-Authenticate", pex.getMessage());
- res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
- } catch (Exception e) {
- handleError(res, uri, e);
- }
- } else {
- Util.verbose("- TextArea Data -");
- Util.verbose(text);
- Util.verbose("- End of TextArea Data");
+ if (uri != null) {
+ // HTML document
+ try {
+ uri = HTTPURL.getURL(uri).toString();
+ HTMLStyleSheetParser URLparser = new HTMLStyleSheetParser(ac,
+ uri);
+ handleRequest(ac, res, uri, URLparser.getStyleSheet(), output,
+ warningLevel, errorReport);
+ } catch (ProtocolException pex) {
+ if (Util.onDebug) {
+ pex.printStackTrace();
+ }
+ res.setHeader("WWW-Authenticate", pex.getMessage());
+ res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ } catch (Exception e) {
+ handleError(res, uri, e);
+ }
+ } else {
+ Util.verbose("- TextArea Data -");
+ Util.verbose(text);
+ Util.verbose("- End of TextArea Data");
- parser = new StyleSheetParser();
+ parser = new StyleSheetParser();
- try {
- parser.parseStyleElement(ac,
- new ByteArrayInputStream(text.getBytes()),
- null, usermedium,
- new URL("file://localhost/TextArea"), 0);
- handleRequest(ac, res,
- "file://localhost/TextArea",
- parser.getStyleSheet(),
- output, warningLevel, errorReport);
- } catch (Exception e) {
- handleError(res, "TextArea", e);
- }
- }
- Util.verbose("CssValidator: Request terminated.\n");
+ try {
+ parser.parseStyleElement(ac,
+ new ByteArrayInputStream(text.getBytes()),
+ null, usermedium,
+ new URL("file://localhost/TextArea"), 0);
+ handleRequest(ac, res,
+ "file://localhost/TextArea",
+ parser.getStyleSheet(),
+ output, warningLevel, errorReport);
+ } catch (Exception e) {
+ handleError(res, "TextArea", e);
+ }
+ }
+ Util.verbose("CssValidator: Request terminated.\n");
}
/**
@@ -378,287 +378,287 @@
* @see org.w3c.css.css.StyleSheetGenerator
*/
public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
+ throws ServletException, IOException {
- ApplContext ac = new ApplContext(req.getHeader("Accept-Language"));
- boolean errorReport = true;
- int warningLevel = 2;
- CssParser parser = null;
- FakeFile file = null;
- String output = null;
- boolean XMLinput = false;
- String warning = null;
- String error = null;
- String profile = null;
- String usermedium = "all";
+ ApplContext ac = new ApplContext(req.getHeader("Accept-Language"));
+ boolean errorReport = true;
+ int warningLevel = 2;
+ CssParser parser = null;
+ FakeFile file = null;
+ String output = null;
+ boolean XMLinput = false;
+ String warning = null;
+ String error = null;
+ String profile = null;
+ String usermedium = "all";
- ServletInputStream in = req.getInputStream();
- byte[] buf = new byte[2048];
- byte[] general = new byte[65536];
- int count = 0;
- int len;
+ ServletInputStream in = req.getInputStream();
+ byte[] buf = new byte[2048];
+ byte[] general = new byte[65536];
+ int count = 0;
+ int len;
- if (req.getParameter("debug") != null) {
- Util.onDebug = req.getParameter("debug").equals("true") ||
- Util.onDebug;
- if (Util.onDebug) {
- System.err.println("SWITCH DEBUG MODE REQUEST");
- }
- }
+ if (req.getParameter("debug") != null) {
+ Util.onDebug = req.getParameter("debug").equals("true") ||
+ Util.onDebug;
+ if (Util.onDebug) {
+ System.err.println("SWITCH DEBUG MODE REQUEST");
+ }
+ }
- Util.verbose("\nCssValidator: Servlet request ");
- // verbose("From " + req.getRemoteHost() +
- // " (" + req.getRemoteAddr() + ") at " + (new Date()) );
- Util.verbose("Content-length : " + req.getContentLength());
+ Util.verbose("\nCssValidator: Servlet request ");
+ // verbose("From " + req.getRemoteHost() +
+ // " (" + req.getRemoteAddr() + ") at " + (new Date()) );
+ Util.verbose("Content-length : " + req.getContentLength());
- if (req.getContentType().trim().startsWith("multipart/form-data")) {
- Util.verbose("Content-type : multipart/form-data");
- }
+ if (req.getContentType().trim().startsWith("multipart/form-data")) {
+ Util.verbose("Content-type : multipart/form-data");
+ }
- try {
- while ((len = in.readLine(buf, 0, buf.length)) != -1) {
- if (len >= 2 && buf[len-1] == '\n' && buf[len-2] == '\r') {
- len -= 1;
- buf[len-1] = (byte) '\n';
- }
- if (len != 0 && buf[len-1] == '\r') {
- buf[len-1] = (byte) '\n';
- }
+ try {
+ while ((len = in.readLine(buf, 0, buf.length)) != -1) {
+ if (len >= 2 && buf[len-1] == '\n' && buf[len-2] == '\r') {
+ len -= 1;
+ buf[len-1] = (byte) '\n';
+ }
+ if (len != 0 && buf[len-1] == '\r') {
+ buf[len-1] = (byte) '\n';
+ }
- if (general.length < (count + len)) {
- byte[] old = general;
- general = new byte[old.length * 2];
- System.arraycopy(old, 0, general, 0, old.length);
- }
- System.arraycopy(buf, 0, general, count, len);
- count += len;
- }
- } finally {
- in.close();
- }
+ if (general.length < (count + len)) {
+ byte[] old = general;
+ general = new byte[old.length * 2];
+ System.arraycopy(old, 0, general, 0, old.length);
+ }
+ System.arraycopy(buf, 0, general, count, len);
+ count += len;
+ }
+ } finally {
+ in.close();
+ }
- try {
- buf = new byte[count];
- System.arraycopy(general, 0, buf, 0, count);
- NVPair[] tmp = Codecs.mpFormDataDecode(buf, req.getContentType());
- for (int i = 0; i < tmp.length; i++) {
- if (tmp[i].getName().equals("file")) {
- file = (FakeFile) tmp[i].getValue();
- } else if (tmp[i].getName().equals("output")) {
- output = (String) tmp[i].getValue();
- } else if (tmp[i].getName().equals("warning")) {
- warning = (String) tmp[i].getValue();
- } else if (tmp[i].getName().equals("error")) {
- warning = (String) tmp[i].getValue();
- } else if (tmp[i].getName().equals("input")) {
- XMLinput = ((String) tmp[i].getValue()).equals("XML");
- } else if (tmp[i].getName().equals("profile")) {
- profile = (String) tmp[i].getValue();
- } else if (tmp[i].getName().equals("usermedium")) {
- usermedium = (String) tmp[i].getValue();
- if (usermedium == null || "".equals(usermedium)) {
- usermedium = "all";
- }
- }
- }
- } catch (Exception e) {
- System.out.println("Oups! Error in Util/Codecs.java?!?");
- e.printStackTrace();
- }
+ try {
+ buf = new byte[count];
+ System.arraycopy(general, 0, buf, 0, count);
+ NVPair[] tmp = Codecs.mpFormDataDecode(buf, req.getContentType());
+ for (int i = 0; i < tmp.length; i++) {
+ if (tmp[i].getName().equals("file")) {
+ file = (FakeFile) tmp[i].getValue();
+ } else if (tmp[i].getName().equals("output")) {
+ output = (String) tmp[i].getValue();
+ } else if (tmp[i].getName().equals("warning")) {
+ warning = (String) tmp[i].getValue();
+ } else if (tmp[i].getName().equals("error")) {
+ warning = (String) tmp[i].getValue();
+ } else if (tmp[i].getName().equals("input")) {
+ XMLinput = ((String) tmp[i].getValue()).equals("XML");
+ } else if (tmp[i].getName().equals("profile")) {
+ profile = (String) tmp[i].getValue();
+ } else if (tmp[i].getName().equals("usermedium")) {
+ usermedium = (String) tmp[i].getValue();
+ if (usermedium == null || "".equals(usermedium)) {
+ usermedium = "all";
+ }
+ }
+ }
+ } catch (Exception e) {
+ System.out.println("Oups! Error in Util/Codecs.java?!?");
+ e.printStackTrace();
+ }
- ac.setMedium(usermedium);
+ ac.setMedium(usermedium);
- if (output == null) {
- output = texthtml;
- }
- if (file == null || file.getSize() == 0) {
- // res.sendError(res.SC_BAD_REQUEST,
- // "You have send an invalid request");
- handleError(res, "No file",
- new IOException(ac.getMsg().getServletString("invalid-request")));
- return;
- }
+ if (output == null) {
+ output = texthtml;
+ }
+ if (file == null || file.getSize() == 0) {
+ // res.sendError(res.SC_BAD_REQUEST,
+ // "You have send an invalid request");
+ handleError(res, "No file",
+ new IOException(ac.getMsg().getServletString("invalid-request")));
+ return;
+ }
- // set the warning output
- if (warning != null) {
- if (warning.equals("no")) {
- warningLevel = -1;
- } else {
- try {
- warningLevel = Integer.parseInt(warning);
- } catch (Exception e) {
- System.err.println( e );
- }
- }
- }
+ // set the warning output
+ if (warning != null) {
+ if (warning.equals("no")) {
+ warningLevel = -1;
+ } else {
+ try {
+ warningLevel = Integer.parseInt(warning);
+ } catch (Exception e) {
+ System.err.println( e );
+ }
+ }
+ }
- // set the error report
- if (error != null && error.equals("no")) {
- errorReport = false;
- }
+ // set the error report
+ if (error != null && error.equals("no")) {
+ errorReport = false;
+ }
- Util.verbose("File : " + file.getName());
+ Util.verbose("File : " + file.getName());
- parser = new StyleSheetParser();
+ parser = new StyleSheetParser();
- try {
- parser.parseStyleElement(ac, file.getInputStream(),
- null, null,
- new URL("file://localhost/"
- + file.getName()),
- 0);
+ try {
+ parser.parseStyleElement(ac, file.getInputStream(),
+ null, null,
+ new URL("file://localhost/"
+ + file.getName()),
+ 0);
- handleRequest(ac, res, "file://localhost/" + file.getName(),
- parser.getStyleSheet(), output,
- warningLevel, errorReport);
- } catch (Exception e) {
- handleError(res, file.getName(), e);
- }
+ handleRequest(ac, res, "file://localhost/" + file.getName(),
+ parser.getStyleSheet(), output,
+ warningLevel, errorReport);
+ } catch (Exception e) {
+ handleError(res, file.getName(), e);
+ }
- Util.verbose("CssValidator: Request terminated.\n");
+ Util.verbose("CssValidator: Request terminated.\n");
}
private void handleRequest(ApplContext ac,
- HttpServletResponse res,
- String title, StyleSheet styleSheet,
- String output, int warningLevel,
- boolean errorReport)
+ HttpServletResponse res,
+ String title, StyleSheet styleSheet,
+ String output, int warningLevel,
+ boolean errorReport)
throws Exception {
- // I don't want cache for the response (inhibits proxy)
- res.setHeader("Pragma", "no-cache"); // @@deprecated
- res.setHeader("Cache-Control", "no-cache");
- // Here is a little joke :-)
-// res.setHeader("Server", server_name);
+ // I don't want cache for the response (inhibits proxy)
+ res.setHeader("Pragma", "no-cache"); // @@deprecated
+ res.setHeader("Cache-Control", "no-cache");
+ // Here is a little joke :-)
+// res.setHeader("Server", server_name);
- // set the content-type for the response
- MimeType outputMt = null;
- if (output.equals(texthtml)) {
- outputMt = MimeType.TEXT_HTML.getClone();
- } else if (output.equals(soap12)) {
- outputMt = new MimeType(soap12);
-// outputMt = MimeType.TEXT_PLAIN.getClone();
- } else {
- outputMt = MimeType.TEXT_PLAIN.getClone();
- }
- if (ac.getContentEncoding() != null) {
- outputMt.setParameter("charset", ac.getContentEncoding());
- }
- res.setContentType(outputMt.toString());
+ // set the content-type for the response
+ MimeType outputMt = null;
+ if (output.equals(texthtml)) {
+ outputMt = MimeType.TEXT_HTML.getClone();
+ } else if (output.equals(soap12)) {
+ outputMt = new MimeType(soap12);
+// outputMt = MimeType.TEXT_PLAIN.getClone();
+ } else {
+ outputMt = MimeType.TEXT_PLAIN.getClone();
+ }
+ if (ac.getContentEncoding() != null) {
+ outputMt.setParameter("charset", ac.getContentEncoding());
+ }
+ res.setContentType(outputMt.toString());
- if (ac.getContentLanguage() != null) {
- res.setHeader("Content-Language", ac.getContentLanguage());
- } else {
- res.setHeader("Content-Language", "en");
- }
+ if (ac.getContentLanguage() != null) {
+ res.setHeader("Content-Language", ac.getContentLanguage());
+ } else {
+ res.setHeader("Content-Language", "en");
+ }
- if (styleSheet == null) {
- throw new IOException(ac.getMsg().getServletString("process")
- + " " + title);
- }
+ if (styleSheet == null) {
+ throw new IOException(ac.getMsg().getServletString("process")
+ + " " + title);
+ }
- if ("text/xml".equals(ac.getInput())
- && "text/html".equals(output)) {
- output = "xhtml";
- } else if ("text/html".equals(output)) {
- output = "html";
- } else if ("application/soap+xml".equals(output)) {
- output = "soap12";
- }
- styleSheet.findConflicts(ac);
+ if ("text/xml".equals(ac.getInput())
+ && "text/html".equals(output)) {
+ output = "xhtml";
+ } else if ("text/html".equals(output)) {
+ output = "html";
+ } else if ("application/soap+xml".equals(output)) {
+ output = "soap12";
+ }
+ styleSheet.findConflicts(ac);
- StyleReport style = StyleReportFactory.getStyleReport(ac, title,
- styleSheet,
- output,
- warningLevel);
- if (!errorReport) {
- style.desactivateError();
- }
- PrintWriter out = getLocalPrintWriter(res.getOutputStream(),
- ac.getMsg().getString("output-encoding-name"));
+ StyleReport style = StyleReportFactory.getStyleReport(ac, title,
+ styleSheet,
+ output,
+ warningLevel);
+ if (!errorReport) {
+ style.desactivateError();
+ }
+ PrintWriter out = getLocalPrintWriter(res.getOutputStream(),
+ ac.getMsg().getString("output-encoding-name"));
- try {
- style.print(out);
- } finally {
- out.close();
- }
+ try {
+ style.print(out);
+ } finally {
+ out.close();
+ }
}
private void handleError(HttpServletResponse res,
- String title, Exception e) {
- System.err.println( "[ERROR VALIDATOR] " + title);
- System.err.println( e.toString() );
+ String title, Exception e) {
+ System.err.println( "[ERROR VALIDATOR] " + title);
+ System.err.println( e.toString() );
e.printStackTrace();
- // I don't want cache for the response (inhibits proxy)
- res.setHeader("Pragma", "no-cache"); // @@deprecated
- res.setHeader("Cache-Control", "no-cache");
+ // I don't want cache for the response (inhibits proxy)
+ res.setHeader("Pragma", "no-cache"); // @@deprecated
+ res.setHeader("Cache-Control", "no-cache");
- // Here is a little joke :-)
- res.setHeader("Server", server_name);
- res.setHeader("Content-Language", "en");
- res.setHeader("Content-Type", "text/html; charset=us-ascii");
- // res.setHeader("Content-Encoding", "us-ascii");
+ // Here is a little joke :-)
+ res.setHeader("Server", server_name);
+ res.setHeader("Content-Language", "en");
+ res.setHeader("Content-Type", "text/html; charset=us-ascii");
+ // res.setHeader("Content-Encoding", "us-ascii");
- PrintWriter out = null;
+ PrintWriter out = null;
- try {
- out = getLocalPrintWriter(res.getOutputStream(), null);
- URL localURL = CssValidator.class.getResource("error.html");
- DataInputStream in = new DataInputStream(localURL.openStream());
- try {
- while (true) {
- out.print((char) in.readUnsignedByte());
- }
- } catch (EOFException eof) {
- out.println("<h2>Target: " + title + "</h2>");
- out.println("<div class=\"error\">");
- if (e instanceof IOException) {
- out.println("<p>I/O Error: ");
- out.println(e.getMessage());
- } else if (e instanceof SAXParseException) {
- SAXParseException saxe = (SAXParseException) e;
- out.println("<p>Please, validate your XML document"+
- " first!</p>");
- if (saxe.getLineNumber() != -1) {
- out.print("<p>Line ");
- out.print(saxe.getLineNumber());
- out.println("</p>");
- }
- if (saxe.getColumnNumber() != -1) {
- out.print("<p>Column ");
- out.print(saxe.getColumnNumber());
- out.print("</p>\n");
- }
- out.println("<p>" + e.getMessage());
- } else if (e instanceof NullPointerException) {
- out.println("<p>Oups! Internal error!</p><p>");
- e.printStackTrace();
- } else {
- out.println(e.toString());
- }
- out.println("</p></div>\n<hr />\n<p><img src='images/mwc"+
- "ss.gif' alt='made with CSS' /></p>\n<addres"+
- "s><a href='Email.html'>www-validator-css</a"+
- "></address>\n</body></html>");
- out.flush();
- /*
- System.err.println("CSS Validator: request failed.");
- e.printStackTrace();
- */
- }
- } catch (Exception unknown) {
- if (out != null) {
- out.println("org.w3c.css.servlet.CssValidator: couldn't "+
- "load error file");
- out.flush();
- }
- unknown.printStackTrace();
- } finally {
- if (out != null) {
- out.close();
- }
- }
+ try {
+ out = getLocalPrintWriter(res.getOutputStream(), null);
+ URL localURL = CssValidator.class.getResource("error.html");
+ DataInputStream in = new DataInputStream(localURL.openStream());
+ try {
+ while (true) {
+ out.print((char) in.readUnsignedByte());
+ }
+ } catch (EOFException eof) {
+ out.println("<h2>Target: " + Util.escapeHTML(title) + "</h2>");
+ out.println("<div class=\"error\">");
+ if (e instanceof IOException) {
+ out.println("<p>I/O Error: ");
+ out.println(Util.escapeHTML(e.getMessage()));
+ } else if (e instanceof SAXParseException) {
+ SAXParseException saxe = (SAXParseException) e;
+ out.println("<p>Please, validate your XML document"+
+ " first!</p>");
+ if (saxe.getLineNumber() != -1) {
+ out.print("<p>Line ");
+ out.print(saxe.getLineNumber());
+ out.println("</p>");
+ }
+ if (saxe.getColumnNumber() != -1) {
+ out.print("<p>Column ");
+ out.print(saxe.getColumnNumber());
+ out.print("</p>\n");
+ }
+ out.println("<p>" + Util.escapeHTML(e.getMessage()));
+ } else if (e instanceof NullPointerException) {
+ out.println("<p>Oups! Internal error!</p><p>");
+ e.printStackTrace();
+ } else {
+ out.println(e.toString());
+ }
+ out.println("</p></div>\n<hr />\n<p><img src='images/mwc"+
+ "ss.gif' alt='made with CSS' /></p>\n<addres"+
+ "s><a href='Email.html'>www-validator-css</a"+
+ "></address>\n</body></html>");
+ out.flush();
+ /*
+ System.err.println("CSS Validator: request failed.");
+ e.printStackTrace();
+ */
+ }
+ } catch (Exception unknown) {
+ if (out != null) {
+ out.println("org.w3c.css.servlet.CssValidator: couldn't "+
+ "load error file");
+ out.flush();
+ }
+ unknown.printStackTrace();
+ } finally {
+ if (out != null) {
+ out.close();
+ }
+ }
}
}
Index: check.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/servlet/check.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- check.java 19 May 2002 04:12:37 -0000 1.3
+++ check.java 25 Nov 2004 13:23:25 -0000 1.4
@@ -6,6 +6,9 @@
// Please first read the full copyright statement in file COPYRIGHT.html
/*
* $Log$
+ * Revision 1.4 2004/11/25 13:23:25 sijtsche
+ * HTML output escaped
+ *
* Revision 1.3 2002/05/19 04:12:37 plehegar
* Replaced the email address
*
@@ -114,25 +117,25 @@
* @exception ServletException if a servlet exception has occurred.
*/
public void init(ServletConfig config) throws ServletException {
- super.init(config);
-
+ super.init(config);
+
- // [SECURITY] don't forget this !
- Util.servlet = true;
-
- if (config.getInitParameter("debug") != null) {
- // servlet debug mode
- // define a boolean property CSS.StyleSheet.debug if you want more debug.
- this.debug = config.getInitParameter("debug").equals("true");
- }
-
- parser = new StyleSheetParser();
-
- if ((config.getInitParameter("import") != null) &&
- (config.getInitParameter("import").equals("false"))) {
- Util.importSecurity = true;
- }
-
+ // [SECURITY] don't forget this !
+ Util.servlet = true;
+
+ if (config.getInitParameter("debug") != null) {
+ // servlet debug mode
+ // define a boolean property CSS.StyleSheet.debug if you want more debug.
+ this.debug = config.getInitParameter("debug").equals("true");
+ }
+
+ parser = new StyleSheetParser();
+
+ if ((config.getInitParameter("import") != null) &&
+ (config.getInitParameter("import").equals("false"))) {
+ Util.importSecurity = true;
+ }
+
}
/**
@@ -177,207 +180,207 @@
* @see org.w3c.css.css.StyleSheetGenerator
*/
public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
- int warningLevel = 2;
+ throws ServletException, IOException {
+ int warningLevel = 2;
- String uri = null;
- String warning = req.getParameter("warning");
+ String uri = null;
+ String warning = req.getParameter("warning");
String output = req.getParameter("output");
- ApplContext ac = new ApplContext(req.getHeader("Accept-Language"));
- InputStream in = req.getInputStream();
+ ApplContext ac = new ApplContext(req.getHeader("Accept-Language"));
+ InputStream in = req.getInputStream();
- // Here is a little joke :-)
- res.setHeader("Server", CssValidator.server_name);
+ // Here is a little joke :-)
+ res.setHeader("Server", CssValidator.server_name);
- // I don't want cache for the response (inhibits proxy)
- res.setHeader("Pragma", "no-cache"); // @@deprecated
- res.setHeader("Cache-Control", "no-cache");
+ // I don't want cache for the response (inhibits proxy)
+ res.setHeader("Pragma", "no-cache"); // @@deprecated
+ res.setHeader("Cache-Control", "no-cache");
- if (req.getParameter("debug") != null) {
- Util.onDebug = req.getParameter("debug").equals("true");
- if (Util.onDebug) {
- debug = true;
- System.err.println("SWITCH DEBUG MODE REQUEST");
- }
- }
-
- uri = req.getHeader("Referer");
- if (req.getPathInfo() == null) {
- res.setHeader("Content-Length", "0");
- res.sendRedirect("http://" + req.getServerName() + ":"
- + req.getServerPort() +
- "/css-validator/");
- return;
- }
- if (!req.getPathInfo().equals("/referer")) {
- res.setHeader("Content-Length", "0");
- res.sendRedirect("http://" + req.getServerName() + ":"
- + req.getServerPort() + "/css-validator"
- + req.getPathInfo());
+ if (req.getParameter("debug") != null) {
+ Util.onDebug = req.getParameter("debug").equals("true");
+ if (Util.onDebug) {
+ debug = true;
+ System.err.println("SWITCH DEBUG MODE REQUEST");
+ }
+ }
+
+ uri = req.getHeader("Referer");
+ if (req.getPathInfo() == null) {
+ res.setHeader("Content-Length", "0");
+ res.sendRedirect("http://" + req.getServerName() + ":"
+ + req.getServerPort() +
+ "/css-validator/");
+ return;
+ }
+ if (!req.getPathInfo().equals("/referer")) {
+ res.setHeader("Content-Length", "0");
+ res.sendRedirect("http://" + req.getServerName() + ":"
+ + req.getServerPort() + "/css-validator"
+ + req.getPathInfo());
- //handleError(out, "No file",
- // new IOException("You have send an invalid request."));
- return;
- }
- if (uri == null) {
- res.setHeader("Content-Length", "0");
- res.sendRedirect("http://" + req.getServerName() + ":"
- + req.getServerPort() +
- "/css-validator/");
- return;
- }
-
- uri = Util.suppressWhiteSpace(uri);
-
- if (output == null) {
- output = CssValidator.texthtml;
- }
-
- in.close();
-
- PrintWriter out = new PrintWriter(res.getOutputStream());
+ //handleError(out, "No file",
+ // new IOException("You have send an invalid request."));
+ return;
+ }
+ if (uri == null) {
+ res.setHeader("Content-Length", "0");
+ res.sendRedirect("http://" + req.getServerName() + ":"
+ + req.getServerPort() +
+ "/css-validator/");
+ return;
+ }
+
+ uri = Util.suppressWhiteSpace(uri);
+
+ if (output == null) {
+ output = CssValidator.texthtml;
+ }
+
+ in.close();
+
+ PrintWriter out = new PrintWriter(res.getOutputStream());
- // set the content-type for the response
- // set the content-type for the response
- if (ac.getContentType() != null) {
- res.setContentType(ac.getContentType());
- } else if (output.equals(CssValidator.texthtml)) {
- res.setContentType(CssValidator.texthtml);
- } else {
- res.setContentType(CssValidator.textplain);
- }
- if (ac.getContentLanguage() != null) {
- res.setHeader("Content-Language", ac.getContentLanguage());
- } else {
- res.setHeader("Content-Language", "en");
- }
- if (ac.getContentEncoding() != null) {
- res.setHeader("Content-Encoding", ac.getContentEncoding());
- } /* else {
- res.setHeader("Content-Encoding", "identity");
- } */
-
- // Here is a little joke :-)
- res.setHeader("Server", CssValidator.server_name);
-
- // set the warning output
- if (warning != null) {
- if (warning.equals("no")) {
- warningLevel = -1;
- } else {
- try {
- warningLevel = Integer.parseInt(warning);
- } catch (Exception e) {
- System.err.println( e );
- }
- }
- }
-
- // debug mode
- verbose("\nServlet request ");
- verbose("Source file : " + uri );
-
- // HTML document
- try {
- uri = HTTPURL.getURL(uri).toString();
- HTMLStyleSheetParser URLparser = new HTMLStyleSheetParser(ac, uri);
- handleRequest(ac, out, uri, URLparser.getStyleSheet(), output,
- warningLevel, true);
+ // set the content-type for the response
+ // set the content-type for the response
+ if (ac.getContentType() != null) {
+ res.setContentType(ac.getContentType());
+ } else if (output.equals(CssValidator.texthtml)) {
+ res.setContentType(CssValidator.texthtml);
+ } else {
+ res.setContentType(CssValidator.textplain);
+ }
+ if (ac.getContentLanguage() != null) {
+ res.setHeader("Content-Language", ac.getContentLanguage());
+ } else {
+ res.setHeader("Content-Language", "en");
+ }
+ if (ac.getContentEncoding() != null) {
+ res.setHeader("Content-Encoding", ac.getContentEncoding());
+ } /* else {
+ res.setHeader("Content-Encoding", "identity");
+ } */
+
+ // Here is a little joke :-)
+ res.setHeader("Server", CssValidator.server_name);
+
+ // set the warning output
+ if (warning != null) {
+ if (warning.equals("no")) {
+ warningLevel = -1;
+ } else {
+ try {
+ warningLevel = Integer.parseInt(warning);
+ } catch (Exception e) {
+ System.err.println( e );
+ }
+ }
+ }
+
+ // debug mode
+ verbose("\nServlet request ");
+ verbose("Source file : " + uri );
+
+ // HTML document
+ try {
+ uri = HTTPURL.getURL(uri).toString();
+ HTMLStyleSheetParser URLparser = new HTMLStyleSheetParser(ac, uri);
+ handleRequest(ac, out, uri, URLparser.getStyleSheet(), output,
+ warningLevel, true);
- } catch (Exception e) {
- handleError(out, uri, e);
- } finally {
- out.close();
- }
+ } catch (Exception e) {
+ handleError(out, uri, e);
+ } finally {
+ out.close();
+ }
- verbose("CssValidator: Request terminated.\n");
+ verbose("CssValidator: Request terminated.\n");
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
+ throws ServletException, IOException {
- handleError(new PrintWriter(res.getOutputStream()), "No file",
- new IOException("You have send an invalid request."));
+ handleError(new PrintWriter(res.getOutputStream()), "No file",
+ new IOException("You have send an invalid request."));
}
private void handleRequest(ApplContext ac, PrintWriter out, String title,
- StyleSheet styleSheet, String output,
- int warningLevel, boolean errorReport)
+ StyleSheet styleSheet, String output,
+ int warningLevel, boolean errorReport)
throws Exception {
- if (styleSheet == null) {
- throw new IOException("Can't process the file : " + title);
- }
-
- styleSheet.findConflicts(ac);
+ if (styleSheet == null) {
+ throw new IOException("Can't process the file : " + title);
+ }
+
+ styleSheet.findConflicts(ac);
- if ("text/xml".equals(ac.getInput())
- && "text/html".equals(output)) {
- output = "xhtml";
- } else if ("text/html".equals(output)) {
- output = "html";
- }
-
- StyleSheetGeneratorHTML2 style;
- style = new StyleSheetGeneratorHTML2(ac, title, styleSheet,
- output, warningLevel);
- if (!errorReport) {
- style.desactivateError();
- }
- style.print(out);
+ if ("text/xml".equals(ac.getInput())
+ && "text/html".equals(output)) {
+ output = "xhtml";
+ } else if ("text/html".equals(output)) {
+ output = "html";
+ }
+
+ StyleSheetGeneratorHTML2 style;
+ style = new StyleSheetGeneratorHTML2(ac, title, styleSheet,
+ output, warningLevel);
+ if (!errorReport) {
+ style.desactivateError();
+ }
+ style.print(out);
}
private void handleError(PrintWriter out, String title, Exception e) {
- try {
- URL localURL = CssValidator.class.getResource("error.html");
- DataInputStream in = new DataInputStream(localURL.openStream());
- try {
- while (true) {
- out.print((char) in.readUnsignedByte());
- }
- } catch (EOFException eof) {
- out.println("<h2>Target: " + title + "</h2>");
- out.println("<div class=\"error\">");
- if (e instanceof IOException) {
- out.println("<p>I/O Error: ");
- out.println(e.getMessage());
- } else if (e instanceof SAXParseException) {
- SAXParseException saxe = (SAXParseException) e;
- out.println("<p>Please, validate your XML document first!</p>");
- if (saxe.getLineNumber() != -1) {
- out.println("<p>Line " + saxe.getLineNumber() + "</p>");
- }
- if (saxe.getColumnNumber() != -1) {
- out.println("<p>Column " + saxe.getColumnNumber() + "</p>");
- }
- out.println("<p>" + e.getMessage());
- } else if (e instanceof NullPointerException) {
- out.println("<p>Oups! Internal error!</p><p>");
- e.printStackTrace();
- } else {
- out.println(e.toString());
- }
- out.println("</p></div>");
+ try {
+ URL localURL = CssValidator.class.getResource("error.html");
+ DataInputStream in = new DataInputStream(localURL.openStream());
+ try {
+ while (true) {
+ out.print((char) in.readUnsignedByte());
+ }
+ } catch (EOFException eof) {
+ out.println("<h2>Target: " + Util.escapeHTML(title) + "</h2>");
+ out.println("<div class=\"error\">");
+ if (e instanceof IOException) {
+ out.println("<p>I/O Error: ");
+ out.println(Util.escapeHTML(e.getMessage()));
+ } else if (e instanceof SAXParseException) {
+ SAXParseException saxe = (SAXParseException) e;
+ out.println("<p>Please, validate your XML document first!</p>");
+ if (saxe.getLineNumber() != -1) {
+ out.println("<p>Line " + saxe.getLineNumber() + "</p>");
+ }
+ if (saxe.getColumnNumber() != -1) {
+ out.println("<p>Column " + saxe.getColumnNumber() + "</p>");
+ }
+ out.println("<p>" + e.getMessage());
+ } else if (e instanceof NullPointerException) {
+ out.println("<p>Oups! Internal error!</p><p>");
+ e.printStackTrace();
+ } else {
+ out.println(e.toString());
+ }
+ out.println("</p></div>");
- out.println("<hr />");
- out.println("<p><img src='images/mwcss.gif' alt='made with CSS' width='72' height='48' /></p>");
- out.println("<address><a href='Email.html'>www-validator-css</a></address>");
- out.println("</body></html>");
- out.flush();
- System.err.println("CSS Validator: request failed.");
- e.printStackTrace();
- }
- } catch (Exception unknown) {
- out.println("org.w3c.css.servlet.CssValidator: couldn't load error file");
- out.flush();
- unknown.printStackTrace();
- }
+ out.println("<hr />");
+ out.println("<p><img src='images/mwcss.gif' alt='made with CSS' width='72' height='48' /></p>");
+ out.println("<address><a href='Email.html'>www-validator-css</a></address>");
+ out.println("</body></html>");
+ out.flush();
+ System.err.println("CSS Validator: request failed.");
+ e.printStackTrace();
+ }
+ } catch (Exception unknown) {
+ out.println("org.w3c.css.servlet.CssValidator: couldn't load error file");
+ out.flush();
+ unknown.printStackTrace();
+ }
}
// trace function
private final void verbose(String s) {
- if (debug) {
- System.err.println( s );
- }
+ if (debug) {
+ System.err.println( s );
+ }
}
}
Received on Thursday, 25 November 2004 13:23:28 UTC