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 }