View Javadoc

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  
22  /**
23   * Abstract rule that use a {@link PathMap} for pattern matching. It uses the 
24   * servlet pattern syntax.
25   */
26  public abstract class PatternRule extends Rule
27  {
28      protected String _pattern;
29  
30  
31      /* ------------------------------------------------------------ */
32      public String getPattern()
33      {
34          return _pattern;
35      }
36  
37      /* ------------------------------------------------------------ */
38      /**
39       * Sets the rule pattern.
40       * 
41       * @param pattern the pattern
42       */
43      public void setPattern(String pattern)
44      {
45          _pattern = pattern;
46      }
47  
48      /* ------------------------------------------------------------ */
49      /* (non-Javadoc)
50       * @see org.eclipse.jetty.server.server.handler.rules.RuleBase#matchAndApply(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
51       */
52      public String matchAndApply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException
53      {
54          if (PathMap.match(_pattern, target))
55          {
56              return apply(target,request, response);
57          }
58          return null;
59      }
60  
61      /* ------------------------------------------------------------ */
62      /** Apply the rule to the request
63       * @param target field to attempt match
64       * @param request request object
65       * @param response response object
66       * @return The target (possible updated)
67       * @throws IOException exceptions dealing with operating on request or response objects  
68       */
69      protected abstract String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException;
70  
71      /**
72       * Returns the rule pattern.
73       */
74      public String toString()
75      {
76          return super.toString()+"["+_pattern+"]";                
77      }
78  }