Clover coverage report - dom4j - 1.6.1
Coverage timestamp: ma mei 16 2005 14:23:01 GMT+01:00
file stats: LOC: 185   Methods: 18
NCLOC: 92   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
BeanAttributeList.java 25% 35,7% 27,8% 31,9%
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.bean;
 9   
 10    import java.util.AbstractList;
 11   
 12    import org.dom4j.Attribute;
 13    import org.dom4j.QName;
 14   
 15    /**
 16    * <p>
 17    * <code>BeanAttributeList</code> implements a list of Attributes which are
 18    * the properties of a JavaBean.
 19    * </p>
 20    *
 21    * @author <a href="mailto:james.strachan@metastuff.com">James Strachan </a>
 22    * @version $Revision: 1.9 $
 23    */
 24    public class BeanAttributeList extends AbstractList {
 25    /** The BeanElement that this */
 26    private BeanElement parent;
 27   
 28    /** The BeanElement that this */
 29    private BeanMetaData beanMetaData;
 30   
 31    /** The attributes */
 32    private BeanAttribute[] attributes;
 33   
 34  0 public BeanAttributeList(BeanElement parent, BeanMetaData beanMetaData) {
 35  0 this.parent = parent;
 36  0 this.beanMetaData = beanMetaData;
 37  0 this.attributes = new BeanAttribute[beanMetaData.attributeCount()];
 38    }
 39   
 40  2 public BeanAttributeList(BeanElement parent) {
 41  2 this.parent = parent;
 42   
 43  2 Object data = parent.getData();
 44  2 Class beanClass = (data != null) ? data.getClass() : null;
 45  2 this.beanMetaData = BeanMetaData.get(beanClass);
 46  2 this.attributes = new BeanAttribute[beanMetaData.attributeCount()];
 47    }
 48   
 49  2 public Attribute attribute(String name) {
 50  2 int index = beanMetaData.getIndex(name);
 51   
 52  2 return attribute(index);
 53    }
 54   
 55  0 public Attribute attribute(QName qname) {
 56  0 int index = beanMetaData.getIndex(qname);
 57   
 58  0 return attribute(index);
 59    }
 60   
 61  2 public BeanAttribute attribute(int index) {
 62  2 if ((index >= 0) && (index <= attributes.length)) {
 63  2 BeanAttribute attribute = attributes[index];
 64   
 65  2 if (attribute == null) {
 66  2 attribute = createAttribute(parent, index);
 67  2 attributes[index] = attribute;
 68    }
 69   
 70  2 return attribute;
 71    }
 72   
 73  0 return null;
 74    }
 75   
 76  0 public BeanElement getParent() {
 77  0 return parent;
 78    }
 79   
 80  0 public QName getQName(int index) {
 81  0 return beanMetaData.getQName(index);
 82    }
 83   
 84  0 public Object getData(int index) {
 85  0 return beanMetaData.getData(index, parent.getData());
 86    }
 87   
 88  2 public void setData(int index, Object data) {
 89  2 beanMetaData.setData(index, parent.getData(), data);
 90    }
 91   
 92    // List interface
 93    // -------------------------------------------------------------------------
 94  0 public int size() {
 95  0 return attributes.length;
 96    }
 97   
 98  0 public Object get(int index) {
 99  0 BeanAttribute attribute = attributes[index];
 100   
 101  0 if (attribute == null) {
 102  0 attribute = createAttribute(parent, index);
 103  0 attributes[index] = attribute;
 104    }
 105   
 106  0 return attribute;
 107    }
 108   
 109  0 public boolean add(Object object) {
 110  0 throw new UnsupportedOperationException("add(Object) unsupported");
 111    }
 112   
 113  0 public void add(int index, Object object) {
 114  0 throw new UnsupportedOperationException("add(int,Object) unsupported");
 115    }
 116   
 117  0 public Object set(int index, Object object) {
 118  0 throw new UnsupportedOperationException("set(int,Object) unsupported");
 119    }
 120   
 121  0 public boolean remove(Object object) {
 122  0 return false;
 123    }
 124   
 125  0 public Object remove(int index) {
 126  0 BeanAttribute attribute = (BeanAttribute) get(index);
 127  0 Object oldValue = attribute.getValue();
 128  0 attribute.setValue(null);
 129   
 130  0 return oldValue;
 131    }
 132   
 133  0 public void clear() {
 134  0 for (int i = 0, size = attributes.length; i < size; i++) {
 135  0 BeanAttribute attribute = attributes[i];
 136   
 137  0 if (attribute != null) {
 138  0 attribute.setValue(null);
 139    }
 140    }
 141    }
 142   
 143    // Implementation methods
 144    // -------------------------------------------------------------------------
 145  2 protected BeanAttribute createAttribute(BeanElement element, int index) {
 146  2 return new BeanAttribute(this, index);
 147    }
 148    }
 149   
 150    /*
 151    * Redistribution and use of this software and associated documentation
 152    * ("Software"), with or without modification, are permitted provided that the
 153    * following conditions are met:
 154    *
 155    * 1. Redistributions of source code must retain copyright statements and
 156    * notices. Redistributions must also contain a copy of this document.
 157    *
 158    * 2. Redistributions in binary form must reproduce the above copyright notice,
 159    * this list of conditions and the following disclaimer in the documentation
 160    * and/or other materials provided with the distribution.
 161    *
 162    * 3. The name "DOM4J" must not be used to endorse or promote products derived
 163    * from this Software without prior written permission of MetaStuff, Ltd. For
 164    * written permission, please contact dom4j-info@metastuff.com.
 165    *
 166    * 4. Products derived from this Software may not be called "DOM4J" nor may
 167    * "DOM4J" appear in their names without prior written permission of MetaStuff,
 168    * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
 169    *
 170    * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
 171    *
 172    * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
 173    * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 174    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 175    * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
 176    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 177    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 178    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 179    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 180    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 181    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 182    * POSSIBILITY OF SUCH DAMAGE.
 183    *
 184    * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
 185    */