Clover coverage report - dom4j - 1.6.1
Coverage timestamp: ma mei 16 2005 14:23:01 GMT+01:00
file stats: LOC: 184   Methods: 7
NCLOC: 56   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
DocumentSource.java 0% 14,3% 42,9% 16,7%
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 javax.xml.transform.sax.SAXSource;
 11   
 12    import org.dom4j.Document;
 13    import org.dom4j.Node;
 14   
 15    import org.xml.sax.InputSource;
 16    import org.xml.sax.XMLFilter;
 17    import org.xml.sax.XMLReader;
 18   
 19    /**
 20    * <p>
 21    * <code>DocumentSource</code> implements a JAXP {@link SAXSource}for a
 22    * {@linkDocument}.
 23    * </p>
 24    *
 25    * @author <a href="mailto:james.strachan@metastuff.com">James Strachan </a>
 26    * @version $Revision: 1.10 $
 27    */
 28    public class DocumentSource extends SAXSource {
 29    /**
 30    * If {@link javax.xml.transform.TransformerFactory#getFeature}returns
 31    * <code>true</code> when passed this value as an argument then the
 32    * Transformer natively supports <i>dom4j </i>.
 33    */
 34    public static final String DOM4J_FEATURE
 35    = "http://org.dom4j.io.DoucmentSource/feature";
 36   
 37    /** The XMLReader to use */
 38    private XMLReader xmlReader = new SAXWriter();
 39   
 40    /**
 41    * Creates a JAXP {@link SAXSource}for the given {@link Node}.
 42    *
 43    * @param node
 44    * DOCUMENT ME!
 45    */
 46  0 public DocumentSource(Node node) {
 47  0 setDocument(node.getDocument());
 48    }
 49   
 50    /**
 51    * Creates a JAXP {@link SAXSource}for the given {@link Document}.
 52    *
 53    * @param document
 54    * DOCUMENT ME!
 55    */
 56  8 public DocumentSource(Document document) {
 57  8 setDocument(document);
 58    }
 59   
 60    // Properties
 61    // -------------------------------------------------------------------------
 62   
 63    /**
 64    * DOCUMENT ME!
 65    *
 66    * @return the document which is being used as the JAXP {@link SAXSource}
 67    */
 68  0 public Document getDocument() {
 69  0 DocumentInputSource source = (DocumentInputSource) getInputSource();
 70  0 return source.getDocument();
 71    }
 72   
 73    /**
 74    * Sets the document used as the JAXP {@link SAXSource}
 75    *
 76    * @param document
 77    * DOCUMENT ME!
 78    */
 79  8 public void setDocument(Document document) {
 80  8 super.setInputSource(new DocumentInputSource(document));
 81    }
 82   
 83    // Overloaded methods
 84    // -------------------------------------------------------------------------
 85   
 86    /**
 87    * DOCUMENT ME!
 88    *
 89    * @return the XMLReader to be used for the JAXP {@link SAXSource}.
 90    */
 91  8 public XMLReader getXMLReader() {
 92  8 return xmlReader;
 93    }
 94   
 95    /**
 96    * This method is not supported as this source is always a {@linkDocument}
 97    * instance.
 98    *
 99    * @param inputSource
 100    * DOCUMENT ME!
 101    *
 102    * @throws UnsupportedOperationException
 103    * as this method is unsupported
 104    */
 105  0 public void setInputSource(InputSource inputSource)
 106    throws UnsupportedOperationException {
 107  0 if (inputSource instanceof DocumentInputSource) {
 108  0 super.setInputSource((DocumentInputSource) inputSource);
 109    } else {
 110  0 throw new UnsupportedOperationException();
 111    }
 112    }
 113   
 114    /**
 115    * Sets the XMLReader used for the JAXP {@link SAXSource}.
 116    *
 117    * @param reader
 118    * DOCUMENT ME!
 119    *
 120    * @throws UnsupportedOperationException
 121    * DOCUMENT ME!
 122    */
 123  0 public void setXMLReader(XMLReader reader)
 124    throws UnsupportedOperationException {
 125  0 if (reader instanceof SAXWriter) {
 126  0 this.xmlReader = (SAXWriter) reader;
 127  0 } else if (reader instanceof XMLFilter) {
 128  0 XMLFilter filter = (XMLFilter) reader;
 129   
 130  0 while (true) {
 131  0 XMLReader parent = filter.getParent();
 132   
 133  0 if (parent instanceof XMLFilter) {
 134  0 filter = (XMLFilter) parent;
 135    } else {
 136  0 break;
 137    }
 138    }
 139   
 140    // install filter in SAXWriter....
 141  0 filter.setParent(xmlReader);
 142  0 xmlReader = filter;
 143    } else {
 144  0 throw new UnsupportedOperationException();
 145    }
 146    }
 147    }
 148   
 149    /*
 150    * Redistribution and use of this software and associated documentation
 151    * ("Software"), with or without modification, are permitted provided that the
 152    * following conditions are met:
 153    *
 154    * 1. Redistributions of source code must retain copyright statements and
 155    * notices. Redistributions must also contain a copy of this document.
 156    *
 157    * 2. Redistributions in binary form must reproduce the above copyright notice,
 158    * this list of conditions and the following disclaimer in the documentation
 159    * and/or other materials provided with the distribution.
 160    *
 161    * 3. The name "DOM4J" must not be used to endorse or promote products derived
 162    * from this Software without prior written permission of MetaStuff, Ltd. For
 163    * written permission, please contact dom4j-info@metastuff.com.
 164    *
 165    * 4. Products derived from this Software may not be called "DOM4J" nor may
 166    * "DOM4J" appear in their names without prior written permission of MetaStuff,
 167    * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
 168    *
 169    * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
 170    *
 171    * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
 172    * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 173    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 174    * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
 175    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 176    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 177    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 178    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 179    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 180    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 181    * POSSIBILITY OF SUCH DAMAGE.
 182    *
 183    * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
 184    */