1 //========================================================================
2 //$Id: FilterMapping.java,v 1.2 2005/11/01 11:42:53 gregwilkins Exp $
3 //Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
4 //------------------------------------------------------------------------
5 //Licensed under the Apache License, Version 2.0 (the "License");
6 //you may not use this file except in compliance with the License.
7 //You may obtain a copy of the License at
8 //http://www.apache.org/licenses/LICENSE-2.0
9 //Unless required by applicable law or agreed to in writing, software
10 //distributed under the License is distributed on an "AS IS" BASIS,
11 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 //See the License for the specific language governing permissions and
13 //limitations under the License.
14 //========================================================================
15
16 package org.mortbay.jetty.servlet;
17
18 import java.util.Arrays;
19
20 import org.mortbay.jetty.Handler;
21
22
23 public class FilterMapping
24 {
25 private int _dispatches=Handler.REQUEST;
26 private String _filterName;
27 private transient FilterHolder _holder;
28 private String[] _pathSpecs;
29 private String[] _servletNames;
30
31 /* ------------------------------------------------------------ */
32 public FilterMapping()
33 {}
34
35 /* ------------------------------------------------------------ */
36 /** Check if this filter applies to a path.
37 * @param path The path to check or null to just check type
38 * @param type The type of request: __REQUEST,__FORWARD,__INCLUDE or __ERROR.
39 * @return True if this filter applies
40 */
41 boolean appliesTo(String path, int type)
42 {
43 if ( ((_dispatches&type)!=0 || (_dispatches==0 && type==Handler.REQUEST)) && _pathSpecs!=null )
44 {
45 for (int i=0;i<_pathSpecs.length;i++)
46 if (_pathSpecs[i]!=null && PathMap.match(_pathSpecs[i], path,true))
47 return true;
48 }
49 return false;
50 }
51
52 /* ------------------------------------------------------------ */
53 /** Check if this filter applies to a particular dispatch type.
54 * @param type The type of request:
55 * {@link Handler#REQUEST}, {@link Handler#FORWARD}, {@link Handler#INCLUDE} or {@link Handler#ERROR}.
56 * @return <code>true</code> if this filter applies
57 */
58 boolean appliesTo(int type)
59 {
60 if ( ((_dispatches&type)!=0 || (_dispatches==0 && type==Handler.REQUEST)))
61 return true;
62 return false;
63 }
64
65
66 /* ------------------------------------------------------------ */
67 /**
68 * @return Returns the dispatches.
69 */
70 public int getDispatches()
71 {
72 return _dispatches;
73 }
74
75 /* ------------------------------------------------------------ */
76 /**
77 * @return Returns the filterName.
78 */
79 public String getFilterName()
80 {
81 return _filterName;
82 }
83
84 /* ------------------------------------------------------------ */
85 /**
86 * @return Returns the holder.
87 */
88 FilterHolder getFilterHolder()
89 {
90 return _holder;
91 }
92
93 /* ------------------------------------------------------------ */
94 /**
95 * @return Returns the pathSpec.
96 */
97 public String[] getPathSpecs()
98 {
99 return _pathSpecs;
100 }
101
102 /* ------------------------------------------------------------ */
103 /**
104 * @param dispatches The dispatches to set.
105 * @see Handler#DEFAULT
106 * @see Handler#REQUEST
107 * @see Handler#ERROR
108 * @see Handler#FORWARD
109 * @see Handler#INCLUDE
110 */
111 public void setDispatches(int dispatches)
112 {
113 _dispatches = dispatches;
114 }
115
116 /* ------------------------------------------------------------ */
117 /**
118 * @param filterName The filterName to set.
119 */
120 public void setFilterName(String filterName)
121 {
122 _filterName = filterName;
123 }
124
125 /* ------------------------------------------------------------ */
126 /**
127 * @param holder The holder to set.
128 */
129 void setFilterHolder(FilterHolder holder)
130 {
131 _holder = holder;
132 }
133
134 /* ------------------------------------------------------------ */
135 /**
136 * @param pathSpecs The Path specifications to which this filter should be mapped.
137 */
138 public void setPathSpecs(String[] pathSpecs)
139 {
140 _pathSpecs = pathSpecs;
141 }
142
143 /* ------------------------------------------------------------ */
144 /**
145 * @param pathSpec The pathSpec to set.
146 */
147 public void setPathSpec(String pathSpec)
148 {
149 _pathSpecs = new String[]{pathSpec};
150 }
151
152 /* ------------------------------------------------------------ */
153 /**
154 * @return Returns the servletName.
155 */
156 public String[] getServletNames()
157 {
158 return _servletNames;
159 }
160
161 /* ------------------------------------------------------------ */
162 /**
163 * @param servletNames Maps the {@link #setFilterName(String) named filter} to multiple servlets
164 * @see #setServletName
165 */
166 public void setServletNames(String[] servletNames)
167 {
168 _servletNames = servletNames;
169 }
170
171 /* ------------------------------------------------------------ */
172 /**
173 * @param servletName Maps the {@link #setFilterName(String) named filter} to a single servlet
174 * @see #setServletNames
175 */
176 public void setServletName(String servletName)
177 {
178 _servletNames = new String[]{servletName};
179 }
180
181 /* ------------------------------------------------------------ */
182 public String toString()
183 {
184 return "(F="+_filterName+","+(_pathSpecs==null?"[]":Arrays.asList(_pathSpecs).toString())+","+(_servletNames==null?"[]":Arrays.asList(_servletNames).toString())+","+_dispatches+")";
185 }
186 }