Clover coverage report - XStream - 0.1
Coverage timestamp: Fri Oct 24 2003 13:50:04 BST
file stats: LOC: 81   Methods: 11
NCLOC: 63   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
DomXMLReader.java 100% 100% 100% 100%
coverage
 1   
 package com.thoughtworks.xstream.xml.dom;
 2   
 
 3   
 import com.thoughtworks.xstream.xml.XMLReader;
 4   
 import org.w3c.dom.*;
 5   
 
 6   
 import java.util.ArrayList;
 7   
 import java.util.HashMap;
 8   
 import java.util.List;
 9   
 import java.util.Map;
 10   
 
 11   
 public class DomXMLReader implements XMLReader {
 12   
 
 13   
     private Element currentElement;
 14   
     private List childElementsByIndex;
 15   
     private Map childElementsByName;
 16   
     private StringBuffer textBuffer;
 17   
 
 18  1
     public DomXMLReader(Element rootElement) {
 19  1
         setCurrent(rootElement);
 20   
     }
 21   
 
 22  49
     public DomXMLReader(Document document) {
 23  49
         setCurrent(document.getDocumentElement());
 24   
     }
 25   
 
 26  95
     public String name() {
 27  95
         return currentElement.getTagName();
 28   
     }
 29   
 
 30  78
     public String text() {
 31   
         //return currentElement.getText();
 32  78
         return textBuffer.toString();
 33   
     }
 34   
 
 35  53
     public String attribute(String name) {
 36  53
         Attr attribute = currentElement.getAttributeNode(name);
 37  53
         return attribute == null ? null : attribute.getValue();
 38   
     }
 39   
 
 40  25
     public int childCount() {
 41  25
         return childElementsByIndex.size();
 42   
     }
 43   
 
 44  48
     public void child(int index) {
 45  48
         setCurrent(childElementsByIndex.get(index));
 46   
     }
 47   
 
 48  56
     public void child(String elementName) {
 49  56
         setCurrent(childElementsByName.get(elementName));
 50   
     }
 51   
 
 52  100
     public void pop() {
 53  100
         setCurrent(currentElement.getParentNode());
 54   
     }
 55   
 
 56  254
     private void setCurrent(Object currentElementObj) {
 57  254
         this.currentElement = (Element) currentElementObj;
 58  254
         childElementsByIndex = new ArrayList();
 59  254
         childElementsByName = new HashMap();
 60  254
         textBuffer = new StringBuffer();
 61  254
         NodeList childNodes = currentElement.getChildNodes();
 62  254
         int length = childNodes.getLength();
 63  254
         for (int i = 0; i < length; i++) {
 64  849
             Node childNode = childNodes.item(i);
 65  849
             if (childNode instanceof Element) {
 66  326
                 Element element = (Element) childNode;
 67  326
                 childElementsByIndex.add(element);
 68  326
                 childElementsByName.put(element.getTagName(), element);
 69  523
             } else if (childNode instanceof Text) {
 70  519
                 Text text = (Text) childNode;
 71  519
                 textBuffer.append(text.getData());
 72   
             }
 73   
         }
 74   
     }
 75   
 
 76  51
     public boolean childExists(String elementName) {
 77  51
         return childElementsByName.containsKey(elementName);
 78   
     }
 79   
 
 80   
 }
 81