ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/util JAXPUtils.java
Date Tue, 23 Apr 2002 11:42:51 GMT
bodewig     02/04/23 04:42:51

  Modified:    src/main/org/apache/tools/ant/helper ProjectHelperImpl.java
               src/main/org/apache/tools/ant/taskdefs/optional
                        XMLValidateTask.java
  Added:       src/main/org/apache/tools/ant/util JAXPUtils.java
  Log:
  Move JAXP stuff into a new utility class.
  
  Revision  Changes    Path
  1.7       +5 -35     jakarta-ant/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java
  
  Index: ProjectHelperImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ProjectHelperImpl.java	21 Apr 2002 13:42:03 -0000	1.6
  +++ ProjectHelperImpl.java	23 Apr 2002 11:42:51 -0000	1.7
  @@ -63,15 +63,11 @@
   import org.xml.sax.Locator;
   import org.xml.sax.InputSource;
   import org.xml.sax.HandlerBase;
  -import org.xml.sax.SAXParseException;
   import org.xml.sax.SAXException;
  +import org.xml.sax.SAXParseException;
   import org.xml.sax.DocumentHandler;
   import org.xml.sax.AttributeList;
   import org.xml.sax.helpers.XMLReaderAdapter;
  -import javax.xml.parsers.SAXParserFactory;
  -import javax.xml.parsers.SAXParser;
  -import javax.xml.parsers.ParserConfigurationException;
  -import javax.xml.parsers.FactoryConfigurationError;
   import org.apache.tools.ant.ProjectHelper;
   import org.apache.tools.ant.UnknownElement;
   import org.apache.tools.ant.Project;
  @@ -83,6 +79,7 @@
   import org.apache.tools.ant.TaskContainer;
   import org.apache.tools.ant.Location;
   import org.apache.tools.ant.TaskAdapter;
  +import org.apache.tools.ant.util.JAXPUtils;
   
   /**
    * Original helper.
  @@ -92,12 +89,6 @@
   public class ProjectHelperImpl extends ProjectHelper {
   
       /**
  -     * Parser factory to use to create parsers.
  -     * @see #getParserFactory
  -     */
  -    private static SAXParserFactory parserFactory = null;
  -
  -    /**
        * SAX 1 style parser used to parse the given file. This may
        * in fact be a SAX 2 XMLReader wrapped in an XMLReaderAdapter.
        */
  @@ -139,11 +130,10 @@
           buildFileParent = new File(this.buildFile.getParent());
   
           try {
  -            SAXParser saxParser = getParserFactory().newSAXParser();
               try {
  -                parser = saxParser.getParser();
  -            } catch (SAXException exc) {
  -                parser = new XMLReaderAdapter(saxParser.getXMLReader());
  +                parser = JAXPUtils.getParser();
  +            } catch (BuildException e) {
  +                parser = new XMLReaderAdapter(JAXPUtils.getXMLReader());
               }
   
   
  @@ -163,11 +153,6 @@
               parser.setErrorHandler(hb);
               parser.setDTDHandler(hb);
               parser.parse(inputSource);
  -        } catch (ParserConfigurationException exc) {
  -            throw new BuildException("Parser has not been configured correctly", exc);
  -        } catch (FactoryConfigurationError e) {
  -            throw new BuildException("XML parser has not been configured " 
  -                + "correctly: " + e.getMessage(), e);
           } catch (SAXParseException exc) {
               Location location =
                   new Location(buildFile.toString(), exc.getLineNumber(),
  @@ -1149,21 +1134,6 @@
           public void startElement(String name, AttributeList attrs) throws SAXParseException
{
               new NestedElementHandler(helperImpl, this, element, wrapper, target).init(name,
attrs);
           }
  -    }
  -
  -    /**
  -     * Returns the parser factory to use. Only one parser
  -     * factory is ever created by this method (multi-threading
  -     * issues aside) and is then cached for future use.
  -     *
  -     * @return a SAXParserFactory to use within this class
  -     */
  -    private static SAXParserFactory getParserFactory() {
  -        if (parserFactory == null) {
  -            parserFactory = SAXParserFactory.newInstance();
  -        }
  -
  -        return parserFactory;
       }
   
       /**
  
  
  
  1.19      +4 -38     jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
  
  Index: XMLValidateTask.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XMLValidateTask.java	22 Apr 2002 08:56:13 -0000	1.18
  +++ XMLValidateTask.java	23 Apr 2002 11:42:51 -0000	1.19
  @@ -64,10 +64,6 @@
   import java.util.Vector;
   import java.util.Hashtable;
   import java.util.Enumeration;
  -import javax.xml.parsers.SAXParserFactory;
  -import javax.xml.parsers.SAXParser;
  -import javax.xml.parsers.ParserConfigurationException;
  -import javax.xml.parsers.FactoryConfigurationError;
   import org.apache.tools.ant.AntClassLoader;
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.DirectoryScanner;
  @@ -78,6 +74,7 @@
   import org.apache.tools.ant.types.Reference;
   import org.apache.tools.ant.types.XMLCatalog;
   import org.apache.tools.ant.types.DTDLocation;
  +import org.apache.tools.ant.util.JAXPUtils;
   import org.xml.sax.XMLReader;
   import org.xml.sax.EntityResolver;
   import org.xml.sax.Parser;
  @@ -96,12 +93,6 @@
    */
   public class XMLValidateTask extends Task {
   
  -    /**
  -     * Parser factory to use to create parsers.
  -     * @see #getParserFactory
  -     */
  -    private static SAXParserFactory parserFactory = null;
  -
       protected static String INIT_FAILED_MSG = 
           "Could not start xml validation: ";
   
  @@ -294,20 +285,10 @@
   
           Object reader = null;
           if (readerClassName == null) {
  -            // use JAXP
               try {
  -                SAXParser saxParser = getParserFactory().newSAXParser();
  -                try {
  -                    reader = saxParser.getXMLReader();
  -                } catch (SAXException exc) {
  -                    reader = saxParser.getParser();
  -                }
  -            } catch (ParserConfigurationException e) {
  -                throw new BuildException(INIT_FAILED_MSG + e.getMessage(), 
  -                                         e, getLocation());
  -            } catch (SAXException e) {
  -                throw new BuildException(INIT_FAILED_MSG + e.getMessage(), 
  -                                         e, getLocation());
  +                reader = JAXPUtils.getXMLReader();
  +            } catch (BuildException exc) {
  +                reader = JAXPUtils.getParser();
               }
           } else {
           
  @@ -370,21 +351,6 @@
                   setFeature(featureId, ((Boolean) features.get(featureId)).booleanValue(),
true);
               }
           }
  -    }
  -
  -    /**
  -     * Returns the parser factory to use. Only one parser
  -     * factory is ever created by this method (multi-threading
  -     * issues aside) and is then cached for future use.
  -     *
  -     * @return a SAXParserFactory to use within this class
  -     */
  -    private static SAXParserFactory getParserFactory() {
  -        if (parserFactory == null) {
  -            parserFactory = SAXParserFactory.newInstance();
  -        }
  -
  -        return parserFactory;
       }
   
       /*
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/util/JAXPUtils.java
  
  Index: JAXPUtils.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.tools.ant.util;
  
  import org.apache.tools.ant.BuildException;
  
  import org.xml.sax.Parser;
  import org.xml.sax.SAXException;
  import org.xml.sax.XMLReader;
  
  import javax.xml.parsers.SAXParserFactory;
  import javax.xml.parsers.SAXParser;
  import javax.xml.parsers.ParserConfigurationException;
  import javax.xml.parsers.FactoryConfigurationError;
  
  /**
   * Collection of helper methods that retrieve a ParserFactory or
   * Parsers and Readers.
   *
   * <p>This class will create only a single factory instance.</p>
   *
   * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
   *
   * @since Ant 1.5
   */
  public class JAXPUtils {
  
      /**
       * Parser factory to use to create parsers.
       * @see #getParserFactory
       *
       * @since Ant 1.5
       */
      private static SAXParserFactory parserFactory = null;
  
      /**
       * Returns the parser factory to use. Only one parser factory is
       * ever created by this method and is then cached for future use.
       *
       * @return a SAXParserFactory to use
       *
       * @since Ant 1.5
       */
      public synchronized static SAXParserFactory getParserFactory() 
          throws BuildException {
  
          if (parserFactory == null) {
              parserFactory = newParserFactory();
          }
          return parserFactory;
      }
  
      /**
       * Returns a new  parser factory instance.
       *
       * @since Ant 1.5
       */
      public static SAXParserFactory newParserFactory() throws BuildException {
  
          try {
              return SAXParserFactory.newInstance();
          } catch (FactoryConfigurationError e) {
              throw new BuildException("XML parser factory has not been "
                                       + "configured correctly: " 
                                       + e.getMessage(), e);
          }
      }
  
      /**
       * Returns a newly created SAX 1 Parser, using the default parser
       * factory.
       *
       * @return a SAX 1 Parser.
       * @see #getParserFactory
       * @since Ant 1.5
       */
      public static Parser getParser() throws BuildException {
          try {
              return newSAXParser().getParser();
          } catch (SAXException e) {
              throw convertToBuildException(e);
          }
      }
  
      /**
       * Returns a newly created SAX 2 XMLReader, using the default parser
       * factory.
       *
       * @return a SAX 2 XMLReader.
       * @see #getParserFactory
       * @since Ant 1.5
       */
      public static XMLReader getXMLReader() throws BuildException {
          try {
              return newSAXParser().getXMLReader();
          } catch (SAXException e) {
              throw convertToBuildException(e);
          }
      }
  
      /**
       * @return a new SAXParser instance as helper for getParser and
       * getXMLReader.
       *
       * @since Ant 1.5
       */
      private static SAXParser newSAXParser() throws BuildException {
          try {
              return getParserFactory().newSAXParser();
          } catch (ParserConfigurationException e) {
              throw new BuildException("Cannot create parser for the given "
                                       + "configuration: " + e.getMessage(), e);
          } catch (SAXException e) {
              throw convertToBuildException(e);
          }
      }
  
      /**
       * Translate a SAXException into a BuildException
       *
       * @since Ant 1.5
       */
      private static BuildException convertToBuildException(SAXException e) {
          Exception nested = e.getException();
          if (nested != null) {
              return new BuildException(nested);
          } else {
              return new BuildException(e);
          }
      }
  
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message