View Javadoc

1   //========================================================================
2   //$Id$
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  package org.mortbay.jetty.handler.rewrite;
16  
17  import org.mortbay.jetty.servlet.PathMap;
18  import org.mortbay.util.URIUtil;
19  import java.util.Map;
20  
21  import javax.servlet.http.HttpServletRequest;
22  import javax.servlet.http.HttpServletResponse;
23  import java.io.IOException;
24  
25  /**
26   * Rule implementing the legacy API of RewriteHandler
27   * @author gregw
28   *
29   */
30  public class LegacyRule extends Rule
31  {
32      private PathMap _rewrite = new PathMap(true);
33      
34      public LegacyRule()
35      {
36          _handling = false;
37          _terminating = false;
38      }
39  
40      /* ------------------------------------------------------------ */
41      public String matchAndApply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException
42      {
43          Map.Entry<?,?> rewrite =_rewrite.getMatch(target);
44          
45          if (rewrite!=null && rewrite.getValue()!=null)
46          {
47              target=URIUtil.addPaths(rewrite.getValue().toString(),
48                      PathMap.pathInfo(rewrite.getKey().toString(),target));
49  
50              return target;
51          }
52          
53          return null;
54      }
55      
56      /* ------------------------------------------------------------ */
57      /**
58       * Returns the map of rewriting rules.
59       * @return A {@link PathMap} of the rewriting rules.
60       */
61      public PathMap getRewrite()
62      {
63          return _rewrite;
64      }
65  
66      /* ------------------------------------------------------------ */
67      /**
68       * Sets the map of rewriting rules.
69       * @param rewrite A {@link PathMap} of the rewriting rules. Only 
70       * prefix paths should be included.
71       */
72      public void setRewrite(PathMap rewrite)
73      {
74          _rewrite=rewrite;
75      }
76      
77      
78      /* ------------------------------------------------------------ */
79      /** Add a path rewriting rule
80       * @param pattern The path pattern to match. The pattern must start with / and may use
81       * a trailing /* as a wildcard.
82       * @param prefix The path prefix which will replace the matching part of the path.
83       */
84      public void addRewriteRule(String pattern, String prefix)
85      {
86          if (pattern==null || pattern.length()==0 || !pattern.startsWith("/"))
87              throw new IllegalArgumentException();
88          if (_rewrite==null)
89              _rewrite=new PathMap(true);
90          _rewrite.put(pattern,prefix);
91      }
92  
93  
94  }