Clover coverage report - Clover results for XOM 1.2d1
Coverage timestamp: Wed Feb 8 2006 08:31:33 EST
file stats: LOC: 82   Methods: 2
NCLOC: 34   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
JaxenConnector.java 100% 100% 100% 100%
coverage
 1    /* Copyright 2005 Elliotte Rusty Harold
 2   
 3    This library is free software; you can redistribute it and/or modify
 4    it under the terms of version 2.1 of the GNU Lesser General Public
 5    License as published by the Free Software Foundation.
 6   
 7    This library is distributed in the hope that it will be useful,
 8    but WITHOUT ANY WARRANTY; without even the implied warranty of
 9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 10    GNU Lesser General Public License for more details.
 11   
 12    You should have received a copy of the GNU Lesser General Public
 13    License along with this library; if not, write to the
 14    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 15    Boston, MA 02111-1307 USA
 16   
 17    You can contact Elliotte Rusty Harold by sending e-mail to
 18    elharo@metalab.unc.edu. Please include the word "XOM" in the
 19    subject line. The XOM home page is located at http://www.xom.nu/
 20    */
 21   
 22    package nu.xom;
 23   
 24    import java.util.Iterator;
 25    import java.util.List;
 26    import java.util.ListIterator;
 27   
 28    import org.jaxen.BaseXPath;
 29    import org.jaxen.FunctionContext;
 30    import org.jaxen.JaxenException;
 31    import org.jaxen.XPathFunctionContext;
 32   
 33   
 34    /**
 35    *
 36    * @author Elliotte Rusty Harold
 37    * @version 1.1.1b1
 38    *
 39    */
 40    class JaxenConnector extends BaseXPath {
 41   
 42   
 43    private static final long serialVersionUID = 9025734269448515308L;
 44   
 45    private static FunctionContext functionContext = new XPathFunctionContext(false);
 46   
 47   
 48  622 JaxenConnector(String expression) throws JaxenException {
 49  622 super(expression, new JaxenNavigator());
 50    // possible thread-safety issue????
 51  622 this.setFunctionContext(functionContext);
 52    }
 53   
 54   
 55  622 public List selectNodes(Object expression) throws JaxenException {
 56   
 57  622 List result = super.selectNodes(expression);
 58    // Text objects are returned wrapped in a List.
 59    // We need to unwrap them here.
 60  594 ListIterator iterator = result.listIterator();
 61  594 while (iterator.hasNext()) {
 62  1801 Object next = iterator.next();
 63  1801 if (next instanceof List) {
 64  40 List list = (List) next;
 65    // replace the list with the first item in the list
 66  40 iterator.set(list.get(0));
 67    // insert any subsequent Text objects into the list
 68  40 if (list.size() > 1) {
 69  14 Iterator texts = list.listIterator(1);
 70  14 while (texts.hasNext()) {
 71  23 iterator.add(texts.next());
 72    }
 73    }
 74    }
 75    }
 76  594 return result;
 77   
 78    }
 79   
 80   
 81    }
 82