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