Coverage Report - org.apache.tiles.Definition
 
Classes in this File Line Coverage Branch Coverage Complexity
Definition
100%
22/22
100%
12/12
1.364
 
 1  
 /*
 2  
  * $Id: Definition.java 832840 2009-11-04 18:44:25Z apetrelli $
 3  
  *
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  * http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 package org.apache.tiles;
 22  
 
 23  
 import static org.apache.tiles.CompareUtil.*;
 24  
 
 25  
 import java.util.Map;
 26  
 
 27  
 /**
 28  
  * A definition, i.e. a template with (completely or not) filled attributes.
 29  
  * Attributes of a template can be defined with the help of this class.<br>
 30  
  * It can be used as a data transfer object used for registering new
 31  
  * definitions with the Container.
 32  
  *
 33  
  * @since Tiles 2.0
 34  
  * @version $Rev: 832840 $ $Date: 2009-11-05 05:44:25 +1100 (Thu, 05 Nov 2009) $
 35  
  */
 36  
 public class Definition extends BasicAttributeContext {
 37  
     /**
 38  
      * Extends attribute value.
 39  
      */
 40  
     protected String inherit;
 41  
     /**
 42  
      * Definition name.
 43  
      */
 44  17
     protected String name = null;
 45  
 
 46  
     /**
 47  
      * Constructor.
 48  
      */
 49  11
     public Definition() {
 50  11
     }
 51  
 
 52  
     /**
 53  
      * Copy Constructor.
 54  
      * Create a new definition initialized with parent definition.
 55  
      * Do a shallow copy : attributes are shared between copies, but not the Map
 56  
      * containing attributes.
 57  
      *
 58  
      * @param definition The definition to copy.
 59  
      */
 60  
     public Definition(Definition definition) {
 61  5
         super(definition);
 62  5
         this.name = definition.name;
 63  5
         this.inherit = definition.inherit;
 64  5
     }
 65  
 
 66  
     /**
 67  
      * Constructor.
 68  
      * @param name The name of the definition.
 69  
      * @param templateAttribute The template attribute of the definition.
 70  
      * @param attributes The attribute map of the definition.
 71  
      *
 72  
      * @since 2.1.2
 73  
      */
 74  
     public Definition(String name, Attribute templateAttribute,
 75  
                                Map<String, Attribute> attributes) {
 76  1
         super(attributes);
 77  1
         this.name = name;
 78  1
         this.templateAttribute = templateAttribute;
 79  1
     }
 80  
 
 81  
     /**
 82  
      * Access method for the name property.
 83  
      *
 84  
      * @return the current value of the name property
 85  
      */
 86  
     public String getName() {
 87  2
         return name;
 88  
     }
 89  
 
 90  
     /**
 91  
      * Sets the value of the name property.
 92  
      *
 93  
      * @param aName the new value of the name property
 94  
      */
 95  
     public void setName(String aName) {
 96  7
         name = aName;
 97  7
     }
 98  
 
 99  
     /**
 100  
      * Set extends.
 101  
      *
 102  
      * @param name Name of the extended definition.
 103  
      */
 104  
     public void setExtends(String name) {
 105  5
         inherit = name;
 106  5
     }
 107  
 
 108  
     /**
 109  
      * Get extends.
 110  
      *
 111  
      * @return Name of the extended definition.
 112  
      */
 113  
     public String getExtends() {
 114  1
         return inherit;
 115  
     }
 116  
 
 117  
 
 118  
 
 119  
     /** {@inheritDoc} */
 120  
     @Override
 121  
     public boolean equals(Object obj) {
 122  4
         Definition def = (Definition) obj;
 123  4
         return nullSafeEquals(name, def.name)
 124  
                 && nullSafeEquals(inherit, def.inherit) && super.equals(def);
 125  
     }
 126  
 
 127  
     /** {@inheritDoc} */
 128  
     @Override
 129  
     public int hashCode() {
 130  1
         return nullSafeHashCode(name) + nullSafeHashCode(inherit)
 131  
                 + super.hashCode();
 132  
     }
 133  
 
 134  
     /**
 135  
      * Get extends flag.
 136  
      *
 137  
      * @return <code>true</code> if this definition extends another.
 138  
      */
 139  
     public boolean isExtending() {
 140  2
         return inherit != null;
 141  
     }
 142  
 
 143  
     /**
 144  
      * Returns a description of the attributes.
 145  
      *
 146  
      * @return A string representation of the content of this definition.
 147  
      */
 148  
     @Override
 149  
     public String toString() {
 150  3
         return "{name="
 151  
             + name
 152  
             + ", template="
 153  
             + (templateAttribute != null ? templateAttribute.getValue() : "<null>")
 154  
             + ", role="
 155  
             + (templateAttribute != null ? templateAttribute.getRoles() : "<null>")
 156  
             + ", preparerInstance="
 157  
             + preparer
 158  
             + ", attributes="
 159  
             + attributes
 160  
             + "}";
 161  
     }
 162  
 }