View Javadoc

1   package org.apache.velocity.tools.view.servlet;
2   
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  
22  import org.apache.velocity.tools.view.ViewToolInfo;
23  
24  /**
25   * <p>ToolInfo implementation that holds scope information for tools
26   * used in a servlet environment.  The ServletToolboxManager uses
27   * this to allow tool definitions to specify the scope/lifecycle
28   * of individual view tools.</p>
29   *
30   * <p>Example of toolbox.xml definitions for servlet tools:<pre>
31   *  &lt;tool&gt;
32   *    &lt;key&gt;link&lt;/key&gt;
33   *    &lt;scope&gt;request&lt;/scope&gt;
34   *    &lt;class&gt;org.apache.velocity.tools.struts.StrutsLinkTool&lt;/class&gt;
35   *  &lt;/tool&gt;
36   *  &lt;tool&gt;
37   *    &lt;key&gt;math&lt;/key&gt;
38   *    &lt;scope&gt;application&lt;/scope&gt;
39   *    &lt;class&gt;org.apache.velocity.tools.generic.MathTool&lt;/class&gt;
40   *  &lt;/tool&gt;
41   *  &lt;tool&gt;
42   *    &lt;key&gt;user&lt;/key&gt;
43   *    &lt;scope&gt;session&lt;/scope&gt;
44   *    &lt;class&gt;com.mycompany.tools.MyUserTool&lt;/class&gt;
45   *  &lt;/tool&gt;
46   *  </pre></p>
47   *
48   * @author Nathan Bubna
49   * @deprecated Use {@link org.apache.velocity.tools.ToolInfo}
50   * @version $Id: ServletToolInfo.java 564438 2007-08-10 00:15:18Z nbubna $
51   */
52  @Deprecated
53  public class ServletToolInfo extends ViewToolInfo
54  {
55  
56      private String scope;
57      private boolean exactPath;
58      private String path;
59  
60  
61      public void setScope(String scope) {
62          this.scope = scope;
63      }
64  
65      /**
66       * @return the scope of the tool
67       */
68      public String getScope()
69      {
70          return scope;
71      }
72  
73      /**
74       * @param path the full or partial request path restriction of the tool
75       * @since VelocityTools 1.3
76       */
77      public void setRequestPath(String path)
78      {
79          // make sure all paths begin with slash
80          if (!path.startsWith("/"))
81          {
82              path = "/" + path;
83          }
84  
85          if (path.equals("/*"))
86          {
87              // match all paths
88              this.path = null;
89          }
90          else if(path.endsWith("*"))
91          {
92              // match some paths
93              exactPath = false;
94              this.path = path.substring(0, path.length() - 1);
95          }
96          else
97          {
98              // match one path
99              exactPath = true;
100             this.path = path;
101         }
102     }
103 
104     /**
105      * @return request path restriction for this tool
106      * @since VelocityTools 1.3
107      */
108     public String getRequestPath()
109     {
110         return this.path;
111     }
112 
113     /**
114      * @param requestedPath the path of the current servlet request
115      * @return <code>true</code> if the path of the specified
116      *         request path matches the request path of this tool.
117      *         If there is no request path restriction for this tool,
118      *         it will always return <code>true</code>.
119      * @since VelocityTools 1.3
120      */
121     public boolean allowsRequestPath(String requestedPath)
122     {
123         if (this.path == null)
124         {
125             return true;
126         }
127 
128         if (exactPath)
129         {
130             return this.path.equals(requestedPath);
131         }
132         else if (requestedPath != null)
133         {
134             return requestedPath.startsWith(this.path);
135         }
136         return false;
137     }
138 
139 }