View Javadoc
1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  
28  package org.apache.http.message;
29  
30  import org.apache.http.Header;
31  import org.apache.http.HeaderIterator;
32  import org.apache.http.HttpMessage;
33  import org.apache.http.params.BasicHttpParams;
34  import org.apache.http.params.HttpParams;
35  import org.apache.http.util.Args;
36  
37  /**
38   * Basic implementation of {@link HttpMessage}.
39   *
40   * @since 4.0
41   */
42  @SuppressWarnings("deprecation")
43  public abstract class AbstractHttpMessage implements HttpMessage {
44  
45      protected HeaderGroup headergroup;
46  
47      /**
48       * @deprecated Do not use.
49       */
50      @Deprecated
51      protected HttpParams params;
52  
53      /**
54       * @deprecated (4.3) use {@link AbstractHttpMessage#AbstractHttpMessage()}
55       */
56      @Deprecated
57      protected AbstractHttpMessage(final HttpParams params) {
58          super();
59          this.headergroup = new HeaderGroup();
60          this.params = params;
61      }
62  
63      protected AbstractHttpMessage() {
64          this(null);
65      }
66  
67      // non-javadoc, see interface HttpMessage
68      @Override
69      public boolean containsHeader(final String name) {
70          return this.headergroup.containsHeader(name);
71      }
72  
73      // non-javadoc, see interface HttpMessage
74      @Override
75      public Header[] getHeaders(final String name) {
76          return this.headergroup.getHeaders(name);
77      }
78  
79      // non-javadoc, see interface HttpMessage
80      @Override
81      public Header getFirstHeader(final String name) {
82          return this.headergroup.getFirstHeader(name);
83      }
84  
85      // non-javadoc, see interface HttpMessage
86      @Override
87      public Header getLastHeader(final String name) {
88          return this.headergroup.getLastHeader(name);
89      }
90  
91      // non-javadoc, see interface HttpMessage
92      @Override
93      public Header[] getAllHeaders() {
94          return this.headergroup.getAllHeaders();
95      }
96  
97      // non-javadoc, see interface HttpMessage
98      @Override
99      public void addHeader(final Header header) {
100         this.headergroup.addHeader(header);
101     }
102 
103     // non-javadoc, see interface HttpMessage
104     @Override
105     public void addHeader(final String name, final String value) {
106         Args.notNull(name, "Header name");
107         this.headergroup.addHeader(new BasicHeader(name, value));
108     }
109 
110     // non-javadoc, see interface HttpMessage
111     @Override
112     public void setHeader(final Header header) {
113         this.headergroup.updateHeader(header);
114     }
115 
116     // non-javadoc, see interface HttpMessage
117     @Override
118     public void setHeader(final String name, final String value) {
119         Args.notNull(name, "Header name");
120         this.headergroup.updateHeader(new BasicHeader(name, value));
121     }
122 
123     // non-javadoc, see interface HttpMessage
124     @Override
125     public void setHeaders(final Header[] headers) {
126         this.headergroup.setHeaders(headers);
127     }
128 
129     // non-javadoc, see interface HttpMessage
130     @Override
131     public void removeHeader(final Header header) {
132         this.headergroup.removeHeader(header);
133     }
134 
135     // non-javadoc, see interface HttpMessage
136     @Override
137     public void removeHeaders(final String name) {
138         if (name == null) {
139             return;
140         }
141         for (final HeaderIterator i = this.headergroup.iterator(); i.hasNext(); ) {
142             final Header header = i.nextHeader();
143             if (name.equalsIgnoreCase(header.getName())) {
144                 i.remove();
145             }
146         }
147     }
148 
149     // non-javadoc, see interface HttpMessage
150     @Override
151     public HeaderIterator headerIterator() {
152         return this.headergroup.iterator();
153     }
154 
155     // non-javadoc, see interface HttpMessage
156     @Override
157     public HeaderIterator headerIterator(final String name) {
158         return this.headergroup.iterator(name);
159     }
160 
161     /**
162      * @deprecated (4.3) use constructor parameters of configuration API provided by HttpClient
163      */
164     @Override
165     @Deprecated
166     public HttpParams getParams() {
167         if (this.params == null) {
168             this.params = new BasicHttpParams();
169         }
170         return this.params;
171     }
172 
173     /**
174      * @deprecated (4.3) use constructor parameters of configuration API provided by HttpClient
175      */
176     @Override
177     @Deprecated
178     public void setParams(final HttpParams params) {
179         this.params = Args.notNull(params, "HTTP parameters");
180     }
181 }