Coverage Report - org.apache.commons.betwixt.Descriptor

Classes in this File Line Coverage Branch Coverage Complexity
Descriptor
91% 
100% 
1.154

 1  
 /*
 2  
  * Copyright 2001-2004 The Apache Software Foundation.
 3  
  * 
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  * 
 8  
  *      http://www.apache.org/licenses/LICENSE-2.0
 9  
  * 
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */ 
 16  
 package org.apache.commons.betwixt;
 17  
 
 18  
 import org.apache.commons.betwixt.expression.Expression;
 19  
 import org.apache.commons.betwixt.expression.Updater;
 20  
 
 21  
 /** <p>Describes a content node mapping.</p>
 22  
   * Common superclass for types of <code>Descriptor</code></p>
 23  
   *
 24  
   * @author Robert Burrell Donkin
 25  
   * @since 0.5
 26  
   */
 27  
 public abstract class Descriptor {
 28  
 
 29  
     /** the expression used to evaluate the text value of this node */
 30  
     private Expression textExpression;
 31  
     /** the updater used to update the current bean from the text value of this node */
 32  
     private Updater updater;
 33  
     /** The property expression to which this node refers to, or null if it is just a constant */
 34  
     private String propertyName;
 35  
     /** the property type associated with this node, if any */
 36  
     private Class propertyType;
 37  
     /** the singular property type (i.e. the type ignoring the Collection or Array */
 38  
     private Class singularPropertyType;
 39  
     /** Options set for this Descriptor */
 40  33437
     private Options options = new Options();
 41  
     
 42  
     
 43  
     /** Base constructor */
 44  33437
     public Descriptor() {
 45  33437
     }   
 46  
         
 47  
     /** 
 48  
      * Gets the expression used to evaluate the text value of this node 
 49  
      * for a particular <code>Context</code>.
 50  
      * @return the expression used to evaluate the text value of this node 
 51  
      */
 52  
     public Expression getTextExpression() {
 53  18680
         return textExpression;
 54  
     }
 55  
     
 56  
     /** 
 57  
      * Sets the expression used to evaluate the text value of this node
 58  
      * for a particular <code>Context</code>
 59  
      * @param textExpression the Expression to be used to evaluate the value of this node
 60  
      */
 61  
     public void setTextExpression(Expression textExpression) {
 62  14482
         this.textExpression = textExpression;
 63  14482
     }
 64  
     
 65  
     /** 
 66  
      * Gets the <code>Updater</code> used to update a <code>Context</code> from the text value
 67  
      * corresponding to this node in an xml document
 68  
      * @return the Update that should be used to update the value of this node
 69  
      */
 70  
     public Updater getUpdater() {
 71  15440
         return updater;
 72  
     }
 73  
     
 74  
     /**
 75  
      * Sets the <code>Updater</code> used to update a <code>Context</code> from the text value
 76  
      * corresponding to this node in an xml document
 77  
      * @param updater the Updater to be used to update the values of this node
 78  
      */
 79  
     public void setUpdater(Updater updater) {
 80  19735
         this.updater = updater;
 81  19735
     }
 82  
     
 83  
     /** 
 84  
      * Gets the type of the bean property associated with this node, if any
 85  
      * @return the property type associated with this node, if any 
 86  
      */
 87  
     public Class getPropertyType() {
 88  79469
         return propertyType;
 89  
     }
 90  
     
 91  
     /** 
 92  
      * Sets the type of the bean property associated with this node, if any 
 93  
      * @param propertyType the Class of the bean property
 94  
      */
 95  
     public void setPropertyType(Class propertyType) {
 96  40749
         this.propertyType = propertyType;
 97  40749
     }
 98  
 
 99  
     
 100  
     /** 
 101  
      * Gets the name of the bean property to which this node refers
 102  
      * @return the name of the bean property to which this node refers to, 
 103  
      * or null if it is just a constant 
 104  
      */
 105  
     public String getPropertyName() {
 106  28083
         return propertyName;
 107  
     }
 108  
     
 109  
     /** 
 110  
      * Sets the name of the bean property to which this node refers
 111  
      * @param propertyName the name of the bean property. 
 112  
      * Or null, if this node is not mapped to to a bean property
 113  
      */
 114  
     public void setPropertyName(String propertyName) {
 115  27337
         this.propertyName = propertyName;
 116  27337
     }
 117  
     
 118  
     /** 
 119  
      * Gets the underlying type ignoring any wrapping a Collection or Array.
 120  
      *
 121  
      * @return if this property is a 1-N relationship then this returns the type
 122  
      * of a single property value.
 123  
      */
 124  
     public Class getSingularPropertyType() {
 125  41421
         if ( singularPropertyType == null ) {
 126  27626
             return getPropertyType();
 127  
         }
 128  13795
         return singularPropertyType;
 129  
     }
 130  
     
 131  
     /** 
 132  
      * Sets the underlying type ignoring any wrapping Collection or Array.
 133  
      *
 134  
      * @param singularPropertyType the Class of the items in the Collection or Array. 
 135  
      * If node is associated with a collective bean property, then this should not be null.
 136  
      */
 137  
     public void setSingularPropertyType(Class singularPropertyType) {
 138  3576
         this.singularPropertyType = singularPropertyType;
 139  3576
     }
 140  
     
 141  
     
 142  
     /**
 143  
      * Gets the options for this descriptor.
 144  
      * Options are used to communicate non-declarative
 145  
      * (optinal) behaviour hints.
 146  
      * @return <code>Options</code>, not null
 147  
      */
 148  
     public Options getOptions() {
 149  39055
         return options;
 150  
     }
 151  
     
 152  
     /**
 153  
      * Sets the options for this descriptor.
 154  
      * Options are used to communicate non-declarative
 155  
      * (optinal) behaviour hints.
 156  
      * @param options
 157  
      */
 158  
     public void setOptions(Options options) {
 159  0
         this.options = options;
 160  0
     }
 161  
 
 162  
 }