View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.rewrite.handler;
20  
21  import java.io.IOException;
22  
23  import javax.servlet.http.HttpServletRequest;
24  import javax.servlet.http.HttpServletResponse;
25  
26  import org.eclipse.jetty.http.PathMap;
27  import org.eclipse.jetty.server.Request;
28  import org.eclipse.jetty.util.URIUtil;
29  
30  /**
31   * Rewrite the URI by replacing the matched {@link PathMap} path with a fixed string. 
32   */
33  public class RewritePatternRule extends PatternRule implements Rule.ApplyURI
34  {
35      private String _replacement;
36  
37      /* ------------------------------------------------------------ */
38      public RewritePatternRule()
39      {
40          _handling = false;
41          _terminating = false;
42      }
43  
44      /* ------------------------------------------------------------ */
45      /**
46       * Whenever a match is found, it replaces with this value.
47       * 
48       * @param value the replacement string.
49       */
50      public void setReplacement(String value)
51      {
52          _replacement = value;
53      }
54  
55      /* ------------------------------------------------------------ */
56      /*
57       * (non-Javadoc)
58       * @see org.eclipse.jetty.server.handler.rules.RuleBase#apply(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
59       */
60      @Override
61      public String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException
62      {
63          target = URIUtil.addPaths(_replacement, PathMap.pathInfo(_pattern,target));   
64          return target;
65      }
66  
67      /* ------------------------------------------------------------ */
68      @Override
69      public void applyURI(Request request, String oldTarget, String newTarget) throws IOException 
70      {
71          String uri = URIUtil.addPaths(_replacement, PathMap.pathInfo(_pattern,request.getRequestURI()));
72          request.setRequestURI(uri);
73      }
74  
75      /* ------------------------------------------------------------ */
76      /**
77       * Returns the replacement string.
78       */
79      @Override
80      public String toString()
81      {
82          return super.toString()+"["+_replacement+"]";
83      }
84  }