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  
27  /**
28   * Sets the header in the response whenever the rule finds a match.
29   */
30  public class HeaderPatternRule extends PatternRule
31  {
32      private String _name;
33      private String _value;
34      private boolean _add=false;
35  
36      /* ------------------------------------------------------------ */
37      public HeaderPatternRule()
38      {
39          _handling = false;
40          _terminating = false;
41      }
42  
43      /* ------------------------------------------------------------ */
44      /**
45       * Sets the header name.
46       * 
47       * @param name name of the header field
48       */
49      public void setName(String name)
50      {
51          _name = name;
52      }
53  
54      /* ------------------------------------------------------------ */
55      /**
56       * Sets the header value. The value can be either a <code>String</code> or <code>int</code> value.
57       * 
58       * @param value of the header field
59       */
60      public void setValue(String value)
61      {
62          _value = value;
63      }
64  
65      /* ------------------------------------------------------------ */
66      /**
67       * Sets the Add flag. 
68       * @param add If true, the header is added to the response, otherwise the header it is set on the response.
69       */
70      public void setAdd(boolean add)
71      {
72          _add = add;
73      }
74  
75      /* ------------------------------------------------------------ */
76      /**
77       * Invokes this method when a match found. If the header had already been set, 
78       * the new value overwrites the previous one. Otherwise, it adds the new 
79       * header name and value.
80       * 
81       *@see org.eclipse.jetty.rewrite.handler.Rule#matchAndApply(String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
82       */
83      public String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException
84      {
85          // process header
86          if (_add)
87              response.addHeader(_name, _value);
88          else
89              response.setHeader(_name, _value); 
90          return target;
91      }
92      
93      
94  
95      /* ------------------------------------------------------------ */
96      /**
97       * Returns the header name.
98       * @return the header name.
99       */
100     public String getName()
101     {
102         return _name;
103     }
104 
105     /* ------------------------------------------------------------ */
106     /**
107      * Returns the header value.
108      * @return the header value.
109      */
110     public String getValue()
111     {
112         return _value;
113     }
114 
115     /* ------------------------------------------------------------ */
116     /**
117      * Returns the add flag value.
118      */
119     public boolean isAdd()
120     {
121         return _add;
122     }
123 
124     /* ------------------------------------------------------------ */
125     /**
126      * Returns the header contents.
127      */
128     public String toString()
129     {
130         return super.toString()+"["+_name+","+_value+"]";
131     }
132 }