You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2002/02/07 01:13:13 UTC

cvs commit: jakarta-commons/latka/src/java/org/apache/commons/latka/xml ValidationReflectionHandler.java

dion        02/02/06 16:13:13

  Modified:    latka/src/java/org/apache/commons/latka/xml
                        ValidationReflectionHandler.java
  Log:
  Added javadoc, fixed formatting
  
  Revision  Changes    Path
  1.9       +124 -70   jakarta-commons/latka/src/java/org/apache/commons/latka/xml/ValidationReflectionHandler.java
  
  Index: ValidationReflectionHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/xml/ValidationReflectionHandler.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ValidationReflectionHandler.java	28 Aug 2001 15:50:31 -0000	1.8
  +++ ValidationReflectionHandler.java	7 Feb 2002 00:13:13 -0000	1.9
  @@ -79,88 +79,142 @@
   import org.xml.sax.SAXException;
   import org.xml.sax.XMLReader;
   
  +/**
  + * A special LatkaHandler that processes validator tags, and loads the
  + * classes to process the tags on demand
  + * <br />This allows for pluggable tag handling
  + * @author Morgan Delagrange
  + * @author dIon Gillard
  + * @version $Id: ValidationReflectionHandler.java,v 1.9 2002/02/07 00:13:13 dion Exp $
  + */
   public class ValidationReflectionHandler extends LatkaHandler {
  -
  -  protected Request  _request  = null;
  -  protected Response _response = null;
  -  protected LatkaEventInfo _listener = null;
  -  protected static String _latkaPrefix = "latka.validator.";
  -  protected ClassLoader _loader = 
  -    Thread.currentThread().getContextClassLoader();
  -
  -  protected static final Category log = 
  -    Category.getInstance(ValidationReflectionHandler.class);
  -
  -  public ValidationReflectionHandler(XMLReader reader, Response response, 
  +    /** the request processed to obtain the response being validated */
  +    protected Request  _request  = null;
  +    /** the response being validated */
  +    protected Response _response = null;
  +    /** holds request success/failure details */
  +    protected LatkaEventInfo _listener = null;
  +    /** properties prefix for tags */
  +    protected static String _latkaPrefix = "latka.validator.";
  +    /** context classloader for loading classes */
  +    protected ClassLoader _loader = 
  +                Thread.currentThread().getContextClassLoader();
  +    /** log4j category to append output to */
  +    protected static final Category log = 
  +        Category.getInstance(ValidationReflectionHandler.class);
  +
  +    /**
  +     * Create a handler to deal with validator tags and sub tags
  +     * @param reader source of XML fragment
  +     * @param response the response being validated
  +     * @param listener holds request success/failure details
  +     */    
  +    public ValidationReflectionHandler(XMLReader reader, Response response, 
                                        LatkaEventInfo listener) {
  -    super(reader);
  -    _response = response;
  -    _request  = response.getRequest();
  -    _listener = listener;
  -  }
  +        super(reader);
  +        _response = response;
  +        _request  = response.getRequest();
  +        _listener = listener;
  +    }
  +
  +    /**
  +     * Handle the start of element
  +     * <br />If the request has failed, skip processing
  +     * <br />If it's the start of a validate tag, do nothing
  +     * <br />Otherwise, load the handler (based on localName) and delegate
  +     * to it
  +     *
  +     * @param uri namespace URI if namespace processing is being done
  +     * @param localName The element type name
  +     * @param qName fully qualified element name
  +     * @param atts The specified or defaulted attributes
  +     * @throws SAXException
  +     */
  +    public void startElement(String uri, String localName, String qName, 
  +                             Attributes atts) throws SAXException {
  +
  +        if (_listener.didRequestSucceed(_request) == false) {
  +            // once a validator fails, skip the rest
  +            return;
  +        }
   
  +        if (localName.equals("validate")) {
  +            return;
  +        }
   
  -  public void startElement(String uri, String localName,
  -                           String qName, Attributes atts)
  -  throws SAXException {
  -
  -    if (_listener.didRequestSucceed(_request) == false) {
  -      // once a validator fails, skip the rest
  -      return;
  -    }
  +        // the name of the custom ValidatorHandler class
  +        String validatorName = tagNameToClass(localName);
  +        if (validatorName == null) {
  +            log.debug("Unrecognized tag name for custom validator: "
  +                      + localName);
  +            return;
  +        }
   
  -    if (localName.equals("validate")) {
  -      return;
  -    }
  +        log.info("Custom validator class: " + validatorName);
  +        log.debug("response = " + _response);
  +        ValidationHandler validator = handlerForClass(validatorName);
  +        validator.init(_reader, _response, _listener, localName);
  +        log.debug("delegating tag: " + localName);
  +        validator.delegate(uri, localName, qName, atts);
   
  -    // the name of the custom ValidatorHandler class
  -    String validatorName = tagNameToClass(localName);
  -    if (validatorName == null) {
  -      System.out.println("Unrecognized tag name for custom validator: " + localName);
  -      return;
       }
   
  -    log.info("Custom validator class: " + validatorName);
  -    log.debug("response = " + _response);
  -    ValidationHandler validator = handlerForClass(validatorName);
  -    validator.init(_reader,_response,_listener, localName);
  -    log.debug("delegating tag: " + localName);
  -    validator.delegate(uri,localName,qName,atts);
  -
  -  }
  -
  -  public void endElement(String namespaceURI, String localName,
  -                         String rawName) {
  -    if (localName.equals("validate")) {
  -      release();
  +    /**
  +     * at the end of the tag, release resources
  +     * @param namespaceURI - The Namespace URI, or the empty string if the
  +     *      element has no Namespace URI or if Namespace processing is not 
  +     *      being performed.
  +     * @param localName - The local name (without prefix), or the empty string
  +     *      if Namespace processing is not being performed.
  +     * @param rawName - The qualified XML 1.0 name (with prefix), or the empty
  +     *      string if qualified names are not available.
  +     */
  +    public void endElement(String namespaceURI, String localName, 
  +                           String rawName) {
  +        if (localName.equals("validate")) {
  +            release();
  +        }
       }
  -  }
   
  -  protected String tagNameToClass(String localName) throws SAXException {
  -    Properties props = LatkaProperties.getProperties();
  -    Enumeration e = props.propertyNames();
  -    while (e.hasMoreElements()) {
  -      String name = (String) e.nextElement();
  -      if (name.startsWith(_latkaPrefix)) {
  -        int index = name.indexOf(_latkaPrefix) + _latkaPrefix.length();
  -        String tagName = name.substring(index,name.length());
  -        if (localName.equals(tagName)) {
  -          return props.getProperty(name);
  +    /**
  +     * Return a class name for the validator tag given
  +     * @return a class name for the validator tag given
  +     * @param localName the validator tag name
  +     */
  +    protected String tagNameToClass(String localName) {
  +        Properties props = LatkaProperties.getProperties();
  +        Enumeration e = props.propertyNames();
  +        while (e.hasMoreElements()) {
  +            String name = (String) e.nextElement();
  +            // FIXME: Should use endsWith localName as this should be less
  +            // common
  +            if (name.startsWith(_latkaPrefix)) {
  +                int index = name.indexOf(_latkaPrefix) + _latkaPrefix.length();
  +                String tagName = name.substring(index, name.length());
  +                if (localName.equals(tagName)) {
  +                    return props.getProperty(name);
  +                }
  +            }
           }
  -      }
  -    }
   
  -    return null;
  -  }
  +        return null;
  +    }
   
  -  protected ValidationHandler handlerForClass(String validatorClass) 
  -  throws SAXException {
  -    try {
  -      return (ValidationHandler) Beans.instantiate(_loader,validatorClass);
  -    } catch (ClassNotFoundException e) {
  -      throw new SAXException(e);
  -    } catch (IOException e) {
  -      throw new SAXException(e);
  +    /** 
  +     * Provide a validation handler by loading the provided class.
  +     * @return a validation handler by loading the provided class
  +     * @param validatorClass class name of the validator to be loaded
  +     * @throws SAXException when there are issues loading the class
  +     */
  +    protected ValidationHandler handlerForClass(String validatorClass) 
  +    throws SAXException {
  +        try {
  +            return (ValidationHandler) Beans.instantiate(_loader, 
  +                                                         validatorClass);
  +        } catch (ClassNotFoundException e) {
  +            throw new SAXException(e);
  +        } catch (IOException e) {
  +            throw new SAXException(e);
  +        }
       }
  -  }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>