W3C home > Mailing lists > Public > public-mobileok-checker@w3.org > October 2007

Some thougths about mobileok checker

From: Guido García Bernardo <ggarciab@itdeusto.com>
Date: Mon, 15 Oct 2007 12:48:25 +0200
Message-ID: <47134579.3060906@itdeusto.com>
To: public-mobileok-checker@w3.org

Hello,

 From my brief experience using it, I would like to share some thougths 
about the checker, mainly about the code extensibility.

1. Request headers

I think support for overriding those headers not defined by mobileOK 
Basic will be very useful, not only to extend it, but for other purposes 
like validating if a website is mobileOk in different languages...

2. Package-visibility

A lot of methods are only visible from classes in the package 
org.w3c.mwi.mobileok.basic
That makes it hard to reuse classes from third party developments (like 
mine :)

For example, DOMUtils is generic enough to define its methods as 
public.  At least domToStream and domToStrings that are used from the 
Tester class.  You can simply move DOMUtils to a new 
org.w3c.mwi.mobileok.utils package, and see how that "brokes" the code...

The same with the class Preprocessor that is not public and for the 
following methods used if you want to run the tests from your own class:
    public interface TestImplementation
    public TestResults()
    public void addTestResult(final TestResult result)
    public static TestImplementation getImplementation(final TestType type)

Now it works only because the Tester class is included into the package 
org.w3c.mwi.mobileok.basic.

3. Maybe all AbstractTestImplementation classes should be moved to a new 
package "org.w3c.mwi.mobileok.basic.tests", to improve the code 
understandability to new arrived developers :)

4. Not sure about this, but in the class HTTPResource you could use a 
MultiThreadedHttpConnectionManager

MultiThreadedHttpConnectionManager connectionManager = new 
MultiThreadedHttpConnectionManager();
HttpClient client = new HttpClient(connectionManager);

and the call to method.releaseConnection(); should go in a finally block

More info here : 
http://jakarta.apache.org/httpcomponents/httpclient-3.x/threading.html

5. The class HTTPRedirect uses the getResponseBody method, that may 
result on java.lang.OutOfMemoryError exceptions. This is important when 
the code follows a link to a big resource (like a PDF file...).
Not sure about if this is important in mobileOk tests.  Right now I have 
added a list of Content-Types that I do not want to follow, like 
"application/pdf".

final class HTTPRedirect {
    HTTPRedirect(final HttpMethod httpMethod) throws IOException {
        ...
        rawBody = httpMethod.getResponseBody();
        ...
    }
}

Best regards,

--
Guido García Bernardo
ITDeusto
Received on Monday, 15 October 2007 10:48:10 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:13:04 GMT