View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 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  /**
27   * Sends the response code whenever the rule finds a match.
28   */
29  public class ResponsePatternRule extends PatternRule
30  {
31      private String _code;
32      private String _reason = "";
33  
34      /* ------------------------------------------------------------ */
35      public ResponsePatternRule()
36      {
37          _handling = true;
38          _terminating = true;
39      }
40  
41      /* ------------------------------------------------------------ */
42      /**
43       * Sets the response status code. 
44       * @param code response code
45       */
46      public void setCode(String code)
47      {
48          _code = code;
49      }
50  
51      /* ------------------------------------------------------------ */
52      /**
53       * Sets the reason for the response status code. Reasons will only reflect
54       * if the code value is greater or equal to 400.
55       * 
56       * @param reason the reason
57       */
58      public void setReason(String reason)
59      {
60          _reason = reason;
61      }
62  
63      /* ------------------------------------------------------------ */
64      /*
65       * (non-Javadoc)
66       * @see org.eclipse.jetty.server.server.handler.rules.RuleBase#apply(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
67       */
68      @Override
69      public String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException
70      {
71          int code = Integer.parseInt(_code);
72  
73          // status code 400 and up are error codes
74          if (code >= 400)
75          {
76              response.sendError(code, _reason);
77          }
78          else
79          {
80              response.setStatus(code);
81          }
82          return target;
83      }
84  
85      /* ------------------------------------------------------------ */
86      /**
87       * Returns the code and reason string.
88       */
89      @Override
90      public String toString()
91      {
92          return super.toString()+"["+_code+","+_reason+"]";
93      }
94  }