001/* 002 * ==================================================================== 003 * Licensed to the Apache Software Foundation (ASF) under one 004 * or more contributor license agreements. See the NOTICE file 005 * distributed with this work for additional information 006 * regarding copyright ownership. The ASF licenses this file 007 * to you under the Apache License, Version 2.0 (the 008 * "License"); you may not use this file except in compliance 009 * with the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, 014 * software distributed under the License is distributed on an 015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 016 * KIND, either express or implied. See the License for the 017 * specific language governing permissions and limitations 018 * under the License. 019 * ==================================================================== 020 * 021 * This software consists of voluntary contributions made by many 022 * individuals on behalf of the Apache Software Foundation. For more 023 * information on the Apache Software Foundation, please see 024 * <http://www.apache.org/>. 025 * 026 */ 027 028package org.apache.http.message; 029 030import org.apache.http.Header; 031import org.apache.http.HeaderIterator; 032import org.apache.http.HttpMessage; 033import org.apache.http.params.BasicHttpParams; 034import org.apache.http.params.HttpParams; 035import org.apache.http.util.Args; 036 037/** 038 * Basic implementation of {@link HttpMessage}. 039 * 040 * @since 4.0 041 */ 042@SuppressWarnings("deprecation") 043public abstract class AbstractHttpMessage implements HttpMessage { 044 045 protected HeaderGroup headergroup; 046 047 @Deprecated 048 protected HttpParams params; 049 050 /** 051 * @deprecated (4.3) use {@link AbstractHttpMessage#AbstractHttpMessage()} 052 */ 053 @Deprecated 054 protected AbstractHttpMessage(final HttpParams params) { 055 super(); 056 this.headergroup = new HeaderGroup(); 057 this.params = params; 058 } 059 060 protected AbstractHttpMessage() { 061 this(null); 062 } 063 064 // non-javadoc, see interface HttpMessage 065 @Override 066 public boolean containsHeader(final String name) { 067 return this.headergroup.containsHeader(name); 068 } 069 070 // non-javadoc, see interface HttpMessage 071 @Override 072 public Header[] getHeaders(final String name) { 073 return this.headergroup.getHeaders(name); 074 } 075 076 // non-javadoc, see interface HttpMessage 077 @Override 078 public Header getFirstHeader(final String name) { 079 return this.headergroup.getFirstHeader(name); 080 } 081 082 // non-javadoc, see interface HttpMessage 083 @Override 084 public Header getLastHeader(final String name) { 085 return this.headergroup.getLastHeader(name); 086 } 087 088 // non-javadoc, see interface HttpMessage 089 @Override 090 public Header[] getAllHeaders() { 091 return this.headergroup.getAllHeaders(); 092 } 093 094 // non-javadoc, see interface HttpMessage 095 @Override 096 public void addHeader(final Header header) { 097 this.headergroup.addHeader(header); 098 } 099 100 // non-javadoc, see interface HttpMessage 101 @Override 102 public void addHeader(final String name, final String value) { 103 Args.notNull(name, "Header name"); 104 this.headergroup.addHeader(new BasicHeader(name, value)); 105 } 106 107 // non-javadoc, see interface HttpMessage 108 @Override 109 public void setHeader(final Header header) { 110 this.headergroup.updateHeader(header); 111 } 112 113 // non-javadoc, see interface HttpMessage 114 @Override 115 public void setHeader(final String name, final String value) { 116 Args.notNull(name, "Header name"); 117 this.headergroup.updateHeader(new BasicHeader(name, value)); 118 } 119 120 // non-javadoc, see interface HttpMessage 121 @Override 122 public void setHeaders(final Header[] headers) { 123 this.headergroup.setHeaders(headers); 124 } 125 126 // non-javadoc, see interface HttpMessage 127 @Override 128 public void removeHeader(final Header header) { 129 this.headergroup.removeHeader(header); 130 } 131 132 // non-javadoc, see interface HttpMessage 133 @Override 134 public void removeHeaders(final String name) { 135 if (name == null) { 136 return; 137 } 138 for (final HeaderIterator i = this.headergroup.iterator(); i.hasNext(); ) { 139 final Header header = i.nextHeader(); 140 if (name.equalsIgnoreCase(header.getName())) { 141 i.remove(); 142 } 143 } 144 } 145 146 // non-javadoc, see interface HttpMessage 147 @Override 148 public HeaderIterator headerIterator() { 149 return this.headergroup.iterator(); 150 } 151 152 // non-javadoc, see interface HttpMessage 153 @Override 154 public HeaderIterator headerIterator(final String name) { 155 return this.headergroup.iterator(name); 156 } 157 158 /** 159 * @deprecated (4.3) use constructor parameters of configuration API provided by HttpClient 160 */ 161 @Override 162 @Deprecated 163 public HttpParams getParams() { 164 if (this.params == null) { 165 this.params = new BasicHttpParams(); 166 } 167 return this.params; 168 } 169 170 /** 171 * @deprecated (4.3) use constructor parameters of configuration API provided by HttpClient 172 */ 173 @Override 174 @Deprecated 175 public void setParams(final HttpParams params) { 176 this.params = Args.notNull(params, "HTTP parameters"); 177 } 178}