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.hc.core5.http.message;
29  
30  import java.util.Iterator;
31  
32  import org.apache.hc.core5.http.Header;
33  import org.apache.hc.core5.http.HttpMessage;
34  import org.apache.hc.core5.http.ProtocolException;
35  import org.apache.hc.core5.http.ProtocolVersion;
36  import org.apache.hc.core5.util.Args;
37  
38  /**
39   * Abstract {@link HttpMessage} wrapper.
40   *
41   * @param <T> A {@link HttpMessage} type.
42   */
43  public abstract class AbstractMessageWrapper<T extends HttpMessage> implements HttpMessage {
44  
45      private final T message;
46  
47      public AbstractMessageWrapper(final T message) {
48          this.message = Args.notNull(message, "Message");
49      }
50  
51      @Override
52      public void setVersion(final ProtocolVersion version) {
53          message.setVersion(version);
54      }
55  
56      @Override
57      public ProtocolVersion getVersion() {
58          return message.getVersion();
59      }
60  
61      @Override
62      public void addHeader(final Header header) {
63          message.addHeader(header);
64      }
65  
66      @Override
67      public void addHeader(final String name, final Object value) {
68          message.addHeader(name, value);
69      }
70  
71      @Override
72      public void setHeader(final Header header) {
73          message.setHeader(header);
74      }
75  
76      @Override
77      public void setHeader(final String name, final Object value) {
78          message.setHeader(name, value);
79      }
80  
81      @Override
82      public void setHeaders(final Header... headers) {
83          message.setHeaders(headers);
84      }
85  
86      @Override
87      public boolean removeHeader(final Header header) {
88          return message.removeHeader(header);
89      }
90  
91      @Override
92      public boolean removeHeaders(final String name) {
93          return message.removeHeaders(name);
94      }
95  
96      @Override
97      public boolean containsHeader(final String name) {
98          return message.containsHeader(name);
99      }
100 
101     @Override
102     public int countHeaders(final String name) {
103         return message.countHeaders(name);
104     }
105 
106     @Override
107     public Header[] getHeaders(final String name) {
108         return message.getHeaders(name);
109     }
110 
111     @Override
112     public Header getHeader(final String name) throws ProtocolException {
113         return message.getHeader(name);
114     }
115 
116     @Override
117     public Header getFirstHeader(final String name) {
118         return message.getFirstHeader(name);
119     }
120 
121     @Override
122     public Header getLastHeader(final String name) {
123         return message.getLastHeader(name);
124     }
125 
126     T getMessage() {
127         return message;
128     }
129 
130     @Override
131     public Header[] getHeaders() {
132         return message.getHeaders();
133     }
134 
135     @Override
136     public Iterator<Header> headerIterator() {
137         return message.headerIterator();
138     }
139 
140     @Override
141     public Iterator<Header> headerIterator(final String name) {
142         return message.headerIterator(name);
143     }
144 
145     @Override
146     public String toString() {
147         return message.toString();
148     }
149 
150 }