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