Exceptions thrown by the mobileok checker

Hi,

While re-writing the mobileOK checker validation page, I encountered a
few cases when the checker throws some exceptions, not because it
crashed, but because the URI entered is either inaccessible or not
valid. See examples below.

The exceptions being thrown are developer-readable, but throwing such
exceptions when it's not the checker's fault makes it harder to wrap
something around it. If you take a look at:
http://validator.w3.org/mobile/alpha?docAddr=test
... one would immediately think the checker crashed, and try again, and
again, and then yell by email.
[note the exception returned is slightly different from the example
below because the version of the JAR is older]

I'll handle the exceptions I can think of in the validator page to
return a more user-friendly message that really states that the problem
lies with the URI, but I tend to think the checker should be a black box
that only throws exceptions when it crashes because of a bug, not
because the URI is incorrect, and thus that the catching should rather
be done within the checker.

Or that we should at least provide the list of the exceptions that may
be thrown by the checker [does it already exist?]

I don't think that needs to be done for the beta though...
If there's no objection, I could also action myself and do that,
although I'm not sure I'll be able to work on it very soon.

What do you think?

Francois.



Examples:

1. network error because the resource cannot be accessed:
java -jar mobileOK-Basic-RI-1.0-deploy.jar thisdomaindoesntexist.com
Exception in thread "main" org.w3c.mwi.mobileok.basic.TestException: A network error has happened while retrieving the requested Web page.
MobileOK Basic Test can not be launched.
        at org.w3c.mwi.mobileok.basic.Preprocessor.preprocess(Preprocessor.java:37)
        at org.w3c.mwi.mobileok.basic.Tester.getPreprocessorResults(Tester.java:91)
        at org.w3c.mwi.mobileok.basic.Tester.main(Tester.java:201)


2. URI syntax error because the URI is invalid:
java -jar mobileOK-Basic-RI-1.0-deploy.jar http://
Exception in thread "main" java.net.URISyntaxException: Expected authority at index 7: http://
        at java.net.URI$Parser.fail(URI.java:2809)
        at java.net.URI$Parser.failExpecting(URI.java:2815)
        at java.net.URI$Parser.parseHierarchical(URI.java:3063)
        at java.net.URI$Parser.parse(URI.java:3014)
        at java.net.URI.<init>(URI.java:578)
        at org.w3c.mwi.mobileok.basic.Tester.main(Tester.java:136)


3. Protocol error when the URI is valid but the protocol unknown:
java -jar mobileOK-Basic-RI-1.0-deploy.jar invalid://something
Exception in thread "main" java.lang.IllegalStateException: unsupported protocol: 'invalid'
        at org.apache.commons.httpclient.protocol.Protocol.lazyRegisterProtocol(Protocol.java:149)
        at org.apache.commons.httpclient.protocol.Protocol.getProtocol(Protocol.java:117)
        at org.apache.commons.httpclient.HttpHost.<init>(HttpHost.java:107)
        at org.apache.commons.httpclient.HttpMethodBase.setURI(HttpMethodBase.java:280)
        at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
        at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
        at org.w3c.mwi.mobileok.basic.HTTPResource.<init>(HTTPResource.java:107)
        at org.w3c.mwi.mobileok.basic.HTTPResource.<init>(HTTPResource.java:80)
        at org.w3c.mwi.mobileok.basic.HTTPTextResource.<init>(HTTPTextResource.java:37)
        at org.w3c.mwi.mobileok.basic.HTTPXHTMLResource.<init>(HTTPXHTMLResource.java:93)
        at org.w3c.mwi.mobileok.basic.Preprocessor.preprocess(Preprocessor.java:31)
        at org.w3c.mwi.mobileok.basic.Tester.getPreprocessorResults(Tester.java:91)
        at org.w3c.mwi.mobileok.basic.Tester.main(Tester.java:201)

Received on Wednesday, 30 January 2008 14:12:51 UTC