This project has retired. For details please refer to its Attic page.
TemplateClass xref
View Javadoc

1   /*
2    * $Id: TemplateClass.java 1044707 2010-12-11 20:35:57Z 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.autotag.model;
22  
23  import java.util.Collection;
24  import java.util.LinkedHashMap;
25  import java.util.Map;
26  
27  /**
28   * It represents a parsed template class.
29   *
30   * @version $Rev: 1044707 $ $Date: 2010-12-11 21:35:57 +0100 (Sat, 11 Dec 2010) $
31   */
32  public class TemplateClass {
33  
34      /**
35       * The class name.
36       */
37      private String name;
38  
39      /**
40       * The name of the tag.
41       */
42      private String tagName;
43  
44      /**
45       * The prefix of the tag class.
46       */
47      private String tagClassPrefix;
48  
49      /**
50       * Documentation about this tag.
51       */
52      private String documentation;
53  
54      /**
55       * The method that executes the template class.
56       */
57      private TemplateMethod executeMethod;
58  
59      /**
60       * Constructor.
61       *
62       * @param name The name of the template class.
63       */
64      public TemplateClass(String name) {
65          this(name, null, null, null);
66      }
67  
68      /**
69       * Constructor.
70       *
71       * @param name The name of the template class.
72       * @param tagName The name of the tag.
73       * @param tagClassPrefix The tag class prefix.
74       * @param executeMethod The method that executes the template class.
75       */
76      public TemplateClass(String name, String tagName, String tagClassPrefix,
77              TemplateMethod executeMethod) {
78          this.name = name;
79          this.tagName = tagName;
80          this.tagClassPrefix = tagClassPrefix;
81          this.executeMethod = executeMethod;
82      }
83  
84      /**
85       * The name of the parsed class.
86       *
87       * @return The name of the class.
88       */
89      public String getName() {
90          return name;
91      }
92  
93      /**
94       * Returns the name of the class, without the package part.
95       *
96       * @return The simple class name.
97       */
98      public String getSimpleName() {
99          int pos = name.lastIndexOf('.');
100         if (pos >= 0) {
101             return name.substring(pos + 1);
102         }
103         return name;
104     }
105 
106     /**
107      * Returns the tag name.
108      *
109      * @return The tag name.
110      */
111     public String getTagName() {
112         return tagName;
113     }
114 
115     /**
116      * Returns the tag class prefix.
117      *
118      * @return The tag class prefix.
119      */
120     public String getTagClassPrefix() {
121         return tagClassPrefix;
122     }
123 
124     /**
125      * Returns the documentation for this class.
126      *
127      * @return The documentation.
128      */
129     public String getDocumentation() {
130         return documentation;
131     }
132 
133     /**
134      * Sets the documentation for this class.
135      *
136      * @param documentation The documentation.
137      */
138     public void setDocumentation(String documentation) {
139         this.documentation = documentation;
140     }
141 
142     /**
143      * Returns the method that execute this class.
144      *
145      * @return The execute method.
146      */
147     public TemplateMethod getExecuteMethod() {
148         return executeMethod;
149     }
150 
151     /**
152      * Returns the collection of regular parameters (no request, no body)
153      * of the execute method.
154      *
155      * @return The regular parameters.
156      */
157     public Collection<TemplateParameter> getParameters() {
158         Map<String, TemplateParameter> params = new LinkedHashMap<String, TemplateParameter>();
159         fillRegularParameters(params, executeMethod);
160         return params.values();
161     }
162 
163     /**
164      * Indicates that this class needs a tag body.
165      *
166      * @return <code>true</code> if tag body is needed.
167      */
168     public boolean hasBody() {
169         return executeMethod.hasBody();
170     }
171 
172     @Override
173     public String toString() {
174         return "TemplateClass [name=" + name + ", tagName=" + tagName
175                 + ", tagClassPrefix=" + tagClassPrefix + ", documentation="
176                 + documentation + ", executeMethod=" + executeMethod + "]";
177     }
178 
179     /**
180      * Creates regular parameters map.
181      *
182      * @param params The map to fill.
183      * @param method The method to analyze.
184      */
185     private void fillRegularParameters(Map<String, TemplateParameter> params,
186             TemplateMethod method) {
187         if (method != null) {
188             for (TemplateParameter param : method.getParameters()) {
189                 if (!param.isRequest() && !param.isBody()) {
190                     params.put(param.getName(), param);
191                 }
192             }
193         }
194     }
195 }