Clover coverage report - dom4j - 1.6.1
Coverage timestamp: ma mei 16 2005 14:23:01 GMT+01:00
file stats: LOC: 195   Methods: 6
NCLOC: 86   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
SAXHelper.java 21,4% 43,2% 66,7% 40,4%
coverage coverage
 1    /*
 2    * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
 3    *
 4    * This software is open source.
 5    * See the bottom of this file for the licence.
 6    */
 7   
 8    package org.dom4j.io;
 9   
 10    import org.xml.sax.SAXException;
 11    import org.xml.sax.SAXNotRecognizedException;
 12    import org.xml.sax.SAXNotSupportedException;
 13    import org.xml.sax.XMLReader;
 14    import org.xml.sax.helpers.XMLReaderFactory;
 15   
 16    /**
 17    * <p>
 18    * <code>SAXHelper</code> contains some helper methods for working with SAX
 19    * and XMLReader objects.
 20    * </p>
 21    *
 22    * @author <a href="mailto:james.strachan@metastuff.com">James Strachan </a>
 23    * @version $Revision: 1.18 $
 24    */
 25    class SAXHelper {
 26    private static boolean loggedWarning = true;
 27   
 28  0 protected SAXHelper() {
 29    }
 30   
 31  11590 public static boolean setParserProperty(XMLReader reader,
 32    String propertyName, Object value) {
 33  11590 try {
 34  11590 reader.setProperty(propertyName, value);
 35   
 36  5798 return true;
 37    } catch (SAXNotSupportedException e) {
 38    // ignore
 39    } catch (SAXNotRecognizedException e) {
 40    // ignore
 41    }
 42   
 43  5792 return false;
 44    }
 45   
 46  23168 public static boolean setParserFeature(XMLReader reader,
 47    String featureName, boolean value) {
 48  23168 try {
 49  23168 reader.setFeature(featureName, value);
 50   
 51  17376 return true;
 52    } catch (SAXNotSupportedException e) {
 53    // ignore
 54    } catch (SAXNotRecognizedException e) {
 55    // ignore
 56    }
 57   
 58  5792 return false;
 59    }
 60   
 61    /**
 62    * Creats a default XMLReader via the org.xml.sax.driver system property or
 63    * JAXP if the system property is not set.
 64    *
 65    * @param validating
 66    * DOCUMENT ME!
 67    *
 68    * @return DOCUMENT ME!
 69    *
 70    * @throws SAXException
 71    * DOCUMENT ME!
 72    */
 73  5758 public static XMLReader createXMLReader(boolean validating)
 74    throws SAXException {
 75  5764 XMLReader reader = null;
 76   
 77  5764 if (reader == null) {
 78  5764 reader = createXMLReaderViaJAXP(validating, true);
 79    }
 80   
 81  5764 if (reader == null) {
 82  0 try {
 83  0 reader = XMLReaderFactory.createXMLReader();
 84    } catch (Exception e) {
 85  0 if (isVerboseErrorReporting()) {
 86    // log all exceptions as warnings and carry
 87    // on as we have a default SAX parser we can use
 88  0 System.out.println("Warning: Caught exception attempting "
 89    + "to use SAX to load a SAX XMLReader ");
 90  0 System.out.println("Warning: Exception was: " + e);
 91  0 System.out
 92    .println("Warning: I will print the stack trace "
 93    + "then carry on using the default "
 94    + "SAX parser");
 95  0 e.printStackTrace();
 96    }
 97   
 98  0 throw new SAXException(e);
 99    }
 100    }
 101   
 102  5764 if (reader == null) {
 103  0 throw new SAXException("Couldn't create SAX reader");
 104    }
 105   
 106  5764 return reader;
 107    }
 108   
 109    /**
 110    * This method attempts to use JAXP to locate the SAX2 XMLReader
 111    * implementation. This method uses reflection to avoid being dependent
 112    * directly on the JAXP classes.
 113    *
 114    * @param validating
 115    * DOCUMENT ME!
 116    * @param namespaceAware
 117    * DOCUMENT ME!
 118    *
 119    * @return DOCUMENT ME!
 120    */
 121  5764 protected static XMLReader createXMLReaderViaJAXP(boolean validating,
 122    boolean namespaceAware) {
 123    // try use JAXP to load the XMLReader...
 124  5764 try {
 125  5764 return JAXPHelper.createXMLReader(validating, namespaceAware);
 126    } catch (Throwable e) {
 127  0 if (!loggedWarning) {
 128  0 loggedWarning = true;
 129   
 130  0 if (isVerboseErrorReporting()) {
 131    // log all exceptions as warnings and carry
 132    // on as we have a default SAX parser we can use
 133  0 System.out.println("Warning: Caught exception attempting "
 134    + "to use JAXP to load a SAX XMLReader");
 135  0 System.out.println("Warning: Exception was: " + e);
 136  0 e.printStackTrace();
 137    }
 138    }
 139    }
 140   
 141  0 return null;
 142    }
 143   
 144  0 protected static boolean isVerboseErrorReporting() {
 145  0 try {
 146  0 String flag = System.getProperty("org.dom4j.verbose");
 147   
 148  0 if ((flag != null) && flag.equalsIgnoreCase("true")) {
 149  0 return true;
 150    }
 151    } catch (Exception e) {
 152    // in case a security exception
 153    // happens in an applet or similar JVM
 154    }
 155   
 156  0 return true;
 157    }
 158    }
 159   
 160    /*
 161    * Redistribution and use of this software and associated documentation
 162    * ("Software"), with or without modification, are permitted provided that the
 163    * following conditions are met:
 164    *
 165    * 1. Redistributions of source code must retain copyright statements and
 166    * notices. Redistributions must also contain a copy of this document.
 167    *
 168    * 2. Redistributions in binary form must reproduce the above copyright notice,
 169    * this list of conditions and the following disclaimer in the documentation
 170    * and/or other materials provided with the distribution.
 171    *
 172    * 3. The name "DOM4J" must not be used to endorse or promote products derived
 173    * from this Software without prior written permission of MetaStuff, Ltd. For
 174    * written permission, please contact dom4j-info@metastuff.com.
 175    *
 176    * 4. Products derived from this Software may not be called "DOM4J" nor may
 177    * "DOM4J" appear in their names without prior written permission of MetaStuff,
 178    * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
 179    *
 180    * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
 181    *
 182    * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
 183    * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 184    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 185    * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
 186    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 187    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 188    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 189    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 190    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 191    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 192    * POSSIBILITY OF SUCH DAMAGE.
 193    *
 194    * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
 195    */