In this section

Site navigation below

The Code Style site has evolved by gradual refinement and accumulation of features and content. This review is part of a fully backdated site log and archive that sheds light on when, why and how particular features were implemented.

This log is sometimes updated several times per week, sometimes with a long overdue backlog of items. Many log entries refer to the Code Style Java package, which delivers the servlet services and utilities used to manage this site.

Subscribe to the news feed for this log: RSS news feed

Reverse chronology

31st May 2003

Added a set of methods to the ParseHandler class for handling stylesheet parameters:

Added an empty template method, setParameters(ParseHandler parseHandler,HttpServletRequest request), to the abstract ParseServlet class for subclasses to override. Implemented the setParameters method in the ParseRSS servlet to pass the servlet parameter compatible to the XHTMLtoRSS stylesheet for RSS 0.9 compatibility.

Adjusted exception handling in FileContentRequest class for cases where the requested file is not found, is not a file or is not readable. Created a MockFile object whose canRead method always returns false to test. Finished JavaDoc comments for the FileBroker class.

Created JUnit test cases for the new FileBroker, FileContentRequest and relevant methods in the SourceBrokerFactory class. Added tests to the ParseHandlerTest class for the new parameter methods and wrote a new test class for ParseRSS based on ParseRDFTest.

Added ParseRSS XSLT configuration to Ant build property files.

Changed empty fragment anchor elements in the CSS media monitor test case documents to enclose the test pages' h2 heading.

29th May 2003

Corrected a repeated id attribute on the main site log page.

28th May 2003

Added Mac Safari version 7.4, Mozilla release version 1.3.1 and Opera 7.11 to the browser validation script for the Code Style font survey.

26th May 2003

Corrected the URI abbreviation markup on the Code Style privacy statement, the site log September 2001 and Anchor Points: HTML & XHTML pages.

24th May 2003

Added DC.Description.abstract fields to all browser summary pages in the CSS media monitor section in preparation for the forthcoming ParseRSS service.

22nd May 2003

Moved servlet test case document output to an exclusive test directory on the Web document path to separate from public content.

Added a ParseRSS link to the site-wide page footer include file for testing offline. Some documents do not generate valid RSS, so the XHTMLtoRSS XSLT needs further fine tuning.

18th May 2003

Created a set of modular XSLT templates for processing URIs:

template-AbsolutePath.xsl
A template for obtaining an absolute URL path from a base directory and a relative URL.
template-DomainExtractor.xsl
A template for obtaining the domain URI from a request URI.
template-MakeURI.xsl
Template for making a URI from a host name, base directory and an href value.

Also wrote a set of simple XML test documents and XSLTs to confirm correct operation of these templates in various cases.

17th May 2003

Created a set of ParseRSS test case documents and added links to the main servlet test case document. The test cases cover four modes of operation: definition list "TOC" format; "Fragments" for fragment anchors; a special case "Log" format for fragment anchors; and "Basic" for single documents without fragment anchors.

14th May 2003

Extracted a set of variables and templates from the XHTMLtoRDF XSLT to use as modular xsl:include templates.

variable-AlphabetCase.xsl
The "alphabet case" variables A to Z uppercase and a to z lowercase is used for case conversions.
template-SchemeChooser.xsl
This template takes a scheme parameter and generates appropriate dcterms elements. (Changed a single literal rdf:value element to an xsl:element and adjusted namespace declarations to debug.)
template-DCElements.xsl
Processes XHTML meta elements with Dublin Core schema and generates RDF.

12th May 2003

Completed changes to the SourceBrokerFactory class to instantiate FileBroker objects when passed appropriate parameters.

Updated the Bobby accessibility application link, minor amends to the text.

8th May 2003

Removed a dead link to an article on CSS for Web TV and the "WAVE" accessibility service, which appears to have been abandoned.

5th May 2003

Created a new ParseRSS servlet subclass of the abstract ParseServlet for generating RSS from valid XHTML.

Adapted the JAXP development servlet to the new SourceBroker format to debug the XHTMLtoRSS XSLT. The primary ParseRSS servlet uses a compiled Templates object that does not refresh the stylesheet unless the servlet is destroyed and initialised.

The JAXP servlet implementation required a new concrete FileBroker type and a FileContentRequest object and changes to the SourceBrokerFactory class and unit tests. The factory now throws a SourceException in error conditions, instead of returning a null reference.

Added more explicit exception messages to the ErrorHandler class to trace unexpected errors.

Corrected some JavaDoc comments in the ParseRDF servlet and removed the class name field to inherit this property from the superclass.

Added an alias for the new ParseRSS servlet to the servlet zone configuration and added its XSLT configuration to the relevant Ant filters files.

Trimmed the DC.Description.abstract field for the main Code Style site log page as a test document for the new ParseRSS servlet.

4th May 2003

Re-factored the ServletUtilities class to take generic ServletRequest arguments for the getFirstParameter and makeURL methods instead of HttpServletRequest references.

Re-formatted the site robots.txt file with more conspicuous comments for clearer reference in the site log.

Archived the April 2003 site log and corrected metadata identifier values for the two previous months. Also escaped some bare ampersands in the November 2001 site log that was causing a validation error with ParseRDF.

3rd May 2003

Re-packaged the experimental JAXP transformation servlet outside of the Code Style package hierarchy to simplify package dependency analysis and trimmed down all exception handling to factor out WrappedExceptions.

Package dependency analysis showed that WrappedException had been used too broadly, and in situations where IOException and SAXException could be used more appropriately. Replaced WrappedException cases in HttpContentRequest and HttpRequest with IOException and adapted all client classes accordingly. Changed ErrorHandler to take a generic Throwable argument instead of a WrappedException.

Re-packaged the set of classes associated with the SourceBroker type to a new org.codestyle.broker package to provide insulation from data access implementations. Added a private default constructor to the SourceBrokerFactory to prevent direct instantiation. Re-factored the TrustedHttpBroker class to handle IOExceptions from the HttpContentRequest methods instead of WrappedExceptions.

Re-factored the ParseHandler helper class to replace WrappedExceptions with SAXException calls. Added an import statement to the abstract ParseServlet for the re-packaged ErrorHandler class, and changed import statements for the org.codestyle.broker classes it uses. Modified ParseServlet to extend the new abstract TemplateServlet class.

Re-purposed the former WrappedException class as ReportingParseException in the org.codestyle.xml package. ReportingParseException returns a detailed validation error report from its getMessage method for use with the ErrorHandler class.

Re-packaged the set of classes associated with the ViewSequence servlet in a new org.codestyle.sequencer package in a similar way to the org.codestyle.sampler package. Added a private default constructor to SequenceFactory to prevent direct instantiation of the factory and renamed the static ViewableSequence instantiation method to newSequence. Extended the ViewSequence servlet from the new abstract TemplateServlet class.

Temporarily re-packaged the abstract classes in org.codestyle.sampler then reverted to the original structure. Added a private constructor to the SampleFactory class to prevent direct instantiation of the factory and renamed the static ViewableSample instantiation method to newSample. Extended the FontSampler servlet from the new abstract TemplateServlet class.

Temporarily re-packaged the abstract classes in org.codestyle.template then reverted to the original structure. Removed the redundant Link class from the package and replaced with Linkable interface references through all implementations and client classes.

Re-packaged the CodeStyleTemplate class in the org.codestyle.template package, but added an exclusion to the Ant build file so that this is not included in JAR distributions. Updated the Ant local.properties and local.filters files with the fully qualified name for CodeStyleTemplate. Also added clean.output and clean.test.output tasks to the build file to ensure removal of re-packaged and deleted classes from the deployment directories immediately before deploying freshly compiled, tested classes.

Updated the aliases for the ViewSequence and EchoRequest servlets according to their new package locations and re-configured all test case classes to the new hierarchy. Added a new test case for invalid, well-formed XHTML to the set of test case documents for the ParseRDF servlet.

1st May 2003

Started a detailed review of the Code Style Java package dependencies and identified one cyclic dependency between org.codestyle.util and org.codestyle.template. Re-packaged the ErrorHandler class in org.codestyle.template to remove the cyclic dependency.

Temporarily re-packaged the Presentable interface and abstract XhtmlTemplate classes, then returned to the org.codestyle.template package.

Previously on Code Style

These backdated pages record detailed changes to the Code Style Web site since July 2000, when development first got underway. Some pages may refer to documents or features that have since changed or are no longer part of the site, but the archive is checked to ensure there are no dead links.

Add this page to your chosen social bookmarking service

Style warning - please read

Home · CSS · Java · Javascript · HTML · Help · Log