W3C home > Mailing lists > Public > public-qa-dev@w3.org > August 2008

Re: first questions on validator.nu

From: Yves Lafon <ylafon@w3.org>
Date: Fri, 1 Aug 2008 08:58:39 -0400 (EDT)
To: Henri Sivonen <hsivonen@iki.fi>
Cc: olivier Thereaux <ot@w3.org>, public-qa-dev@w3.org
Message-ID: <Pine.LNX.4.64.0808010853080.7691@ubzre.j3.bet>

On Fri, 1 Aug 2008, Henri Sivonen wrote:

> On Jul 31, 2008, at 14:54, Yves Lafon wrote:
>
>> On Thu, 31 Jul 2008, Henri Sivonen wrote:
>> 
>>> 
>>> On Jul 31, 2008, at 00:29, olivier Thereaux wrote:
>>> 
>>>> not solved as far as I know. Yves seems to think it's not a big problem - 
>>>> which is great -. All I can say is that I've unfortunately been too busy 
>>>> to work on it but still think this should happen. If you and Yves can 
>>>> work together on it that would be perfect.
>>> 
>>> 
>>> OK. I'll put some cycles into this.
>>> 
>>> (All the servlet [features] that the Validator.nu controller uses are 
>>> *very* old, except for the part that requests incoming query strings to be 
>>> decoded as UTF-8. I guess I'll find out soon enough if that feature is in 
>>> the version of servlets supported by Jigsaw.)
>> 
>> I have to look at the code, but remember doing something for this kind of 
>> issue, anyway, we need to check that (and patch if needed :) )
>
> Indeed, Jigsaw is missing the setCharacterEncoding() method on 
> HttpServletRequest objects. I made the servlet catch 
> java.lang.NoSuchMethodError there, so if the servlet is compiled under a more 
> current servlet API, it runs without crashing (but without non-ASCII query 
> string support) under a vintage servlet API. (Jigsaw also lacks 
> getRequestURL(), but having that method wasn't critical, so I removed the 
> call.)

Ok, I will add those methods, just need to find at which level of the 
servlet spec it belongs.

> The other thing in the servlet that I needed to modify was treating a null 
> return value from getPathInfo() as if the return value had been "/". (With 
> longer paths, Jigsaw seems to swallow the trailing slash.)

Hum, that look like a bug, I'll fix that.

> With these changes, the Validator.nu servlet can run inside Jigsaw. However, 
> some of the functionality of Validator.nu is implemented as servlet filters 
> (gzip in, gzip out, file upload, textarea input). These features don't work 
> under Jigsaw. (At least it seems to me that Jigsaw doesn't implement servlet 
> filters.) I have not modified the UI of Validator.nu to hide references to 
> these features when they aren't present.

Jigsaw already has its filters (for example, the CSS validator uses a 
TE/Transfer-Encoding filter on the way out, which is not a servlet filter 
but a Jigsaw one, used in the whole /css-validator/ subspace.)

> There's an additional problem that is significant considering use as a 
> Unicorn back end: When the method is POST, Jigsaw does not provide request 
> URI query string parameters via the getParameter() method on 
> HttpServletRequest. This means that the output format cannot be selected. (In 
> Jetty, getParameter() returns request URI parameters when POSTing a non-form 
> entity body.)

IIRC, Jigsaw adds the two sets of parameters (from the decoded POST if it 
applies + the URI ones), but it may be an issue if the content is an 
uploaded file, for example.

> Here's what is needed to get up and running from a clean installation of 
> Jigsaw (using Java 5 or later):
> 1) Create a directory for Validator.nu.
> 2) cd into that directory.
> 3) Run svn co http://svn.versiondude.net/whattf/build/trunk/ build
> 4) Run python build/build.py dldeps
> 5) Run python build/build.py build
> 6) cd to the Jigsaw directory.
> 7) Replace scripts/jigsaw.sh with the modified script attached to this email. 
> This script adds the jars needed by Validator.nu to the classpath and sets 
> some system properties for configuring Validator.nu. It replaces legacy SAX 
> and Xerces with current versions. (The favicon, script and style URLs point 
> to about.validator.nu, but can be changes here.)
> 8) Edit the variable VALIDATOR_NU_HOME in the script to point to the 
> directory you created in step #1.
> 9) Add line 
> org.w3c.jigsaw.startup=org.w3c.jigsaw.servlet.ServletPropertiesReader to 
> Jigsaw/config/http-server.props
> 10) Run sh scripts/jigsaw.sh
> 11) From another shell, run scripts/jigadmin.sh and connect to the Jigsaw 
> instance.
> 12) In jigadmin, add a ServletWrapperFrame resource under /servlet with the 
> identifier validator-nu and the class nu.validator.servlet.VerifierServlet.
> 13) Restart Jigsaw.
>
> The generic facet of Validator.nu is now at 
> http://localhost:8001/servlet/validator-nu/. The HTML5 facet is at 
> http://localhost:8001/servlet/validator-nu/html5/. (The parsetree viewer 
> should be at http://localhost:8001/servlet/validator-nu/parsetree/, but it 
> doesn't appear to work.)
>
> When the servlet loads, log4j complains to System.err that it hasn't been 
> initialized. I don't know what the best practice for initializing log4j under 
> Jigsaw is.

There is way to initialize a servlet at startup, I never used log4j but 
that should be the best bet.

-- 
Baroula que barouleras, au tiéu toujou t'entourneras.

         ~~Yves
Received on Friday, 1 August 2008 12:59:15 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 19 August 2010 18:12:49 GMT