summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/message
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/message')
-rw-r--r--src/org/apache/http/message/AbstractHttpMessage.java166
-rw-r--r--src/org/apache/http/message/BasicHeader.java143
-rw-r--r--src/org/apache/http/message/BasicHeaderElement.java243
-rw-r--r--src/org/apache/http/message/BasicHeaderElementIterator.java161
-rw-r--r--src/org/apache/http/message/BasicHeaderIterator.java180
-rw-r--r--src/org/apache/http/message/BasicHeaderValueFormatter.java441
-rw-r--r--src/org/apache/http/message/BasicHeaderValueParser.java420
-rw-r--r--src/org/apache/http/message/BasicHttpEntityEnclosingRequest.java81
-rw-r--r--src/org/apache/http/message/BasicHttpRequest.java98
-rw-r--r--src/org/apache/http/message/BasicHttpResponse.java204
-rw-r--r--src/org/apache/http/message/BasicLineFormatter.java346
-rw-r--r--src/org/apache/http/message/BasicLineParser.java504
-rw-r--r--src/org/apache/http/message/BasicListHeaderIterator.java196
-rw-r--r--src/org/apache/http/message/BasicNameValuePair.java189
-rw-r--r--src/org/apache/http/message/BasicRequestLine.java99
-rw-r--r--src/org/apache/http/message/BasicStatusLine.java124
-rw-r--r--src/org/apache/http/message/BasicTokenIterator.java429
-rw-r--r--src/org/apache/http/message/BufferedHeader.java133
-rw-r--r--src/org/apache/http/message/HeaderGroup.java295
-rw-r--r--src/org/apache/http/message/HeaderValueFormatter.java141
-rw-r--r--src/org/apache/http/message/HeaderValueParser.java214
-rw-r--r--src/org/apache/http/message/LineFormatter.java153
-rw-r--r--src/org/apache/http/message/LineParser.java156
-rw-r--r--src/org/apache/http/message/ParserCursor.java102
-rw-r--r--src/org/apache/http/message/package.html49
25 files changed, 0 insertions, 5267 deletions
diff --git a/src/org/apache/http/message/AbstractHttpMessage.java b/src/org/apache/http/message/AbstractHttpMessage.java
deleted file mode 100644
index d8a6962..0000000
--- a/src/org/apache/http/message/AbstractHttpMessage.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/AbstractHttpMessage.java $
- * $Revision: 620287 $
- * $Date: 2008-02-10 07:15:53 -0800 (Sun, 10 Feb 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import java.util.Iterator;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.HttpMessage;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.BasicHttpParams;
-
-/**
- * Basic implementation of an HTTP message that can be modified.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 620287 $
- *
- * @since 4.0
- */
-public abstract class AbstractHttpMessage implements HttpMessage {
-
- protected HeaderGroup headergroup;
-
- protected HttpParams params;
-
- protected AbstractHttpMessage(final HttpParams params) {
- super();
- this.headergroup = new HeaderGroup();
- this.params = params;
- }
-
- protected AbstractHttpMessage() {
- this(null);
- }
-
- // non-javadoc, see interface HttpMessage
- public boolean containsHeader(String name) {
- return this.headergroup.containsHeader(name);
- }
-
- // non-javadoc, see interface HttpMessage
- public Header[] getHeaders(final String name) {
- return this.headergroup.getHeaders(name);
- }
-
- // non-javadoc, see interface HttpMessage
- public Header getFirstHeader(final String name) {
- return this.headergroup.getFirstHeader(name);
- }
-
- // non-javadoc, see interface HttpMessage
- public Header getLastHeader(final String name) {
- return this.headergroup.getLastHeader(name);
- }
-
- // non-javadoc, see interface HttpMessage
- public Header[] getAllHeaders() {
- return this.headergroup.getAllHeaders();
- }
-
- // non-javadoc, see interface HttpMessage
- public void addHeader(final Header header) {
- this.headergroup.addHeader(header);
- }
-
- // non-javadoc, see interface HttpMessage
- public void addHeader(final String name, final String value) {
- if (name == null) {
- throw new IllegalArgumentException("Header name may not be null");
- }
- this.headergroup.addHeader(new BasicHeader(name, value));
- }
-
- // non-javadoc, see interface HttpMessage
- public void setHeader(final Header header) {
- this.headergroup.updateHeader(header);
- }
-
- // non-javadoc, see interface HttpMessage
- public void setHeader(final String name, final String value) {
- if (name == null) {
- throw new IllegalArgumentException("Header name may not be null");
- }
- this.headergroup.updateHeader(new BasicHeader(name, value));
- }
-
- // non-javadoc, see interface HttpMessage
- public void setHeaders(final Header[] headers) {
- this.headergroup.setHeaders(headers);
- }
-
- // non-javadoc, see interface HttpMessage
- public void removeHeader(final Header header) {
- this.headergroup.removeHeader(header);
- }
-
- // non-javadoc, see interface HttpMessage
- public void removeHeaders(final String name) {
- if (name == null) {
- return;
- }
- for (Iterator i = this.headergroup.iterator(); i.hasNext(); ) {
- Header header = (Header) i.next();
- if (name.equalsIgnoreCase(header.getName())) {
- i.remove();
- }
- }
- }
-
- // non-javadoc, see interface HttpMessage
- public HeaderIterator headerIterator() {
- return this.headergroup.iterator();
- }
-
- // non-javadoc, see interface HttpMessage
- public HeaderIterator headerIterator(String name) {
- return this.headergroup.iterator(name);
- }
-
- // non-javadoc, see interface HttpMessage
- public HttpParams getParams() {
- if (this.params == null) {
- this.params = new BasicHttpParams();
- }
- return this.params;
- }
-
- // non-javadoc, see interface HttpMessage
- public void setParams(final HttpParams params) {
- if (params == null) {
- throw new IllegalArgumentException("HTTP parameters may not be null");
- }
- this.params = params;
- }
-}
diff --git a/src/org/apache/http/message/BasicHeader.java b/src/org/apache/http/message/BasicHeader.java
deleted file mode 100644
index f134d8d..0000000
--- a/src/org/apache/http/message/BasicHeader.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeader.java $
- * $Revision: 652956 $
- * $Date: 2008-05-02 17:13:05 -0700 (Fri, 02 May 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.ParseException;
-
-/**
- * Represents an HTTP header field.
- *
- * <p>The HTTP header fields follow the same generic format as
- * that given in Section 3.1 of RFC 822. Each header field consists
- * of a name followed by a colon (":") and the field value. Field names
- * are case-insensitive. The field value MAY be preceded by any amount
- * of LWS, though a single SP is preferred.
- *
- *<pre>
- * message-header = field-name ":" [ field-value ]
- * field-name = token
- * field-value = *( field-content | LWS )
- * field-content = &lt;the OCTETs making up the field-value
- * and consisting of either *TEXT or combinations
- * of token, separators, and quoted-string&gt;
- *</pre>
- *
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 652956 $ $Date: 2008-05-02 17:13:05 -0700 (Fri, 02 May 2008) $
- *
- * @since 4.0
- */
-public class BasicHeader implements Header, Cloneable {
-
- /**
- * Header name.
- */
- private final String name;
-
- /**
- * Header value.
- */
- private final String value;
-
- /**
- * Constructor with name and value
- *
- * @param name the header name
- * @param value the header value
- */
- public BasicHeader(final String name, final String value) {
- super();
- if (name == null) {
- throw new IllegalArgumentException("Name may not be null");
- }
- this.name = name;
- this.value = value;
- }
-
- /**
- * Returns the header name.
- *
- * @return String name The name
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * Returns the header value.
- *
- * @return String value The current value.
- */
- public String getValue() {
- return this.value;
- }
-
- /**
- * Returns a {@link String} representation of the header.
- *
- * @return a string
- */
- public String toString() {
- // no need for non-default formatting in toString()
- return BasicLineFormatter.DEFAULT.formatHeader(null, this).toString();
- }
-
- /**
- * Returns an array of {@link HeaderElement}s constructed from my value.
- *
- * @see BasicHeaderValueParser#parseElements(String, HeaderValueParser)
- *
- * @return an array of header elements
- *
- * @throws ParseException in case of a parse error
- */
- public HeaderElement[] getElements() throws ParseException {
- if (this.value != null) {
- // result intentionally not cached, it's probably not used again
- return BasicHeaderValueParser.parseElements(this.value, null);
- } else {
- return new HeaderElement[] {};
- }
- }
-
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
-}
diff --git a/src/org/apache/http/message/BasicHeaderElement.java b/src/org/apache/http/message/BasicHeaderElement.java
deleted file mode 100644
index 19a40c6..0000000
--- a/src/org/apache/http/message/BasicHeaderElement.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElement.java $
- * $Revision: 604625 $
- * $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.LangUtils;
-
-/**
- * One element of an HTTP header's value.
- * <p>
- * Some HTTP headers (such as the set-cookie header) have values that
- * can be decomposed into multiple elements. Such headers must be in the
- * following form:
- * </p>
- * <pre>
- * header = [ element ] *( "," [ element ] )
- * element = name [ "=" [ value ] ] *( ";" [ param ] )
- * param = name [ "=" [ value ] ]
- *
- * name = token
- * value = ( token | quoted-string )
- *
- * token = 1*&lt;any char except "=", ",", ";", &lt;"&gt; and
- * white space&gt;
- * quoted-string = &lt;"&gt; *( text | quoted-char ) &lt;"&gt;
- * text = any char except &lt;"&gt;
- * quoted-char = "\" char
- * </pre>
- * <p>
- * Any amount of white space is allowed between any part of the
- * header, element or param and is ignored. A missing value in any
- * element or param will be stored as the empty {@link String};
- * if the "=" is also missing <var>null</var> will be stored instead.
- * </p>
- * <p>
- * This class represents an individual header element, containing
- * both a name/value pair (value may be <tt>null</tt>) and optionally
- * a set of additional parameters.
- * </p>
- *
- * @author <a href="mailto:bcholmes@interlog.com">B.C. Holmes</a>
- * @author <a href="mailto:jericho@thinkfree.com">Park, Sung-Gu</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.com">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 604625 $ $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- *
- * @since 4.0
- */
-public class BasicHeaderElement implements HeaderElement, Cloneable {
-
- private final String name;
- private final String value;
- private final NameValuePair[] parameters;
-
- /**
- * Constructor with name, value and parameters.
- *
- * @param name header element name
- * @param value header element value. May be <tt>null</tt>
- * @param parameters header element parameters. May be <tt>null</tt>.
- * Parameters are copied by reference, not by value
- */
- public BasicHeaderElement(
- final String name,
- final String value,
- final NameValuePair[] parameters) {
- super();
- if (name == null) {
- throw new IllegalArgumentException("Name may not be null");
- }
- this.name = name;
- this.value = value;
- if (parameters != null) {
- this.parameters = parameters;
- } else {
- this.parameters = new NameValuePair[] {};
- }
- }
-
- /**
- * Constructor with name and value.
- *
- * @param name header element name
- * @param value header element value. May be <tt>null</tt>
- */
- public BasicHeaderElement(final String name, final String value) {
- this(name, value, null);
- }
-
- /**
- * Returns the name.
- *
- * @return String name The name
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * Returns the value.
- *
- * @return String value The current value.
- */
- public String getValue() {
- return this.value;
- }
-
- /**
- * Get parameters, if any.
- * The returned array is created for each invocation and can
- * be modified by the caller without affecting this header element.
- *
- * @return parameters as an array of {@link NameValuePair}s
- */
- public NameValuePair[] getParameters() {
- return (NameValuePair[])this.parameters.clone();
- }
-
-
- /**
- * Obtains the number of parameters.
- *
- * @return the number of parameters
- */
- public int getParameterCount() {
- return this.parameters.length;
- }
-
-
- /**
- * Obtains the parameter with the given index.
- *
- * @param index the index of the parameter, 0-based
- *
- * @return the parameter with the given index
- */
- public NameValuePair getParameter(int index) {
- // ArrayIndexOutOfBoundsException is appropriate
- return this.parameters[index];
- }
-
-
- /**
- * Returns parameter with the given name, if found. Otherwise null
- * is returned
- *
- * @param name The name to search by.
- * @return NameValuePair parameter with the given name
- */
- public NameValuePair getParameterByName(final String name) {
- if (name == null) {
- throw new IllegalArgumentException("Name may not be null");
- }
- NameValuePair found = null;
- for (int i = 0; i < this.parameters.length; i++) {
- NameValuePair current = this.parameters[ i ];
- if (current.getName().equalsIgnoreCase(name)) {
- found = current;
- break;
- }
- }
- return found;
- }
-
- public boolean equals(final Object object) {
- if (object == null) return false;
- if (this == object) return true;
- if (object instanceof HeaderElement) {
- BasicHeaderElement that = (BasicHeaderElement) object;
- return this.name.equals(that.name)
- && LangUtils.equals(this.value, that.value)
- && LangUtils.equals(this.parameters, that.parameters);
- } else {
- return false;
- }
- }
-
- public int hashCode() {
- int hash = LangUtils.HASH_SEED;
- hash = LangUtils.hashCode(hash, this.name);
- hash = LangUtils.hashCode(hash, this.value);
- for (int i = 0; i < this.parameters.length; i++) {
- hash = LangUtils.hashCode(hash, this.parameters[i]);
- }
- return hash;
- }
-
- public String toString() {
- CharArrayBuffer buffer = new CharArrayBuffer(64);
- buffer.append(this.name);
- if (this.value != null) {
- buffer.append("=");
- buffer.append(this.value);
- }
- for (int i = 0; i < this.parameters.length; i++) {
- buffer.append("; ");
- buffer.append(this.parameters[i]);
- }
- return buffer.toString();
- }
-
- public Object clone() throws CloneNotSupportedException {
- // parameters array is considered immutable
- // no need to make a copy of it
- return super.clone();
- }
-
-}
-
diff --git a/src/org/apache/http/message/BasicHeaderElementIterator.java b/src/org/apache/http/message/BasicHeaderElementIterator.java
deleted file mode 100644
index 46f53a8..0000000
--- a/src/org/apache/http/message/BasicHeaderElementIterator.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElementIterator.java $
- * $Revision: 592088 $
- * $Date: 2007-11-05 09:03:39 -0800 (Mon, 05 Nov 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import java.util.NoSuchElementException;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HeaderElementIterator;
-import org.apache.http.HeaderIterator;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Basic implementation of a {@link HeaderElementIterator}.
- *
- * @version $Revision: 592088 $
- *
- * @author Andrea Selva <selva.andre at gmail.com>
- * @author Oleg Kalnichevski <oleg at ural.ru>
- */
-public class BasicHeaderElementIterator implements HeaderElementIterator {
-
- private final HeaderIterator headerIt;
- private final HeaderValueParser parser;
-
- private HeaderElement currentElement = null;
- private CharArrayBuffer buffer = null;
- private ParserCursor cursor = null;
-
- /**
- * Creates a new instance of BasicHeaderElementIterator
- */
- public BasicHeaderElementIterator(
- final HeaderIterator headerIterator,
- final HeaderValueParser parser) {
- if (headerIterator == null) {
- throw new IllegalArgumentException("Header iterator may not be null");
- }
- if (parser == null) {
- throw new IllegalArgumentException("Parser may not be null");
- }
- this.headerIt = headerIterator;
- this.parser = parser;
- }
-
-
- public BasicHeaderElementIterator(final HeaderIterator headerIterator) {
- this(headerIterator, BasicHeaderValueParser.DEFAULT);
- }
-
-
- private void bufferHeaderValue() {
- this.cursor = null;
- this.buffer = null;
- while (this.headerIt.hasNext()) {
- Header h = this.headerIt.nextHeader();
- if (h instanceof FormattedHeader) {
- this.buffer = ((FormattedHeader) h).getBuffer();
- this.cursor = new ParserCursor(0, this.buffer.length());
- this.cursor.updatePos(((FormattedHeader) h).getValuePos());
- break;
- } else {
- String value = h.getValue();
- if (value != null) {
- this.buffer = new CharArrayBuffer(value.length());
- this.buffer.append(value);
- this.cursor = new ParserCursor(0, this.buffer.length());
- break;
- }
- }
- }
- }
-
- private void parseNextElement() {
- // loop while there are headers left to parse
- while (this.headerIt.hasNext() || this.cursor != null) {
- if (this.cursor == null || this.cursor.atEnd()) {
- // get next header value
- bufferHeaderValue();
- }
- // Anything buffered?
- if (this.cursor != null) {
- // loop while there is data in the buffer
- while (!this.cursor.atEnd()) {
- HeaderElement e = this.parser.parseHeaderElement(this.buffer, this.cursor);
- if (!(e.getName().length() == 0 && e.getValue() == null)) {
- // Found something
- this.currentElement = e;
- return;
- }
- }
- // if at the end of the buffer
- if (this.cursor.atEnd()) {
- // discard it
- this.cursor = null;
- this.buffer = null;
- }
- }
- }
- }
-
- public boolean hasNext() {
- if (this.currentElement == null) {
- parseNextElement();
- }
- return this.currentElement != null;
- }
-
- public HeaderElement nextElement() throws NoSuchElementException {
- if (this.currentElement == null) {
- parseNextElement();
- }
-
- if (this.currentElement == null) {
- throw new NoSuchElementException("No more header elements available");
- }
-
- HeaderElement element = this.currentElement;
- this.currentElement = null;
- return element;
- }
-
- public final Object next() throws NoSuchElementException {
- return nextElement();
- }
-
- public void remove() throws UnsupportedOperationException {
- throw new UnsupportedOperationException("Remove not supported");
- }
-
-} \ No newline at end of file
diff --git a/src/org/apache/http/message/BasicHeaderIterator.java b/src/org/apache/http/message/BasicHeaderIterator.java
deleted file mode 100644
index 32cd1c8..0000000
--- a/src/org/apache/http/message/BasicHeaderIterator.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderIterator.java $
- * $Revision: 581981 $
- * $Date: 2007-10-04 11:26:26 -0700 (Thu, 04 Oct 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import java.util.NoSuchElementException;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-
-
-/**
- * Basic implementation of a {@link HeaderIterator}.
- *
- * @version $Revision: 581981 $
- */
-public class BasicHeaderIterator implements HeaderIterator {
-
- /**
- * An array of headers to iterate over.
- * Not all elements of this array are necessarily part of the iteration.
- * This array will never be modified by the iterator.
- * Derived implementations are expected to adhere to this restriction.
- */
- protected final Header[] allHeaders;
-
-
- /**
- * The position of the next header in {@link #allHeaders allHeaders}.
- * Negative if the iteration is over.
- */
- protected int currentIndex;
-
-
- /**
- * The header name to filter by.
- * <code>null</code> to iterate over all headers in the array.
- */
- protected String headerName;
-
-
-
- /**
- * Creates a new header iterator.
- *
- * @param headers an array of headers over which to iterate
- * @param name the name of the headers over which to iterate, or
- * <code>null</code> for any
- */
- public BasicHeaderIterator(Header[] headers, String name) {
- if (headers == null) {
- throw new IllegalArgumentException
- ("Header array must not be null.");
- }
-
- this.allHeaders = headers;
- this.headerName = name;
- this.currentIndex = findNext(-1);
- }
-
-
- /**
- * Determines the index of the next header.
- *
- * @param from one less than the index to consider first,
- * -1 to search for the first header
- *
- * @return the index of the next header that matches the filter name,
- * or negative if there are no more headers
- */
- protected int findNext(int from) {
- if (from < -1)
- return -1;
-
- final int to = this.allHeaders.length-1;
- boolean found = false;
- while (!found && (from < to)) {
- from++;
- found = filterHeader(from);
- }
- return found ? from : -1;
- }
-
-
- /**
- * Checks whether a header is part of the iteration.
- *
- * @param index the index of the header to check
- *
- * @return <code>true</code> if the header should be part of the
- * iteration, <code>false</code> to skip
- */
- protected boolean filterHeader(int index) {
- return (this.headerName == null) ||
- this.headerName.equalsIgnoreCase(this.allHeaders[index].getName());
- }
-
-
- // non-javadoc, see interface HeaderIterator
- public boolean hasNext() {
- return (this.currentIndex >= 0);
- }
-
-
- /**
- * Obtains the next header from this iteration.
- *
- * @return the next header in this iteration
- *
- * @throws NoSuchElementException if there are no more headers
- */
- public Header nextHeader()
- throws NoSuchElementException {
-
- final int current = this.currentIndex;
- if (current < 0) {
- throw new NoSuchElementException("Iteration already finished.");
- }
-
- this.currentIndex = findNext(current);
-
- return this.allHeaders[current];
- }
-
-
- /**
- * Returns the next header.
- * Same as {@link #nextHeader nextHeader}, but not type-safe.
- *
- * @return the next header in this iteration
- *
- * @throws NoSuchElementException if there are no more headers
- */
- public final Object next()
- throws NoSuchElementException {
- return nextHeader();
- }
-
-
- /**
- * Removing headers is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove()
- throws UnsupportedOperationException {
-
- throw new UnsupportedOperationException
- ("Removing headers is not supported.");
- }
-}
diff --git a/src/org/apache/http/message/BasicHeaderValueFormatter.java b/src/org/apache/http/message/BasicHeaderValueFormatter.java
deleted file mode 100644
index b63bdf7..0000000
--- a/src/org/apache/http/message/BasicHeaderValueFormatter.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueFormatter.java $
- * $Revision: 574185 $
- * $Date: 2007-09-10 02:19:47 -0700 (Mon, 10 Sep 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.util.CharArrayBuffer;
-
-
-/**
- * Basic implementation for formatting header value elements.
- * Instances of this class are stateless and thread-safe.
- * Derived classes are expected to maintain these properties.
- *
- * @author <a href="mailto:oleg at ural.com">Oleg Kalnichevski</a>
- * @author and others
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 574185 $
- *
- * @since 4.0
- */
-public class BasicHeaderValueFormatter implements HeaderValueFormatter {
-
- /**
- * A default instance of this class, for use as default or fallback.
- * Note that {@link BasicHeaderValueFormatter} is not a singleton, there
- * can be many instances of the class itself and of derived classes.
- * The instance here provides non-customized, default behavior.
- */
- public final static
- BasicHeaderValueFormatter DEFAULT = new BasicHeaderValueFormatter();
-
-
- /**
- * Special characters that can be used as separators in HTTP parameters.
- * These special characters MUST be in a quoted string to be used within
- * a parameter value .
- */
- public final static String SEPARATORS = " ;,:@()<>\\\"/[]?={}\t";
-
-
- /**
- * Unsafe special characters that must be escaped using the backslash
- * character
- */
- public final static String UNSAFE_CHARS = "\"\\";
-
-
-
- // public default constructor
-
-
-
- /**
- * Formats an array of header elements.
- *
- * @param elems the header elements to format
- * @param quote <code>true</code> to always format with quoted values,
- * <code>false</code> to use quotes only when necessary
- * @param formatter the formatter to use, or <code>null</code>
- * for the {@link #DEFAULT default}
- *
- * @return the formatted header elements
- */
- public final static
- String formatElements(final HeaderElement[] elems,
- final boolean quote,
- HeaderValueFormatter formatter) {
- if (formatter == null)
- formatter = BasicHeaderValueFormatter.DEFAULT;
- return formatter.formatElements(null, elems, quote).toString();
- }
-
-
- // non-javadoc, see interface HeaderValueFormatter
- public CharArrayBuffer formatElements(CharArrayBuffer buffer,
- final HeaderElement[] elems,
- final boolean quote) {
- if (elems == null) {
- throw new IllegalArgumentException
- ("Header element array must not be null.");
- }
-
- int len = estimateElementsLen(elems);
- if (buffer == null) {
- buffer = new CharArrayBuffer(len);
- } else {
- buffer.ensureCapacity(len);
- }
-
- for (int i=0; i<elems.length; i++) {
- if (i > 0) {
- buffer.append(", ");
- }
- formatHeaderElement(buffer, elems[i], quote);
- }
-
- return buffer;
- }
-
-
- /**
- * Estimates the length of formatted header elements.
- *
- * @param elems the header elements to format, or <code>null</code>
- *
- * @return a length estimate, in number of characters
- */
- protected int estimateElementsLen(final HeaderElement[] elems) {
- if ((elems == null) || (elems.length < 1))
- return 0;
-
- int result = (elems.length-1) * 2; // elements separated by ", "
- for (int i=0; i<elems.length; i++) {
- result += estimateHeaderElementLen(elems[i]);
- }
-
- return result;
- }
-
-
-
- /**
- * Formats a header element.
- *
- * @param elem the header element to format
- * @param quote <code>true</code> to always format with quoted values,
- * <code>false</code> to use quotes only when necessary
- * @param formatter the formatter to use, or <code>null</code>
- * for the {@link #DEFAULT default}
- *
- * @return the formatted header element
- */
- public final static
- String formatHeaderElement(final HeaderElement elem,
- boolean quote,
- HeaderValueFormatter formatter) {
- if (formatter == null)
- formatter = BasicHeaderValueFormatter.DEFAULT;
- return formatter.formatHeaderElement(null, elem, quote).toString();
- }
-
-
- // non-javadoc, see interface HeaderValueFormatter
- public CharArrayBuffer formatHeaderElement(CharArrayBuffer buffer,
- final HeaderElement elem,
- final boolean quote) {
- if (elem == null) {
- throw new IllegalArgumentException
- ("Header element must not be null.");
- }
-
- int len = estimateHeaderElementLen(elem);
- if (buffer == null) {
- buffer = new CharArrayBuffer(len);
- } else {
- buffer.ensureCapacity(len);
- }
-
- buffer.append(elem.getName());
- final String value = elem.getValue();
- if (value != null) {
- buffer.append('=');
- doFormatValue(buffer, value, quote);
- }
-
- final int parcnt = elem.getParameterCount();
- if (parcnt > 0) {
- for (int i=0; i<parcnt; i++) {
- buffer.append("; ");
- formatNameValuePair(buffer, elem.getParameter(i), quote);
- }
- }
-
- return buffer;
- }
-
-
- /**
- * Estimates the length of a formatted header element.
- *
- * @param elem the header element to format, or <code>null</code>
- *
- * @return a length estimate, in number of characters
- */
- protected int estimateHeaderElementLen(final HeaderElement elem) {
- if (elem == null)
- return 0;
-
- int result = elem.getName().length(); // name
- final String value = elem.getValue();
- if (value != null) {
- // assume quotes, but no escaped characters
- result += 3 + value.length(); // ="value"
- }
-
- final int parcnt = elem.getParameterCount();
- if (parcnt > 0) {
- for (int i=0; i<parcnt; i++) {
- result += 2 + // ; <param>
- estimateNameValuePairLen(elem.getParameter(i));
- }
- }
-
- return result;
- }
-
-
-
-
- /**
- * Formats a set of parameters.
- *
- * @param nvps the parameters to format
- * @param quote <code>true</code> to always format with quoted values,
- * <code>false</code> to use quotes only when necessary
- * @param formatter the formatter to use, or <code>null</code>
- * for the {@link #DEFAULT default}
- *
- * @return the formatted parameters
- */
- public final static
- String formatParameters(final NameValuePair[] nvps,
- final boolean quote,
- HeaderValueFormatter formatter) {
- if (formatter == null)
- formatter = BasicHeaderValueFormatter.DEFAULT;
- return formatter.formatParameters(null, nvps, quote).toString();
- }
-
-
- // non-javadoc, see interface HeaderValueFormatter
- public CharArrayBuffer formatParameters(CharArrayBuffer buffer,
- NameValuePair[] nvps,
- boolean quote) {
- if (nvps == null) {
- throw new IllegalArgumentException
- ("Parameters must not be null.");
- }
-
- int len = estimateParametersLen(nvps);
- if (buffer == null) {
- buffer = new CharArrayBuffer(len);
- } else {
- buffer.ensureCapacity(len);
- }
-
- for (int i = 0; i < nvps.length; i++) {
- if (i > 0) {
- buffer.append("; ");
- }
- formatNameValuePair(buffer, nvps[i], quote);
- }
-
- return buffer;
- }
-
-
- /**
- * Estimates the length of formatted parameters.
- *
- * @param nvps the parameters to format, or <code>null</code>
- *
- * @return a length estimate, in number of characters
- */
- protected int estimateParametersLen(final NameValuePair[] nvps) {
- if ((nvps == null) || (nvps.length < 1))
- return 0;
-
- int result = (nvps.length-1) * 2; // "; " between the parameters
- for (int i=0; i<nvps.length; i++) {
- result += estimateNameValuePairLen(nvps[i]);
- }
-
- return result;
- }
-
-
- /**
- * Formats a name-value pair.
- *
- * @param nvp the name-value pair to format
- * @param quote <code>true</code> to always format with a quoted value,
- * <code>false</code> to use quotes only when necessary
- * @param formatter the formatter to use, or <code>null</code>
- * for the {@link #DEFAULT default}
- *
- * @return the formatted name-value pair
- */
- public final static
- String formatNameValuePair(final NameValuePair nvp,
- final boolean quote,
- HeaderValueFormatter formatter) {
- if (formatter == null)
- formatter = BasicHeaderValueFormatter.DEFAULT;
- return formatter.formatNameValuePair(null, nvp, quote).toString();
- }
-
-
- // non-javadoc, see interface HeaderValueFormatter
- public CharArrayBuffer formatNameValuePair(CharArrayBuffer buffer,
- final NameValuePair nvp,
- final boolean quote) {
- if (nvp == null) {
- throw new IllegalArgumentException
- ("NameValuePair must not be null.");
- }
-
- int len = estimateNameValuePairLen(nvp);
- if (buffer == null) {
- buffer = new CharArrayBuffer(len);
- } else {
- buffer.ensureCapacity(len);
- }
-
- buffer.append(nvp.getName());
- final String value = nvp.getValue();
- if (value != null) {
- buffer.append('=');
- doFormatValue(buffer, value, quote);
- }
-
- return buffer;
- }
-
-
- /**
- * Estimates the length of a formatted name-value pair.
- *
- * @param nvp the name-value pair to format, or <code>null</code>
- *
- * @return a length estimate, in number of characters
- */
- protected int estimateNameValuePairLen(final NameValuePair nvp) {
- if (nvp == null)
- return 0;
-
- int result = nvp.getName().length(); // name
- final String value = nvp.getValue();
- if (value != null) {
- // assume quotes, but no escaped characters
- result += 3 + value.length(); // ="value"
- }
- return result;
- }
-
-
- /**
- * Actually formats the value of a name-value pair.
- * This does not include a leading = character.
- * Called from {@link #formatNameValuePair formatNameValuePair}.
- *
- * @param buffer the buffer to append to, never <code>null</code>
- * @param value the value to append, never <code>null</code>
- * @param quote <code>true</code> to always format with quotes,
- * <code>false</code> to use quotes only when necessary
- */
- protected void doFormatValue(final CharArrayBuffer buffer,
- final String value,
- boolean quote) {
-
- if (!quote) {
- for (int i = 0; (i < value.length()) && !quote; i++) {
- quote = isSeparator(value.charAt(i));
- }
- }
-
- if (quote) {
- buffer.append('"');
- }
- for (int i = 0; i < value.length(); i++) {
- char ch = value.charAt(i);
- if (isUnsafe(ch)) {
- buffer.append('\\');
- }
- buffer.append(ch);
- }
- if (quote) {
- buffer.append('"');
- }
- }
-
-
- /**
- * Checks whether a character is a {@link #SEPARATORS separator}.
- *
- * @param ch the character to check
- *
- * @return <code>true</code> if the character is a separator,
- * <code>false</code> otherwise
- */
- protected boolean isSeparator(char ch) {
- return SEPARATORS.indexOf(ch) >= 0;
- }
-
-
- /**
- * Checks whether a character is {@link #UNSAFE_CHARS unsafe}.
- *
- * @param ch the character to check
- *
- * @return <code>true</code> if the character is unsafe,
- * <code>false</code> otherwise
- */
- protected boolean isUnsafe(char ch) {
- return UNSAFE_CHARS.indexOf(ch) >= 0;
- }
-
-
-} // class BasicHeaderValueFormatter
diff --git a/src/org/apache/http/message/BasicHeaderValueParser.java b/src/org/apache/http/message/BasicHeaderValueParser.java
deleted file mode 100644
index 5216196..0000000
--- a/src/org/apache/http/message/BasicHeaderValueParser.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderValueParser.java $
- * $Revision: 595670 $
- * $Date: 2007-11-16 06:15:01 -0800 (Fri, 16 Nov 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import java.util.List;
-import java.util.ArrayList;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.CharArrayBuffer;
-
-
-
-/**
- * Basic implementation for parsing header values into elements.
- * Instances of this class are stateless and thread-safe.
- * Derived classes are expected to maintain these properties.
- *
- * @author <a href="mailto:bcholmes@interlog.com">B.C. Holmes</a>
- * @author <a href="mailto:jericho@thinkfree.com">Park, Sung-Gu</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg at ural.com">Oleg Kalnichevski</a>
- * @author and others
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 595670 $
- *
- * @since 4.0
- */
-public class BasicHeaderValueParser implements HeaderValueParser {
-
- /**
- * A default instance of this class, for use as default or fallback.
- * Note that {@link BasicHeaderValueParser} is not a singleton, there
- * can be many instances of the class itself and of derived classes.
- * The instance here provides non-customized, default behavior.
- */
- public final static
- BasicHeaderValueParser DEFAULT = new BasicHeaderValueParser();
-
- private final static char PARAM_DELIMITER = ';';
- private final static char ELEM_DELIMITER = ',';
- private final static char[] ALL_DELIMITERS = new char[] {
- PARAM_DELIMITER,
- ELEM_DELIMITER
- };
-
- // public default constructor
-
-
- /**
- * Parses elements with the given parser.
- *
- * @param value the header value to parse
- * @param parser the parser to use, or <code>null</code> for default
- *
- * @return array holding the header elements, never <code>null</code>
- */
- public final static
- HeaderElement[] parseElements(final String value,
- HeaderValueParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null");
- }
-
- if (parser == null)
- parser = BasicHeaderValueParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseElements(buffer, cursor);
- }
-
-
- // non-javadoc, see interface HeaderValueParser
- public HeaderElement[] parseElements(final CharArrayBuffer buffer,
- final ParserCursor cursor) {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- List elements = new ArrayList();
- while (!cursor.atEnd()) {
- HeaderElement element = parseHeaderElement(buffer, cursor);
- if (!(element.getName().length() == 0 && element.getValue() == null)) {
- elements.add(element);
- }
- }
- return (HeaderElement[])
- elements.toArray(new HeaderElement[elements.size()]);
- }
-
-
- /**
- * Parses an element with the given parser.
- *
- * @param value the header element to parse
- * @param parser the parser to use, or <code>null</code> for default
- *
- * @return the parsed header element
- */
- public final static
- HeaderElement parseHeaderElement(final String value,
- HeaderValueParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null");
- }
-
- if (parser == null)
- parser = BasicHeaderValueParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseHeaderElement(buffer, cursor);
- }
-
-
- // non-javadoc, see interface HeaderValueParser
- public HeaderElement parseHeaderElement(final CharArrayBuffer buffer,
- final ParserCursor cursor) {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- NameValuePair nvp = parseNameValuePair(buffer, cursor);
- NameValuePair[] params = null;
- if (!cursor.atEnd()) {
- char ch = buffer.charAt(cursor.getPos() - 1);
- if (ch != ELEM_DELIMITER) {
- params = parseParameters(buffer, cursor);
- }
- }
- return createHeaderElement(nvp.getName(), nvp.getValue(), params);
- }
-
-
- /**
- * Creates a header element.
- * Called from {@link #parseHeaderElement}.
- *
- * @return a header element representing the argument
- */
- protected HeaderElement createHeaderElement(
- final String name,
- final String value,
- final NameValuePair[] params) {
- return new BasicHeaderElement(name, value, params);
- }
-
-
- /**
- * Parses parameters with the given parser.
- *
- * @param value the parameter list to parse
- * @param parser the parser to use, or <code>null</code> for default
- *
- * @return array holding the parameters, never <code>null</code>
- */
- public final static
- NameValuePair[] parseParameters(final String value,
- HeaderValueParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null");
- }
-
- if (parser == null)
- parser = BasicHeaderValueParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseParameters(buffer, cursor);
- }
-
-
-
- // non-javadoc, see interface HeaderValueParser
- public NameValuePair[] parseParameters(final CharArrayBuffer buffer,
- final ParserCursor cursor) {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- int pos = cursor.getPos();
- int indexTo = cursor.getUpperBound();
-
- while (pos < indexTo) {
- char ch = buffer.charAt(pos);
- if (HTTP.isWhitespace(ch)) {
- pos++;
- } else {
- break;
- }
- }
- cursor.updatePos(pos);
- if (cursor.atEnd()) {
- return new NameValuePair[] {};
- }
-
- List params = new ArrayList();
- while (!cursor.atEnd()) {
- NameValuePair param = parseNameValuePair(buffer, cursor);
- params.add(param);
- char ch = buffer.charAt(cursor.getPos() - 1);
- if (ch == ELEM_DELIMITER) {
- break;
- }
- }
-
- return (NameValuePair[])
- params.toArray(new NameValuePair[params.size()]);
- }
-
- /**
- * Parses a name-value-pair with the given parser.
- *
- * @param value the NVP to parse
- * @param parser the parser to use, or <code>null</code> for default
- *
- * @return the parsed name-value pair
- */
- public final static
- NameValuePair parseNameValuePair(final String value,
- HeaderValueParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null");
- }
-
- if (parser == null)
- parser = BasicHeaderValueParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseNameValuePair(buffer, cursor);
- }
-
-
- // non-javadoc, see interface HeaderValueParser
- public NameValuePair parseNameValuePair(final CharArrayBuffer buffer,
- final ParserCursor cursor) {
- return parseNameValuePair(buffer, cursor, ALL_DELIMITERS);
- }
-
- private static boolean isOneOf(final char ch, final char[] chs) {
- if (chs != null) {
- for (int i = 0; i < chs.length; i++) {
- if (ch == chs[i]) {
- return true;
- }
- }
- }
- return false;
- }
-
- public NameValuePair parseNameValuePair(final CharArrayBuffer buffer,
- final ParserCursor cursor,
- final char[] delimiters) {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- boolean terminated = false;
-
- int pos = cursor.getPos();
- int indexFrom = cursor.getPos();
- int indexTo = cursor.getUpperBound();
-
- // Find name
- String name = null;
- while (pos < indexTo) {
- char ch = buffer.charAt(pos);
- if (ch == '=') {
- break;
- }
- if (isOneOf(ch, delimiters)) {
- terminated = true;
- break;
- }
- pos++;
- }
-
- if (pos == indexTo) {
- terminated = true;
- name = buffer.substringTrimmed(indexFrom, indexTo);
- } else {
- name = buffer.substringTrimmed(indexFrom, pos);
- pos++;
- }
-
- if (terminated) {
- cursor.updatePos(pos);
- return createNameValuePair(name, null);
- }
-
- // Find value
- String value = null;
- int i1 = pos;
-
- boolean qouted = false;
- boolean escaped = false;
- while (pos < indexTo) {
- char ch = buffer.charAt(pos);
- if (ch == '"' && !escaped) {
- qouted = !qouted;
- }
- if (!qouted && !escaped && isOneOf(ch, delimiters)) {
- terminated = true;
- break;
- }
- if (escaped) {
- escaped = false;
- } else {
- escaped = qouted && ch == '\\';
- }
- pos++;
- }
-
- int i2 = pos;
- // Trim leading white spaces
- while (i1 < i2 && (HTTP.isWhitespace(buffer.charAt(i1)))) {
- i1++;
- }
- // Trim trailing white spaces
- while ((i2 > i1) && (HTTP.isWhitespace(buffer.charAt(i2 - 1)))) {
- i2--;
- }
- // Strip away quotes if necessary
- if (((i2 - i1) >= 2)
- && (buffer.charAt(i1) == '"')
- && (buffer.charAt(i2 - 1) == '"')) {
- i1++;
- i2--;
- }
- value = buffer.substring(i1, i2);
- if (terminated) {
- pos++;
- }
- cursor.updatePos(pos);
- return createNameValuePair(name, value);
- }
-
- /**
- * Creates a name-value pair.
- * Called from {@link #parseNameValuePair}.
- *
- * @param name the name
- * @param value the value, or <code>null</code>
- *
- * @return a name-value pair representing the arguments
- */
- protected NameValuePair createNameValuePair(final String name, final String value) {
- return new BasicNameValuePair(name, value);
- }
-
-}
-
diff --git a/src/org/apache/http/message/BasicHttpEntityEnclosingRequest.java b/src/org/apache/http/message/BasicHttpEntityEnclosingRequest.java
deleted file mode 100644
index dbb70c8..0000000
--- a/src/org/apache/http/message/BasicHttpEntityEnclosingRequest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpEntityEnclosingRequest.java $
- * $Revision: 618017 $
- * $Date: 2008-02-03 08:42:22 -0800 (Sun, 03 Feb 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.protocol.HTTP;
-
-/**
- * Basic implementation of a request with an entity that can be modified.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 618017 $
- *
- * @since 4.0
- */
-public class BasicHttpEntityEnclosingRequest
- extends BasicHttpRequest implements HttpEntityEnclosingRequest {
-
- private HttpEntity entity;
-
- public BasicHttpEntityEnclosingRequest(final String method, final String uri) {
- super(method, uri);
- }
-
- public BasicHttpEntityEnclosingRequest(final String method, final String uri,
- final ProtocolVersion ver) {
- this(new BasicRequestLine(method, uri, ver));
- }
-
- public BasicHttpEntityEnclosingRequest(final RequestLine requestline) {
- super(requestline);
- }
-
- public HttpEntity getEntity() {
- return this.entity;
- }
-
- public void setEntity(final HttpEntity entity) {
- this.entity = entity;
- }
-
- public boolean expectContinue() {
- Header expect = getFirstHeader(HTTP.EXPECT_DIRECTIVE);
- return expect != null && HTTP.EXPECT_CONTINUE.equalsIgnoreCase(expect.getValue());
- }
-
-}
diff --git a/src/org/apache/http/message/BasicHttpRequest.java b/src/org/apache/http/message/BasicHttpRequest.java
deleted file mode 100644
index eedf8bc..0000000
--- a/src/org/apache/http/message/BasicHttpRequest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpRequest.java $
- * $Revision: 573864 $
- * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.HttpRequest;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.params.HttpProtocolParams;
-
-/**
- * Basic implementation of an HTTP request that can be modified.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- *
- * @since 4.0
- */
-public class BasicHttpRequest extends AbstractHttpMessage implements HttpRequest {
-
- private final RequestLine requestline;
- private final String method;
- private final String uri;
-
- public BasicHttpRequest(final String method, final String uri) {
- super();
- if (method == null) {
- throw new IllegalArgumentException("Method name may not be null");
- }
- if (uri == null) {
- throw new IllegalArgumentException("Request URI may not be null");
- }
- this.method = method;
- this.uri = uri;
- this.requestline = null;
- }
-
- public BasicHttpRequest(final String method, final String uri, final ProtocolVersion ver) {
- this(new BasicRequestLine(method, uri, ver));
- }
-
- public BasicHttpRequest(final RequestLine requestline) {
- super();
- if (requestline == null) {
- throw new IllegalArgumentException("Request line may not be null");
- }
- this.requestline = requestline;
- this.method = requestline.getMethod();
- this.uri = requestline.getUri();
- }
-
- public ProtocolVersion getProtocolVersion() {
- if (this.requestline != null) {
- return this.requestline.getProtocolVersion();
- } else {
- return HttpProtocolParams.getVersion(getParams());
- }
- }
-
- public RequestLine getRequestLine() {
- if (this.requestline != null) {
- return this.requestline;
- } else {
- ProtocolVersion ver = HttpProtocolParams.getVersion(getParams());
- return new BasicRequestLine(this.method, this.uri, ver);
- }
- }
-
-}
diff --git a/src/org/apache/http/message/BasicHttpResponse.java b/src/org/apache/http/message/BasicHttpResponse.java
deleted file mode 100644
index 7da4bea..0000000
--- a/src/org/apache/http/message/BasicHttpResponse.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpResponse.java $
- * $Revision: 573864 $
- * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import java.util.Locale;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.StatusLine;
-import org.apache.http.ReasonPhraseCatalog;
-
-
-/**
- * Basic implementation of an HTTP response that can be modified.
- * This implementation makes sure that there always is a status line.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * @version $Revision: 573864 $
- *
- * @since 4.0
- */
-public class BasicHttpResponse extends AbstractHttpMessage
- implements HttpResponse {
-
- private StatusLine statusline;
- private HttpEntity entity;
- private ReasonPhraseCatalog reasonCatalog;
- private Locale locale;
-
-
- /**
- * Creates a new response.
- * This is the constructor to which all others map.
- *
- * @param statusline the status line
- * @param catalog the reason phrase catalog, or
- * <code>null</code> to disable automatic
- * reason phrase lookup
- * @param locale the locale for looking up reason phrases, or
- * <code>null</code> for the system locale
- */
- public BasicHttpResponse(final StatusLine statusline,
- final ReasonPhraseCatalog catalog,
- final Locale locale) {
- super();
- if (statusline == null) {
- throw new IllegalArgumentException("Status line may not be null.");
- }
- this.statusline = statusline;
- this.reasonCatalog = catalog;
- this.locale = (locale != null) ? locale : Locale.getDefault();
- }
-
- /**
- * Creates a response from a status line.
- * The response will not have a reason phrase catalog and
- * use the system default locale.
- *
- * @param statusline the status line
- */
- public BasicHttpResponse(final StatusLine statusline) {
- this(statusline, null, null);
- }
-
- /**
- * Creates a response from elements of a status line.
- * The response will not have a reason phrase catalog and
- * use the system default locale.
- *
- * @param ver the protocol version of the response
- * @param code the status code of the response
- * @param reason the reason phrase to the status code, or
- * <code>null</code>
- */
- public BasicHttpResponse(final ProtocolVersion ver,
- final int code,
- final String reason) {
- this(new BasicStatusLine(ver, code, reason), null, null);
- }
-
-
- // non-javadoc, see interface HttpMessage
- public ProtocolVersion getProtocolVersion() {
- return this.statusline.getProtocolVersion();
- }
-
- // non-javadoc, see interface HttpResponse
- public StatusLine getStatusLine() {
- return this.statusline;
- }
-
- // non-javadoc, see interface HttpResponse
- public HttpEntity getEntity() {
- return this.entity;
- }
-
- // non-javadoc, see interface HttpResponse
- public Locale getLocale() {
- return this.locale;
- }
-
- // non-javadoc, see interface HttpResponse
- public void setStatusLine(final StatusLine statusline) {
- if (statusline == null) {
- throw new IllegalArgumentException("Status line may not be null");
- }
- this.statusline = statusline;
- }
-
- // non-javadoc, see interface HttpResponse
- public void setStatusLine(final ProtocolVersion ver, final int code) {
- // arguments checked in BasicStatusLine constructor
- this.statusline = new BasicStatusLine(ver, code, getReason(code));
- }
-
- // non-javadoc, see interface HttpResponse
- public void setStatusLine(final ProtocolVersion ver, final int code,
- final String reason) {
- // arguments checked in BasicStatusLine constructor
- this.statusline = new BasicStatusLine(ver, code, reason);
- }
-
- // non-javadoc, see interface HttpResponse
- public void setStatusCode(int code) {
- // argument checked in BasicStatusLine constructor
- ProtocolVersion ver = this.statusline.getProtocolVersion();
- this.statusline = new BasicStatusLine(ver, code, getReason(code));
- }
-
- // non-javadoc, see interface HttpResponse
- public void setReasonPhrase(String reason) {
-
- if ((reason != null) && ((reason.indexOf('\n') >= 0) ||
- (reason.indexOf('\r') >= 0))
- ) {
- throw new IllegalArgumentException("Line break in reason phrase.");
- }
- this.statusline = new BasicStatusLine(this.statusline.getProtocolVersion(),
- this.statusline.getStatusCode(),
- reason);
- }
-
- // non-javadoc, see interface HttpResponse
- public void setEntity(final HttpEntity entity) {
- this.entity = entity;
- }
-
- // non-javadoc, see interface HttpResponse
- public void setLocale(Locale loc) {
- if (loc == null) {
- throw new IllegalArgumentException("Locale may not be null.");
- }
- this.locale = loc;
- final int code = this.statusline.getStatusCode();
- this.statusline = new BasicStatusLine
- (this.statusline.getProtocolVersion(), code, getReason(code));
- }
-
- /**
- * Looks up a reason phrase.
- * This method evaluates the currently set catalog and locale.
- * It also handles a missing catalog.
- *
- * @param code the status code for which to look up the reason
- *
- * @return the reason phrase, or <code>null</code> if there is none
- */
- protected String getReason(int code) {
- return (this.reasonCatalog == null) ?
- null : this.reasonCatalog.getReason(code, this.locale);
- }
-
-}
diff --git a/src/org/apache/http/message/BasicLineFormatter.java b/src/org/apache/http/message/BasicLineFormatter.java
deleted file mode 100644
index 7c3bbc4..0000000
--- a/src/org/apache/http/message/BasicLineFormatter.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicLineFormatter.java $
- * $Revision: 574185 $
- * $Date: 2007-09-10 02:19:47 -0700 (Mon, 10 Sep 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.StatusLine;
-import org.apache.http.Header;
-import org.apache.http.FormattedHeader;
-import org.apache.http.util.CharArrayBuffer;
-
-
-/**
- * Interface for formatting elements of the HEAD section of an HTTP message.
- * This is the complement to {@link LineParser}.
- * There are individual methods for formatting a request line, a
- * status line, or a header line. The formatting does <i>not</i> include the
- * trailing line break sequence CR-LF.
- * The formatted lines are returned in memory, the formatter does not depend
- * on any specific IO mechanism.
- * Instances of this interface are expected to be stateless and thread-safe.
- *
- * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- * @author and others
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 574185 $
- *
- * @since 4.0
- */
-public class BasicLineFormatter implements LineFormatter {
-
- /**
- * A default instance of this class, for use as default or fallback.
- * Note that {@link BasicLineFormatter} is not a singleton, there can
- * be many instances of the class itself and of derived classes.
- * The instance here provides non-customized, default behavior.
- */
- public final static BasicLineFormatter DEFAULT = new BasicLineFormatter();
-
-
-
- // public default constructor
-
-
- /**
- * Obtains a buffer for formatting.
- *
- * @param buffer a buffer already available, or <code>null</code>
- *
- * @return the cleared argument buffer if there is one, or
- * a new empty buffer that can be used for formatting
- */
- protected CharArrayBuffer initBuffer(CharArrayBuffer buffer) {
- if (buffer != null) {
- buffer.clear();
- } else {
- buffer = new CharArrayBuffer(64);
- }
- return buffer;
- }
-
-
- /**
- * Formats a protocol version.
- *
- * @param version the protocol version to format
- * @param formatter the formatter to use, or
- * <code>null</code> for the
- * {@link #DEFAULT default}
- *
- * @return the formatted protocol version
- */
- public final static
- String formatProtocolVersion(final ProtocolVersion version,
- LineFormatter formatter) {
- if (formatter == null)
- formatter = BasicLineFormatter.DEFAULT;
- return formatter.appendProtocolVersion(null, version).toString();
- }
-
-
- // non-javadoc, see interface LineFormatter
- public CharArrayBuffer appendProtocolVersion(final CharArrayBuffer buffer,
- final ProtocolVersion version) {
- if (version == null) {
- throw new IllegalArgumentException
- ("Protocol version may not be null");
- }
-
- // can't use initBuffer, that would clear the argument!
- CharArrayBuffer result = buffer;
- final int len = estimateProtocolVersionLen(version);
- if (result == null) {
- result = new CharArrayBuffer(len);
- } else {
- result.ensureCapacity(len);
- }
-
- result.append(version.getProtocol());
- result.append('/');
- result.append(Integer.toString(version.getMajor()));
- result.append('.');
- result.append(Integer.toString(version.getMinor()));
-
- return result;
- }
-
-
- /**
- * Guesses the length of a formatted protocol version.
- * Needed to guess the length of a formatted request or status line.
- *
- * @param version the protocol version to format, or <code>null</code>
- *
- * @return the estimated length of the formatted protocol version,
- * in characters
- */
- protected int estimateProtocolVersionLen(final ProtocolVersion version) {
- return version.getProtocol().length() + 4; // room for "HTTP/1.1"
- }
-
-
- /**
- * Formats a request line.
- *
- * @param reqline the request line to format
- * @param formatter the formatter to use, or
- * <code>null</code> for the
- * {@link #DEFAULT default}
- *
- * @return the formatted request line
- */
- public final static String formatRequestLine(final RequestLine reqline,
- LineFormatter formatter) {
- if (formatter == null)
- formatter = BasicLineFormatter.DEFAULT;
- return formatter.formatRequestLine(null, reqline).toString();
- }
-
-
- // non-javadoc, see interface LineFormatter
- public CharArrayBuffer formatRequestLine(CharArrayBuffer buffer,
- RequestLine reqline) {
- if (reqline == null) {
- throw new IllegalArgumentException
- ("Request line may not be null");
- }
-
- CharArrayBuffer result = initBuffer(buffer);
- doFormatRequestLine(result, reqline);
-
- return result;
- }
-
-
- /**
- * Actually formats a request line.
- * Called from {@link #formatRequestLine}.
- *
- * @param buffer the empty buffer into which to format,
- * never <code>null</code>
- * @param reqline the request line to format, never <code>null</code>
- */
- protected void doFormatRequestLine(final CharArrayBuffer buffer,
- final RequestLine reqline) {
- final String method = reqline.getMethod();
- final String uri = reqline.getUri();
-
- // room for "GET /index.html HTTP/1.1"
- int len = method.length() + 1 + uri.length() + 1 +
- estimateProtocolVersionLen(reqline.getProtocolVersion());
- buffer.ensureCapacity(len);
-
- buffer.append(method);
- buffer.append(' ');
- buffer.append(uri);
- buffer.append(' ');
- appendProtocolVersion(buffer, reqline.getProtocolVersion());
- }
-
-
-
- /**
- * Formats a status line.
- *
- * @param statline the status line to format
- * @param formatter the formatter to use, or
- * <code>null</code> for the
- * {@link #DEFAULT default}
- *
- * @return the formatted status line
- */
- public final static String formatStatusLine(final StatusLine statline,
- LineFormatter formatter) {
- if (formatter == null)
- formatter = BasicLineFormatter.DEFAULT;
- return formatter.formatStatusLine(null, statline).toString();
- }
-
-
- // non-javadoc, see interface LineFormatter
- public CharArrayBuffer formatStatusLine(final CharArrayBuffer buffer,
- final StatusLine statline) {
- if (statline == null) {
- throw new IllegalArgumentException
- ("Status line may not be null");
- }
-
- CharArrayBuffer result = initBuffer(buffer);
- doFormatStatusLine(result, statline);
-
- return result;
- }
-
-
- /**
- * Actually formats a status line.
- * Called from {@link #formatStatusLine}.
- *
- * @param buffer the empty buffer into which to format,
- * never <code>null</code>
- * @param statline the status line to format, never <code>null</code>
- */
- protected void doFormatStatusLine(final CharArrayBuffer buffer,
- final StatusLine statline) {
-
- int len = estimateProtocolVersionLen(statline.getProtocolVersion())
- + 1 + 3 + 1; // room for "HTTP/1.1 200 "
- final String reason = statline.getReasonPhrase();
- if (reason != null) {
- len += reason.length();
- }
- buffer.ensureCapacity(len);
-
- appendProtocolVersion(buffer, statline.getProtocolVersion());
- buffer.append(' ');
- buffer.append(Integer.toString(statline.getStatusCode()));
- buffer.append(' '); // keep whitespace even if reason phrase is empty
- if (reason != null) {
- buffer.append(reason);
- }
- }
-
-
- /**
- * Formats a header.
- *
- * @param header the header to format
- * @param formatter the formatter to use, or
- * <code>null</code> for the
- * {@link #DEFAULT default}
- *
- * @return the formatted header
- */
- public final static String formatHeader(final Header header,
- LineFormatter formatter) {
- if (formatter == null)
- formatter = BasicLineFormatter.DEFAULT;
- return formatter.formatHeader(null, header).toString();
- }
-
-
- // non-javadoc, see interface LineFormatter
- public CharArrayBuffer formatHeader(CharArrayBuffer buffer,
- Header header) {
- if (header == null) {
- throw new IllegalArgumentException
- ("Header may not be null");
- }
- CharArrayBuffer result = null;
-
- if (header instanceof FormattedHeader) {
- // If the header is backed by a buffer, re-use the buffer
- result = ((FormattedHeader)header).getBuffer();
- } else {
- result = initBuffer(buffer);
- doFormatHeader(result, header);
- }
- return result;
-
- } // formatHeader
-
-
- /**
- * Actually formats a header.
- * Called from {@link #formatHeader}.
- *
- * @param buffer the empty buffer into which to format,
- * never <code>null</code>
- * @param header the header to format, never <code>null</code>
- */
- protected void doFormatHeader(final CharArrayBuffer buffer,
- final Header header) {
- final String name = header.getName();
- final String value = header.getValue();
-
- int len = name.length() + 2;
- if (value != null) {
- len += value.length();
- }
- buffer.ensureCapacity(len);
-
- buffer.append(name);
- buffer.append(": ");
- if (value != null) {
- buffer.append(value);
- }
- }
-
-
-} // class BasicLineFormatter
diff --git a/src/org/apache/http/message/BasicLineParser.java b/src/org/apache/http/message/BasicLineParser.java
deleted file mode 100644
index c5e9ddb..0000000
--- a/src/org/apache/http/message/BasicLineParser.java
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicLineParser.java $
- * $Revision: 591798 $
- * $Date: 2007-11-04 08:19:29 -0800 (Sun, 04 Nov 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.ParseException;
-import org.apache.http.RequestLine;
-import org.apache.http.StatusLine;
-import org.apache.http.Header;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.CharArrayBuffer;
-
-
-/**
- * Basic parser for lines in the head section of an HTTP message.
- * There are individual methods for parsing a request line, a
- * status line, or a header line.
- * The lines to parse are passed in memory, the parser does not depend
- * on any specific IO mechanism.
- * Instances of this class are stateless and thread-safe.
- * Derived classes MUST maintain these properties.
- *
- * <p>
- * Note: This class was created by refactoring parsing code located in
- * various other classes. The author tags from those other classes have
- * been replicated here, although the association with the parsing code
- * taken from there has not been traced.
- * </p>
- *
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * @author and others
- */
-public class BasicLineParser implements LineParser {
-
- /**
- * A default instance of this class, for use as default or fallback.
- * Note that {@link BasicLineParser} is not a singleton, there can
- * be many instances of the class itself and of derived classes.
- * The instance here provides non-customized, default behavior.
- */
- public final static BasicLineParser DEFAULT = new BasicLineParser();
-
-
- /**
- * A version of the protocol to parse.
- * The version is typically not relevant, but the protocol name.
- */
- protected final ProtocolVersion protocol;
-
-
- /**
- * Creates a new line parser for the given HTTP-like protocol.
- *
- * @param proto a version of the protocol to parse, or
- * <code>null</code> for HTTP. The actual version
- * is not relevant, only the protocol name.
- */
- public BasicLineParser(ProtocolVersion proto) {
- if (proto == null) {
- proto = HttpVersion.HTTP_1_1;
- }
- this.protocol = proto;
- }
-
-
- /**
- * Creates a new line parser for HTTP.
- */
- public BasicLineParser() {
- this(null);
- }
-
-
-
- public final static
- ProtocolVersion parseProtocolVersion(String value,
- LineParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null.");
- }
-
- if (parser == null)
- parser = BasicLineParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseProtocolVersion(buffer, cursor);
- }
-
-
- // non-javadoc, see interface LineParser
- public ProtocolVersion parseProtocolVersion(final CharArrayBuffer buffer,
- final ParserCursor cursor)
- throws ParseException {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- final String protoname = this.protocol.getProtocol();
- final int protolength = protoname.length();
-
- int indexFrom = cursor.getPos();
- int indexTo = cursor.getUpperBound();
-
- skipWhitespace(buffer, cursor);
-
- int i = cursor.getPos();
-
- // long enough for "HTTP/1.1"?
- if (i + protolength + 4 > indexTo) {
- throw new ParseException
- ("Not a valid protocol version: " +
- buffer.substring(indexFrom, indexTo));
- }
-
- // check the protocol name and slash
- boolean ok = true;
- for (int j=0; ok && (j<protolength); j++) {
- ok = (buffer.charAt(i+j) == protoname.charAt(j));
- }
- if (ok) {
- ok = (buffer.charAt(i+protolength) == '/');
- }
- if (!ok) {
- throw new ParseException
- ("Not a valid protocol version: " +
- buffer.substring(indexFrom, indexTo));
- }
-
- i += protolength+1;
-
- int period = buffer.indexOf('.', i, indexTo);
- if (period == -1) {
- throw new ParseException
- ("Invalid protocol version number: " +
- buffer.substring(indexFrom, indexTo));
- }
- int major;
- try {
- major = Integer.parseInt(buffer.substringTrimmed(i, period));
- } catch (NumberFormatException e) {
- throw new ParseException
- ("Invalid protocol major version number: " +
- buffer.substring(indexFrom, indexTo));
- }
- i = period + 1;
-
- int blank = buffer.indexOf(' ', i, indexTo);
- if (blank == -1) {
- blank = indexTo;
- }
- int minor;
- try {
- minor = Integer.parseInt(buffer.substringTrimmed(i, blank));
- } catch (NumberFormatException e) {
- throw new ParseException(
- "Invalid protocol minor version number: " +
- buffer.substring(indexFrom, indexTo));
- }
-
- cursor.updatePos(blank);
-
- return createProtocolVersion(major, minor);
-
- } // parseProtocolVersion
-
-
- /**
- * Creates a protocol version.
- * Called from {@link #parseProtocolVersion}.
- *
- * @param major the major version number, for example 1 in HTTP/1.0
- * @param minor the minor version number, for example 0 in HTTP/1.0
- *
- * @return the protocol version
- */
- protected ProtocolVersion createProtocolVersion(int major, int minor) {
- return protocol.forVersion(major, minor);
- }
-
-
-
- // non-javadoc, see interface LineParser
- public boolean hasProtocolVersion(final CharArrayBuffer buffer,
- final ParserCursor cursor) {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
- int index = cursor.getPos();
-
- final String protoname = this.protocol.getProtocol();
- final int protolength = protoname.length();
-
- if (buffer.length() < protolength+4)
- return false; // not long enough for "HTTP/1.1"
-
- if (index < 0) {
- // end of line, no tolerance for trailing whitespace
- // this works only for single-digit major and minor version
- index = buffer.length() -4 -protolength;
- } else if (index == 0) {
- // beginning of line, tolerate leading whitespace
- while ((index < buffer.length()) &&
- HTTP.isWhitespace(buffer.charAt(index))) {
- index++;
- }
- } // else within line, don't tolerate whitespace
-
-
- if (index + protolength + 4 > buffer.length())
- return false;
-
-
- // just check protocol name and slash, no need to analyse the version
- boolean ok = true;
- for (int j=0; ok && (j<protolength); j++) {
- ok = (buffer.charAt(index+j) == protoname.charAt(j));
- }
- if (ok) {
- ok = (buffer.charAt(index+protolength) == '/');
- }
-
- return ok;
- }
-
-
-
- public final static
- RequestLine parseRequestLine(final String value,
- LineParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null.");
- }
-
- if (parser == null)
- parser = BasicLineParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseRequestLine(buffer, cursor);
- }
-
-
- /**
- * Parses a request line.
- *
- * @param buffer a buffer holding the line to parse
- *
- * @return the parsed request line
- *
- * @throws ParseException in case of a parse error
- */
- public RequestLine parseRequestLine(final CharArrayBuffer buffer,
- final ParserCursor cursor)
- throws ParseException {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- int indexFrom = cursor.getPos();
- int indexTo = cursor.getUpperBound();
-
- try {
- skipWhitespace(buffer, cursor);
- int i = cursor.getPos();
-
- int blank = buffer.indexOf(' ', i, indexTo);
- if (blank < 0) {
- throw new ParseException("Invalid request line: " +
- buffer.substring(indexFrom, indexTo));
- }
- String method = buffer.substringTrimmed(i, blank);
- cursor.updatePos(blank);
-
- skipWhitespace(buffer, cursor);
- i = cursor.getPos();
-
- blank = buffer.indexOf(' ', i, indexTo);
- if (blank < 0) {
- throw new ParseException("Invalid request line: " +
- buffer.substring(indexFrom, indexTo));
- }
- String uri = buffer.substringTrimmed(i, blank);
- cursor.updatePos(blank);
-
- ProtocolVersion ver = parseProtocolVersion(buffer, cursor);
-
- skipWhitespace(buffer, cursor);
- if (!cursor.atEnd()) {
- throw new ParseException("Invalid request line: " +
- buffer.substring(indexFrom, indexTo));
- }
-
- return createRequestLine(method, uri, ver);
- } catch (IndexOutOfBoundsException e) {
- throw new ParseException("Invalid request line: " +
- buffer.substring(indexFrom, indexTo));
- }
- } // parseRequestLine
-
-
- /**
- * Instantiates a new request line.
- * Called from {@link #parseRequestLine}.
- *
- * @param method the request method
- * @param uri the requested URI
- * @param ver the protocol version
- *
- * @return a new status line with the given data
- */
- protected RequestLine createRequestLine(final String method,
- final String uri,
- final ProtocolVersion ver) {
- return new BasicRequestLine(method, uri, ver);
- }
-
-
-
- public final static
- StatusLine parseStatusLine(final String value,
- LineParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null.");
- }
-
- if (parser == null)
- parser = BasicLineParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- ParserCursor cursor = new ParserCursor(0, value.length());
- return parser.parseStatusLine(buffer, cursor);
- }
-
-
- // non-javadoc, see interface LineParser
- public StatusLine parseStatusLine(final CharArrayBuffer buffer,
- final ParserCursor cursor)
- throws ParseException {
-
- if (buffer == null) {
- throw new IllegalArgumentException("Char array buffer may not be null");
- }
- if (cursor == null) {
- throw new IllegalArgumentException("Parser cursor may not be null");
- }
-
- int indexFrom = cursor.getPos();
- int indexTo = cursor.getUpperBound();
-
- try {
- // handle the HTTP-Version
- ProtocolVersion ver = parseProtocolVersion(buffer, cursor);
-
- // handle the Status-Code
- skipWhitespace(buffer, cursor);
- int i = cursor.getPos();
-
- int blank = buffer.indexOf(' ', i, indexTo);
- if (blank < 0) {
- blank = indexTo;
- }
- int statusCode = 0;
- try {
- statusCode =
- Integer.parseInt(buffer.substringTrimmed(i, blank));
- } catch (NumberFormatException e) {
- throw new ParseException(
- "Unable to parse status code from status line: "
- + buffer.substring(indexFrom, indexTo));
- }
- //handle the Reason-Phrase
- i = blank;
- String reasonPhrase = null;
- if (i < indexTo) {
- reasonPhrase = buffer.substringTrimmed(i, indexTo);
- } else {
- reasonPhrase = "";
- }
- return createStatusLine(ver, statusCode, reasonPhrase);
-
- } catch (IndexOutOfBoundsException e) {
- throw new ParseException("Invalid status line: " +
- buffer.substring(indexFrom, indexTo));
- }
- } // parseStatusLine
-
-
- /**
- * Instantiates a new status line.
- * Called from {@link #parseStatusLine}.
- *
- * @param ver the protocol version
- * @param status the status code
- * @param reason the reason phrase
- *
- * @return a new status line with the given data
- */
- protected StatusLine createStatusLine(final ProtocolVersion ver,
- final int status,
- final String reason) {
- return new BasicStatusLine(ver, status, reason);
- }
-
-
-
- public final static
- Header parseHeader(final String value,
- LineParser parser)
- throws ParseException {
-
- if (value == null) {
- throw new IllegalArgumentException
- ("Value to parse may not be null");
- }
-
- if (parser == null)
- parser = BasicLineParser.DEFAULT;
-
- CharArrayBuffer buffer = new CharArrayBuffer(value.length());
- buffer.append(value);
- return parser.parseHeader(buffer);
- }
-
-
- // non-javadoc, see interface LineParser
- public Header parseHeader(CharArrayBuffer buffer)
- throws ParseException {
-
- // the actual parser code is in the constructor of BufferedHeader
- return new BufferedHeader(buffer);
- }
-
-
- /**
- * Helper to skip whitespace.
- */
- protected void skipWhitespace(final CharArrayBuffer buffer, final ParserCursor cursor) {
- int pos = cursor.getPos();
- int indexTo = cursor.getUpperBound();
- while ((pos < indexTo) &&
- HTTP.isWhitespace(buffer.charAt(pos))) {
- pos++;
- }
- cursor.updatePos(pos);
- }
-
-} // class BasicLineParser
diff --git a/src/org/apache/http/message/BasicListHeaderIterator.java b/src/org/apache/http/message/BasicListHeaderIterator.java
deleted file mode 100644
index 69b8c06..0000000
--- a/src/org/apache/http/message/BasicListHeaderIterator.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicListHeaderIterator.java $
- * $Revision: 584542 $
- * $Date: 2007-10-14 06:29:34 -0700 (Sun, 14 Oct 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-
-
-/**
- * Implementation of a {@link HeaderIterator} based on a {@link List}.
- * For use by {@link HeaderGroup}.
- *
- * @version $Revision: 584542 $
- */
-public class BasicListHeaderIterator implements HeaderIterator {
-
- /**
- * A list of headers to iterate over.
- * Not all elements of this array are necessarily part of the iteration.
- */
- protected final List allHeaders;
-
-
- /**
- * The position of the next header in {@link #allHeaders allHeaders}.
- * Negative if the iteration is over.
- */
- protected int currentIndex;
-
-
- /**
- * The position of the last returned header.
- * Negative if none has been returned so far.
- */
- protected int lastIndex;
-
-
- /**
- * The header name to filter by.
- * <code>null</code> to iterate over all headers in the array.
- */
- protected String headerName;
-
-
-
- /**
- * Creates a new header iterator.
- *
- * @param headers a list of headers over which to iterate
- * @param name the name of the headers over which to iterate, or
- * <code>null</code> for any
- */
- public BasicListHeaderIterator(List headers, String name) {
- if (headers == null) {
- throw new IllegalArgumentException
- ("Header list must not be null.");
- }
-
- this.allHeaders = headers;
- this.headerName = name;
- this.currentIndex = findNext(-1);
- this.lastIndex = -1;
- }
-
-
- /**
- * Determines the index of the next header.
- *
- * @param from one less than the index to consider first,
- * -1 to search for the first header
- *
- * @return the index of the next header that matches the filter name,
- * or negative if there are no more headers
- */
- protected int findNext(int from) {
- if (from < -1)
- return -1;
-
- final int to = this.allHeaders.size()-1;
- boolean found = false;
- while (!found && (from < to)) {
- from++;
- found = filterHeader(from);
- }
- return found ? from : -1;
- }
-
-
- /**
- * Checks whether a header is part of the iteration.
- *
- * @param index the index of the header to check
- *
- * @return <code>true</code> if the header should be part of the
- * iteration, <code>false</code> to skip
- */
- protected boolean filterHeader(int index) {
- if (this.headerName == null)
- return true;
-
- // non-header elements, including null, will trigger exceptions
- final String name = ((Header)this.allHeaders.get(index)).getName();
-
- return this.headerName.equalsIgnoreCase(name);
- }
-
-
- // non-javadoc, see interface HeaderIterator
- public boolean hasNext() {
- return (this.currentIndex >= 0);
- }
-
-
- /**
- * Obtains the next header from this iteration.
- *
- * @return the next header in this iteration
- *
- * @throws NoSuchElementException if there are no more headers
- */
- public Header nextHeader()
- throws NoSuchElementException {
-
- final int current = this.currentIndex;
- if (current < 0) {
- throw new NoSuchElementException("Iteration already finished.");
- }
-
- this.lastIndex = current;
- this.currentIndex = findNext(current);
-
- return (Header) this.allHeaders.get(current);
- }
-
-
- /**
- * Returns the next header.
- * Same as {@link #nextHeader nextHeader}, but not type-safe.
- *
- * @return the next header in this iteration
- *
- * @throws NoSuchElementException if there are no more headers
- */
- public final Object next()
- throws NoSuchElementException {
- return nextHeader();
- }
-
-
- /**
- * Removes the header that was returned last.
- */
- public void remove()
- throws UnsupportedOperationException {
-
- if (this.lastIndex < 0) {
- throw new IllegalStateException("No header to remove.");
- }
- this.allHeaders.remove(this.lastIndex);
- this.lastIndex = -1;
- this.currentIndex--; // adjust for the removed element
- }
-}
diff --git a/src/org/apache/http/message/BasicNameValuePair.java b/src/org/apache/http/message/BasicNameValuePair.java
deleted file mode 100644
index 59fcb42..0000000
--- a/src/org/apache/http/message/BasicNameValuePair.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicNameValuePair.java $
- * $Revision: 604625 $
- * $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.NameValuePair;
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.LangUtils;
-
-/**
- * A simple class encapsulating an attribute/value pair.
- * <p>
- * This class comforms to the generic grammar and formatting rules outlined in the
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2">Section 2.2</a>
- * and
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6">Section 3.6</a>
- * of <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC 2616</a>
- * </p>
- * <h>2.2 Basic Rules</h>
- * <p>
- * The following rules are used throughout this specification to describe basic parsing constructs.
- * The US-ASCII coded character set is defined by ANSI X3.4-1986.
- * </p>
- * <pre>
- * OCTET = <any 8-bit sequence of data>
- * CHAR = <any US-ASCII character (octets 0 - 127)>
- * UPALPHA = <any US-ASCII uppercase letter "A".."Z">
- * LOALPHA = <any US-ASCII lowercase letter "a".."z">
- * ALPHA = UPALPHA | LOALPHA
- * DIGIT = <any US-ASCII digit "0".."9">
- * CTL = <any US-ASCII control character
- * (octets 0 - 31) and DEL (127)>
- * CR = <US-ASCII CR, carriage return (13)>
- * LF = <US-ASCII LF, linefeed (10)>
- * SP = <US-ASCII SP, space (32)>
- * HT = <US-ASCII HT, horizontal-tab (9)>
- * <"> = <US-ASCII double-quote mark (34)>
- * </pre>
- * <p>
- * Many HTTP/1.1 header field values consist of words separated by LWS or special
- * characters. These special characters MUST be in a quoted string to be used within
- * a parameter value (as defined in section 3.6).
- * <p>
- * <pre>
- * token = 1*<any CHAR except CTLs or separators>
- * separators = "(" | ")" | "<" | ">" | "@"
- * | "," | ";" | ":" | "\" | <">
- * | "/" | "[" | "]" | "?" | "="
- * | "{" | "}" | SP | HT
- * </pre>
- * <p>
- * A string of text is parsed as a single word if it is quoted using double-quote marks.
- * </p>
- * <pre>
- * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
- * qdtext = <any TEXT except <">>
- * </pre>
- * <p>
- * The backslash character ("\") MAY be used as a single-character quoting mechanism only
- * within quoted-string and comment constructs.
- * </p>
- * <pre>
- * quoted-pair = "\" CHAR
- * </pre>
- * <h>3.6 Transfer Codings</h>
- * <p>
- * Parameters are in the form of attribute/value pairs.
- * </p>
- * <pre>
- * parameter = attribute "=" value
- * attribute = token
- * value = token | quoted-string
- * </pre>
- *
- * @author <a href="mailto:oleg at ural.com">Oleg Kalnichevski</a>
- *
- */
-public class BasicNameValuePair implements NameValuePair, Cloneable {
-
- private final String name;
- private final String value;
-
- /**
- * Default Constructor taking a name and a value. The value may be null.
- *
- * @param name The name.
- * @param value The value.
- */
- public BasicNameValuePair(final String name, final String value) {
- super();
- if (name == null) {
- throw new IllegalArgumentException("Name may not be null");
- }
- this.name = name;
- this.value = value;
- }
-
- /**
- * Returns the name.
- *
- * @return String name The name
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * Returns the value.
- *
- * @return String value The current value.
- */
- public String getValue() {
- return this.value;
- }
-
-
- /**
- * Get a string representation of this pair.
- *
- * @return A string representation.
- */
- public String toString() {
- // don't call complex default formatting for a simple toString
-
- int len = this.name.length();
- if (this.value != null)
- len += 1 + this.value.length();
- CharArrayBuffer buffer = new CharArrayBuffer(len);
-
- buffer.append(this.name);
- if (this.value != null) {
- buffer.append("=");
- buffer.append(this.value);
- }
- return buffer.toString();
- }
-
- public boolean equals(final Object object) {
- if (object == null) return false;
- if (this == object) return true;
- if (object instanceof NameValuePair) {
- BasicNameValuePair that = (BasicNameValuePair) object;
- return this.name.equals(that.name)
- && LangUtils.equals(this.value, that.value);
- } else {
- return false;
- }
- }
-
- public int hashCode() {
- int hash = LangUtils.HASH_SEED;
- hash = LangUtils.hashCode(hash, this.name);
- hash = LangUtils.hashCode(hash, this.value);
- return hash;
- }
-
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
-}
diff --git a/src/org/apache/http/message/BasicRequestLine.java b/src/org/apache/http/message/BasicRequestLine.java
deleted file mode 100644
index b826064..0000000
--- a/src/org/apache/http/message/BasicRequestLine.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicRequestLine.java $
- * $Revision: 604625 $
- * $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-
-/**
- * The first line of an {@link org.apache.http.HttpRequest HttpRequest}.
- * It contains the method, URI, and HTTP version of the request.
- * For details, see RFC 2616.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 604625 $
- *
- * @since 4.0
- */
-public class BasicRequestLine implements RequestLine, Cloneable {
-
- private final ProtocolVersion protoversion;
- private final String method;
- private final String uri;
-
- public BasicRequestLine(final String method,
- final String uri,
- final ProtocolVersion version) {
- super();
- if (method == null) {
- throw new IllegalArgumentException
- ("Method must not be null.");
- }
- if (uri == null) {
- throw new IllegalArgumentException
- ("URI must not be null.");
- }
- if (version == null) {
- throw new IllegalArgumentException
- ("Protocol version must not be null.");
- }
- this.method = method;
- this.uri = uri;
- this.protoversion = version;
- }
-
- public String getMethod() {
- return this.method;
- }
-
- public ProtocolVersion getProtocolVersion() {
- return this.protoversion;
- }
-
- public String getUri() {
- return this.uri;
- }
-
- public String toString() {
- // no need for non-default formatting in toString()
- return BasicLineFormatter.DEFAULT
- .formatRequestLine(null, this).toString();
- }
-
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
-}
diff --git a/src/org/apache/http/message/BasicStatusLine.java b/src/org/apache/http/message/BasicStatusLine.java
deleted file mode 100644
index c34cefe..0000000
--- a/src/org/apache/http/message/BasicStatusLine.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicStatusLine.java $
- * $Revision: 604625 $
- * $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.HttpStatus;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.StatusLine;
-
-
-
-/**
- * Represents a status line as returned from a HTTP server.
- * See <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a> section 6.1.
- * This class is immutable and therefore inherently thread safe.
- *
- * @see HttpStatus
- * @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
- * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
- *
- * @version $Id: BasicStatusLine.java 604625 2007-12-16 14:11:11Z olegk $
- *
- * @since 4.0
- */
-public class BasicStatusLine implements StatusLine, Cloneable {
-
- // ----------------------------------------------------- Instance Variables
-
- /** The protocol version. */
- private final ProtocolVersion protoVersion;
-
- /** The status code. */
- private final int statusCode;
-
- /** The reason phrase. */
- private final String reasonPhrase;
-
- // ----------------------------------------------------------- Constructors
- /**
- * Creates a new status line with the given version, status, and reason.
- *
- * @param version the protocol version of the response
- * @param statusCode the status code of the response
- * @param reasonPhrase the reason phrase to the status code, or
- * <code>null</code>
- */
- public BasicStatusLine(final ProtocolVersion version, int statusCode,
- final String reasonPhrase) {
- super();
- if (version == null) {
- throw new IllegalArgumentException
- ("Protocol version may not be null.");
- }
- if (statusCode < 0) {
- throw new IllegalArgumentException
- ("Status code may not be negative.");
- }
- this.protoVersion = version;
- this.statusCode = statusCode;
- this.reasonPhrase = reasonPhrase;
- }
-
- // --------------------------------------------------------- Public Methods
-
- /**
- * @return the Status-Code
- */
- public int getStatusCode() {
- return this.statusCode;
- }
-
- /**
- * @return the HTTP-Version
- */
- public ProtocolVersion getProtocolVersion() {
- return this.protoVersion;
- }
-
- /**
- * @return the Reason-Phrase
- */
- public String getReasonPhrase() {
- return this.reasonPhrase;
- }
-
- public String toString() {
- // no need for non-default formatting in toString()
- return BasicLineFormatter.DEFAULT
- .formatStatusLine(null, this).toString();
- }
-
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
-}
diff --git a/src/org/apache/http/message/BasicTokenIterator.java b/src/org/apache/http/message/BasicTokenIterator.java
deleted file mode 100644
index 5fbf5ba..0000000
--- a/src/org/apache/http/message/BasicTokenIterator.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicTokenIterator.java $
- * $Revision: 602520 $
- * $Date: 2007-12-08 09:42:26 -0800 (Sat, 08 Dec 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import java.util.NoSuchElementException;
-
-import org.apache.http.HeaderIterator;
-import org.apache.http.ParseException;
-import org.apache.http.TokenIterator;
-
-/**
- * Basic implementation of a {@link TokenIterator}.
- * This implementation parses <tt>#token<tt> sequences as
- * defined by RFC 2616, section 2.
- * It extends that definition somewhat beyond US-ASCII.
- *
- * @version $Revision: 602520 $
- */
-public class BasicTokenIterator implements TokenIterator {
-
- /** The HTTP separator characters. Defined in RFC 2616, section 2.2. */
- // the order of the characters here is adjusted to put the
- // most likely candidates at the beginning of the collection
- public final static String HTTP_SEPARATORS = " ,;=()<>@:\\\"/[]?{}\t";
-
-
- /** The iterator from which to obtain the next header. */
- protected final HeaderIterator headerIt;
-
- /**
- * The value of the current header.
- * This is the header value that includes {@link #currentToken}.
- * Undefined if the iteration is over.
- */
- protected String currentHeader;
-
- /**
- * The token to be returned by the next call to {@link #currentToken}.
- * <code>null</code> if the iteration is over.
- */
- protected String currentToken;
-
- /**
- * The position after {@link #currentToken} in {@link #currentHeader}.
- * Undefined if the iteration is over.
- */
- protected int searchPos;
-
-
- /**
- * Creates a new instance of {@link BasicTokenIterator}.
- *
- * @param headerIterator the iterator for the headers to tokenize
- */
- public BasicTokenIterator(final HeaderIterator headerIterator) {
- if (headerIterator == null) {
- throw new IllegalArgumentException
- ("Header iterator must not be null.");
- }
-
- this.headerIt = headerIterator;
- this.searchPos = findNext(-1);
- }
-
-
- // non-javadoc, see interface TokenIterator
- public boolean hasNext() {
- return (this.currentToken != null);
- }
-
-
- /**
- * Obtains the next token from this iteration.
- *
- * @return the next token in this iteration
- *
- * @throws NoSuchElementException if the iteration is already over
- * @throws ParseException if an invalid header value is encountered
- */
- public String nextToken()
- throws NoSuchElementException, ParseException {
-
- if (this.currentToken == null) {
- throw new NoSuchElementException("Iteration already finished.");
- }
-
- final String result = this.currentToken;
- // updates currentToken, may trigger ParseException:
- this.searchPos = findNext(this.searchPos);
-
- return result;
- }
-
-
- /**
- * Returns the next token.
- * Same as {@link #nextToken}, but with generic return type.
- *
- * @return the next token in this iteration
- *
- * @throws NoSuchElementException if there are no more tokens
- * @throws ParseException if an invalid header value is encountered
- */
- public final Object next()
- throws NoSuchElementException, ParseException {
- return nextToken();
- }
-
-
- /**
- * Removing tokens is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public final void remove()
- throws UnsupportedOperationException {
-
- throw new UnsupportedOperationException
- ("Removing tokens is not supported.");
- }
-
-
- /**
- * Determines the next token.
- * If found, the token is stored in {@link #currentToken}.
- * The return value indicates the position after the token
- * in {@link #currentHeader}. If necessary, the next header
- * will be obtained from {@link #headerIt}.
- * If not found, {@link #currentToken} is set to <code>null</code>.
- *
- * @param from the position in the current header at which to
- * start the search, -1 to search in the first header
- *
- * @return the position after the found token in the current header, or
- * negative if there was no next token
- *
- * @throws ParseException if an invalid header value is encountered
- */
- protected int findNext(int from)
- throws ParseException {
-
- if (from < 0) {
- // called from the constructor, initialize the first header
- if (!this.headerIt.hasNext()) {
- return -1;
- }
- this.currentHeader = this.headerIt.nextHeader().getValue();
- from = 0;
- } else {
- // called after a token, make sure there is a separator
- from = findTokenSeparator(from);
- }
-
- int start = findTokenStart(from);
- if (start < 0) {
- this.currentToken = null;
- return -1; // nothing found
- }
-
- int end = findTokenEnd(start);
- this.currentToken = createToken(this.currentHeader, start, end);
- return end;
- }
-
-
- /**
- * Creates a new token to be returned.
- * Called from {@link #findNext findNext} after the token is identified.
- * The default implementation simply calls
- * {@link java.lang.String#substring String.substring}.
- * <br/>
- * If header values are significantly longer than tokens, and some
- * tokens are permanently referenced by the application, there can
- * be problems with garbage collection. A substring will hold a
- * reference to the full characters of the original string and
- * therefore occupies more memory than might be expected.
- * To avoid this, override this method and create a new string
- * instead of a substring.
- *
- * @param value the full header value from which to create a token
- * @param start the index of the first token character
- * @param end the index after the last token character
- *
- * @return a string representing the token identified by the arguments
- */
- protected String createToken(String value, int start, int end) {
- return value.substring(start, end);
- }
-
-
- /**
- * Determines the starting position of the next token.
- * This method will iterate over headers if necessary.
- *
- * @param from the position in the current header at which to
- * start the search
- *
- * @return the position of the token start in the current header,
- * negative if no token start could be found
- */
- protected int findTokenStart(int from) {
- if (from < 0) {
- throw new IllegalArgumentException
- ("Search position must not be negative: " + from);
- }
-
- boolean found = false;
- while (!found && (this.currentHeader != null)) {
-
- final int to = this.currentHeader.length();
- while (!found && (from < to)) {
-
- final char ch = this.currentHeader.charAt(from);
- if (isTokenSeparator(ch) || isWhitespace(ch)) {
- // whitspace and token separators are skipped
- from++;
- } else if (isTokenChar(this.currentHeader.charAt(from))) {
- // found the start of a token
- found = true;
- } else {
- throw new ParseException
- ("Invalid character before token (pos " + from +
- "): " + this.currentHeader);
- }
- }
- if (!found) {
- if (this.headerIt.hasNext()) {
- this.currentHeader = this.headerIt.nextHeader().getValue();
- from = 0;
- } else {
- this.currentHeader = null;
- }
- }
- } // while headers
-
- return found ? from : -1;
- }
-
-
- /**
- * Determines the position of the next token separator.
- * Because of multi-header joining rules, the end of a
- * header value is a token separator. This method does
- * therefore not need to iterate over headers.
- *
- * @param from the position in the current header at which to
- * start the search
- *
- * @return the position of a token separator in the current header,
- * or at the end
- *
- * @throws ParseException
- * if a new token is found before a token separator.
- * RFC 2616, section 2.1 explicitly requires a comma between
- * tokens for <tt>#</tt>.
- */
- protected int findTokenSeparator(int from) {
- if (from < 0) {
- throw new IllegalArgumentException
- ("Search position must not be negative: " + from);
- }
-
- boolean found = false;
- final int to = this.currentHeader.length();
- while (!found && (from < to)) {
- final char ch = this.currentHeader.charAt(from);
- if (isTokenSeparator(ch)) {
- found = true;
- } else if (isWhitespace(ch)) {
- from++;
- } else if (isTokenChar(ch)) {
- throw new ParseException
- ("Tokens without separator (pos " + from +
- "): " + this.currentHeader);
- } else {
- throw new ParseException
- ("Invalid character after token (pos " + from +
- "): " + this.currentHeader);
- }
- }
-
- return from;
- }
-
-
- /**
- * Determines the ending position of the current token.
- * This method will not leave the current header value,
- * since the end of the header value is a token boundary.
- *
- * @param from the position of the first character of the token
- *
- * @return the position after the last character of the token.
- * The behavior is undefined if <code>from</code> does not
- * point to a token character in the current header value.
- */
- protected int findTokenEnd(int from) {
- if (from < 0) {
- throw new IllegalArgumentException
- ("Token start position must not be negative: " + from);
- }
-
- final int to = this.currentHeader.length();
- int end = from+1;
- while ((end < to) && isTokenChar(this.currentHeader.charAt(end))) {
- end++;
- }
-
- return end;
- }
-
-
- /**
- * Checks whether a character is a token separator.
- * RFC 2616, section 2.1 defines comma as the separator for
- * <tt>#token</tt> sequences. The end of a header value will
- * also separate tokens, but that is not a character check.
- *
- * @param ch the character to check
- *
- * @return <code>true</code> if the character is a token separator,
- * <code>false</code> otherwise
- */
- protected boolean isTokenSeparator(char ch) {
- return (ch == ',');
- }
-
-
- /**
- * Checks whether a character is a whitespace character.
- * RFC 2616, section 2.2 defines space and horizontal tab as whitespace.
- * The optional preceeding line break is irrelevant, since header
- * continuation is handled transparently when parsing messages.
- *
- * @param ch the character to check
- *
- * @return <code>true</code> if the character is whitespace,
- * <code>false</code> otherwise
- */
- protected boolean isWhitespace(char ch) {
-
- // we do not use Character.isWhitspace(ch) here, since that allows
- // many control characters which are not whitespace as per RFC 2616
- return ((ch == '\t') || Character.isSpaceChar(ch));
- }
-
-
- /**
- * Checks whether a character is a valid token character.
- * Whitespace, control characters, and HTTP separators are not
- * valid token characters. The HTTP specification (RFC 2616, section 2.2)
- * defines tokens only for the US-ASCII character set, this
- * method extends the definition to other character sets.
- *
- * @param ch the character to check
- *
- * @return <code>true</code> if the character is a valid token start,
- * <code>false</code> otherwise
- */
- protected boolean isTokenChar(char ch) {
-
- // common sense extension of ALPHA + DIGIT
- if (Character.isLetterOrDigit(ch))
- return true;
-
- // common sense extension of CTL
- if (Character.isISOControl(ch))
- return false;
-
- // no common sense extension for this
- if (isHttpSeparator(ch))
- return false;
-
- // RFC 2616, section 2.2 defines a token character as
- // "any CHAR except CTLs or separators". The controls
- // and separators are included in the checks above.
- // This will yield unexpected results for Unicode format characters.
- // If that is a problem, overwrite isHttpSeparator(char) to filter
- // out the false positives.
- return true;
- }
-
-
- /**
- * Checks whether a character is an HTTP separator.
- * The implementation in this class checks only for the HTTP separators
- * defined in RFC 2616, section 2.2. If you need to detect other
- * separators beyond the US-ASCII character set, override this method.
- *
- * @param ch the character to check
- *
- * @return <code>true</code> if the character is an HTTP separator
- */
- protected boolean isHttpSeparator(char ch) {
- return (HTTP_SEPARATORS.indexOf(ch) >= 0);
- }
-
-
-} // class BasicTokenIterator
-
diff --git a/src/org/apache/http/message/BufferedHeader.java b/src/org/apache/http/message/BufferedHeader.java
deleted file mode 100644
index 35c5cfc..0000000
--- a/src/org/apache/http/message/BufferedHeader.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BufferedHeader.java $
- * $Revision: 604625 $
- * $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.HeaderElement;
-import org.apache.http.ParseException;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * This class represents a raw HTTP header whose content is parsed 'on demand'
- * only when the header value needs to be consumed.
- *
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 604625 $ $Date: 2007-12-16 06:11:11 -0800 (Sun, 16 Dec 2007) $
- */
-public class BufferedHeader implements FormattedHeader, Cloneable {
-
- /**
- * Header name.
- */
- private final String name;
-
- /**
- * The buffer containing the entire header line.
- */
- private final CharArrayBuffer buffer;
-
- /**
- * The beginning of the header value in the buffer
- */
- private final int valuePos;
-
-
- /**
- * Creates a new header from a buffer.
- * The name of the header will be parsed immediately,
- * the value only if it is accessed.
- *
- * @param buffer the buffer containing the header to represent
- *
- * @throws ParseException in case of a parse error
- */
- public BufferedHeader(final CharArrayBuffer buffer)
- throws ParseException {
-
- super();
- if (buffer == null) {
- throw new IllegalArgumentException
- ("Char array buffer may not be null");
- }
- int colon = buffer.indexOf(':');
- if (colon == -1) {
- throw new ParseException
- ("Invalid header: " + buffer.toString());
- }
- String s = buffer.substringTrimmed(0, colon);
- if (s.length() == 0) {
- throw new ParseException
- ("Invalid header: " + buffer.toString());
- }
- this.buffer = buffer;
- this.name = s;
- this.valuePos = colon + 1;
- }
-
-
- public String getName() {
- return this.name;
- }
-
- public String getValue() {
- return this.buffer.substringTrimmed(this.valuePos, this.buffer.length());
- }
-
- public HeaderElement[] getElements() throws ParseException {
- ParserCursor cursor = new ParserCursor(0, this.buffer.length());
- cursor.updatePos(this.valuePos);
- return BasicHeaderValueParser.DEFAULT
- .parseElements(this.buffer, cursor);
- }
-
- public int getValuePos() {
- return this.valuePos;
- }
-
- public CharArrayBuffer getBuffer() {
- return this.buffer;
- }
-
- public String toString() {
- return this.buffer.toString();
- }
-
- public Object clone() throws CloneNotSupportedException {
- // buffer is considered immutable
- // no need to make a copy of it
- return super.clone();
- }
-
-}
diff --git a/src/org/apache/http/message/HeaderGroup.java b/src/org/apache/http/message/HeaderGroup.java
deleted file mode 100644
index 4e40db1..0000000
--- a/src/org/apache/http/message/HeaderGroup.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderGroup.java $
- * $Revision: 659185 $
- * $Date: 2008-05-22 11:07:36 -0700 (Thu, 22 May 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * A class for combining a set of headers.
- * This class allows for multiple headers with the same name and
- * keeps track of the order in which headers were added.
- *
- * @author Michael Becke
- *
- * @since 4.0
- */
-public class HeaderGroup implements Cloneable {
-
- /** The list of headers for this group, in the order in which they were added */
- private List headers;
-
- /**
- * Constructor for HeaderGroup.
- */
- public HeaderGroup() {
- this.headers = new ArrayList(16);
- }
-
- /**
- * Removes any contained headers.
- */
- public void clear() {
- headers.clear();
- }
-
- /**
- * Adds the given header to the group. The order in which this header was
- * added is preserved.
- *
- * @param header the header to add
- */
- public void addHeader(Header header) {
- if (header == null) {
- return;
- }
- headers.add(header);
- }
-
- /**
- * Removes the given header.
- *
- * @param header the header to remove
- */
- public void removeHeader(Header header) {
- if (header == null) {
- return;
- }
- headers.remove(header);
- }
-
- /**
- * Replaces the first occurence of the header with the same name. If no header with
- * the same name is found the given header is added to the end of the list.
- *
- * @param header the new header that should replace the first header with the same
- * name if present in the list.
- */
- public void updateHeader(Header header) {
- if (header == null) {
- return;
- }
- for (int i = 0; i < this.headers.size(); i++) {
- Header current = (Header) this.headers.get(i);
- if (current.getName().equalsIgnoreCase(header.getName())) {
- this.headers.set(i, header);
- return;
- }
- }
- this.headers.add(header);
- }
-
- /**
- * Sets all of the headers contained within this group overriding any
- * existing headers. The headers are added in the order in which they appear
- * in the array.
- *
- * @param headers the headers to set
- */
- public void setHeaders(Header[] headers) {
- clear();
- if (headers == null) {
- return;
- }
- for (int i = 0; i < headers.length; i++) {
- this.headers.add(headers[i]);
- }
- }
-
- /**
- * Gets a header representing all of the header values with the given name.
- * If more that one header with the given name exists the values will be
- * combined with a "," as per RFC 2616.
- *
- * <p>Header name comparison is case insensitive.
- *
- * @param name the name of the header(s) to get
- * @return a header with a condensed value or <code>null</code> if no
- * headers by the given name are present
- */
- public Header getCondensedHeader(String name) {
- Header[] headers = getHeaders(name);
-
- if (headers.length == 0) {
- return null;
- } else if (headers.length == 1) {
- return headers[0];
- } else {
- CharArrayBuffer valueBuffer = new CharArrayBuffer(128);
- valueBuffer.append(headers[0].getValue());
- for (int i = 1; i < headers.length; i++) {
- valueBuffer.append(", ");
- valueBuffer.append(headers[i].getValue());
- }
-
- return new BasicHeader(name.toLowerCase(Locale.ENGLISH), valueBuffer.toString());
- }
- }
-
- /**
- * Gets all of the headers with the given name. The returned array
- * maintains the relative order in which the headers were added.
- *
- * <p>Header name comparison is case insensitive.
- *
- * @param name the name of the header(s) to get
- *
- * @return an array of length >= 0
- */
- public Header[] getHeaders(String name) {
- ArrayList headersFound = new ArrayList();
-
- for (int i = 0; i < headers.size(); i++) {
- Header header = (Header) headers.get(i);
- if (header.getName().equalsIgnoreCase(name)) {
- headersFound.add(header);
- }
- }
-
- return (Header[]) headersFound.toArray(new Header[headersFound.size()]);
- }
-
- /**
- * Gets the first header with the given name.
- *
- * <p>Header name comparison is case insensitive.
- *
- * @param name the name of the header to get
- * @return the first header or <code>null</code>
- */
- public Header getFirstHeader(String name) {
- for (int i = 0; i < headers.size(); i++) {
- Header header = (Header) headers.get(i);
- if (header.getName().equalsIgnoreCase(name)) {
- return header;
- }
- }
- return null;
- }
-
- /**
- * Gets the last header with the given name.
- *
- * <p>Header name comparison is case insensitive.
- *
- * @param name the name of the header to get
- * @return the last header or <code>null</code>
- */
- public Header getLastHeader(String name) {
- // start at the end of the list and work backwards
- for (int i = headers.size() - 1; i >= 0; i--) {
- Header header = (Header) headers.get(i);
- if (header.getName().equalsIgnoreCase(name)) {
- return header;
- }
- }
-
- return null;
- }
-
- /**
- * Gets all of the headers contained within this group.
- *
- * @return an array of length >= 0
- */
- public Header[] getAllHeaders() {
- return (Header[]) headers.toArray(new Header[headers.size()]);
- }
-
- /**
- * Tests if headers with the given name are contained within this group.
- *
- * <p>Header name comparison is case insensitive.
- *
- * @param name the header name to test for
- * @return <code>true</code> if at least one header with the name is
- * contained, <code>false</code> otherwise
- */
- public boolean containsHeader(String name) {
- for (int i = 0; i < headers.size(); i++) {
- Header header = (Header) headers.get(i);
- if (header.getName().equalsIgnoreCase(name)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Returns an iterator over this group of headers.
- *
- * @return iterator over this group of headers.
- *
- * @since 4.0
- */
- public HeaderIterator iterator() {
- return new BasicListHeaderIterator(this.headers, null);
- }
-
- /**
- * Returns an iterator over the headers with a given name in this group.
- *
- * @param name the name of the headers over which to iterate, or
- * <code>null</code> for all headers
- *
- * @return iterator over some headers in this group.
- *
- * @since 4.0
- */
- public HeaderIterator iterator(final String name) {
- return new BasicListHeaderIterator(this.headers, name);
- }
-
- /**
- * Returns a copy of this object
- *
- * @return copy of this object
- */
- public HeaderGroup copy() {
- HeaderGroup clone = new HeaderGroup();
- clone.headers.addAll(this.headers);
- return clone;
- }
-
- public Object clone() throws CloneNotSupportedException {
- HeaderGroup clone = (HeaderGroup) super.clone();
- clone.headers = new ArrayList(this.headers);
- return clone;
- }
-
-}
diff --git a/src/org/apache/http/message/HeaderValueFormatter.java b/src/org/apache/http/message/HeaderValueFormatter.java
deleted file mode 100644
index 4f6351f..0000000
--- a/src/org/apache/http/message/HeaderValueFormatter.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderValueFormatter.java $
- * $Revision: 571954 $
- * $Date: 2007-09-02 04:05:21 -0700 (Sun, 02 Sep 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.util.CharArrayBuffer;
-
-
-
-/**
- * Interface for formatting elements of a header value.
- * This is the complement to {@link HeaderValueParser}.
- * Instances of this interface are expected to be stateless and thread-safe.
- *
- * <p>
- * All formatting methods accept an optional buffer argument.
- * If a buffer is passed in, the formatted element will be appended
- * and the modified buffer is returned. If no buffer is passed in,
- * a new buffer will be created and filled with the formatted element.
- * In both cases, the caller is allowed to modify the returned buffer.
- * </p>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 571954 $
- *
- * @since 4.0
- */
-public interface HeaderValueFormatter {
-
- /**
- * Formats an array of header elements.
- *
- * @param buffer the buffer to append to, or
- * <code>null</code> to create a new buffer
- * @param elems the header elements to format
- * @param quote <code>true</code> to always format with quoted values,
- * <code>false</code> to use quotes only when necessary
- *
- * @return a buffer with the formatted header elements.
- * If the <code>buffer</code> argument was not <code>null</code>,
- * that buffer will be used and returned.
- */
- CharArrayBuffer formatElements(CharArrayBuffer buffer,
- HeaderElement[] elems,
- boolean quote)
- ;
-
-
- /**
- * Formats one header element.
- *
- * @param buffer the buffer to append to, or
- * <code>null</code> to create a new buffer
- * @param elem the header element to format
- * @param quote <code>true</code> to always format with quoted values,
- * <code>false</code> to use quotes only when necessary
- *
- * @return a buffer with the formatted header element.
- * If the <code>buffer</code> argument was not <code>null</code>,
- * that buffer will be used and returned.
- */
- CharArrayBuffer formatHeaderElement(CharArrayBuffer buffer,
- HeaderElement elem,
- boolean quote)
- ;
-
-
-
- /**
- * Formats the parameters of a header element.
- * That's a list of name-value pairs, to be separated by semicolons.
- * This method will <i>not</i> generate a leading semicolon.
- *
- * @param buffer the buffer to append to, or
- * <code>null</code> to create a new buffer
- * @param nvps the parameters (name-value pairs) to format
- * @param quote <code>true</code> to always format with quoted values,
- * <code>false</code> to use quotes only when necessary
- *
- * @return a buffer with the formatted parameters.
- * If the <code>buffer</code> argument was not <code>null</code>,
- * that buffer will be used and returned.
- */
- CharArrayBuffer formatParameters(CharArrayBuffer buffer,
- NameValuePair[] nvps,
- boolean quote)
- ;
-
-
- /**
- * Formats one name-value pair, where the value is optional.
- *
- * @param buffer the buffer to append to, or
- * <code>null</code> to create a new buffer
- * @param nvp the name-value pair to format
- * @param quote <code>true</code> to always format with a quoted value,
- * <code>false</code> to use quotes only when necessary
- *
- * @return a buffer with the formatted name-value pair.
- * If the <code>buffer</code> argument was not <code>null</code>,
- * that buffer will be used and returned.
- */
- CharArrayBuffer formatNameValuePair(CharArrayBuffer buffer,
- NameValuePair nvp,
- boolean quote)
- ;
-
-}
-
diff --git a/src/org/apache/http/message/HeaderValueParser.java b/src/org/apache/http/message/HeaderValueParser.java
deleted file mode 100644
index 74bb93c..0000000
--- a/src/org/apache/http/message/HeaderValueParser.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderValueParser.java $
- * $Revision: 589325 $
- * $Date: 2007-10-28 03:37:56 -0700 (Sun, 28 Oct 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.util.CharArrayBuffer;
-
-
-
-/**
- * Interface for parsing header values into elements.
- * Instances of this interface are expected to be stateless and thread-safe.
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 589325 $ $Date: 2007-10-28 03:37:56 -0700 (Sun, 28 Oct 2007) $
- *
- * @since 4.0
- */
-public interface HeaderValueParser {
-
- /**
- * Parses a header value into elements.
- * Parse errors are indicated as <code>RuntimeException</code>.
- * <p>
- * Some HTTP headers (such as the set-cookie header) have values that
- * can be decomposed into multiple elements. In order to be processed
- * by this parser, such headers must be in the following form:
- * </p>
- * <pre>
- * header = [ element ] *( "," [ element ] )
- * element = name [ "=" [ value ] ] *( ";" [ param ] )
- * param = name [ "=" [ value ] ]
- *
- * name = token
- * value = ( token | quoted-string )
- *
- * token = 1*&lt;any char except "=", ",", ";", &lt;"&gt; and
- * white space&gt;
- * quoted-string = &lt;"&gt; *( text | quoted-char ) &lt;"&gt;
- * text = any char except &lt;"&gt;
- * quoted-char = "\" char
- * </pre>
- * <p>
- * Any amount of white space is allowed between any part of the
- * header, element or param and is ignored. A missing value in any
- * element or param will be stored as the empty {@link String};
- * if the "=" is also missing <var>null</var> will be stored instead.
- * </p>
- *
- * @param buffer buffer holding the header value to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return an array holding all elements of the header value
- *
- * @throws ParseException in case of a parse error
- */
- HeaderElement[] parseElements(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
- /**
- * Parses a single header element.
- * A header element consist of a semicolon-separate list
- * of name=value definitions.
- *
- * @param buffer buffer holding the element to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return the parsed element
- *
- * @throws ParseException in case of a parse error
- */
- HeaderElement parseHeaderElement(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
- /**
- * Parses a list of name-value pairs.
- * These lists are used to specify parameters to a header element.
- * Parse errors are indicated as <code>RuntimeException</code>.
- * <p>
- * This method comforms to the generic grammar and formatting rules
- * outlined in the
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2"
- * >Section 2.2</a>
- * and
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6"
- * >Section 3.6</a>
- * of
- * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC 2616</a>.
- * </p>
- * <h>2.2 Basic Rules</h>
- * <p>
- * The following rules are used throughout this specification to
- * describe basic parsing constructs.
- * The US-ASCII coded character set is defined by ANSI X3.4-1986.
- * </p>
- * <pre>
- * OCTET = <any 8-bit sequence of data>
- * CHAR = <any US-ASCII character (octets 0 - 127)>
- * UPALPHA = <any US-ASCII uppercase letter "A".."Z">
- * LOALPHA = <any US-ASCII lowercase letter "a".."z">
- * ALPHA = UPALPHA | LOALPHA
- * DIGIT = <any US-ASCII digit "0".."9">
- * CTL = <any US-ASCII control character
- * (octets 0 - 31) and DEL (127)>
- * CR = <US-ASCII CR, carriage return (13)>
- * LF = <US-ASCII LF, linefeed (10)>
- * SP = <US-ASCII SP, space (32)>
- * HT = <US-ASCII HT, horizontal-tab (9)>
- * <"> = <US-ASCII double-quote mark (34)>
- * </pre>
- * <p>
- * Many HTTP/1.1 header field values consist of words separated
- * by LWS or special characters. These special characters MUST be
- * in a quoted string to be used within
- * a parameter value (as defined in section 3.6).
- * <p>
- * <pre>
- * token = 1*<any CHAR except CTLs or separators>
- * separators = "(" | ")" | "<" | ">" | "@"
- * | "," | ";" | ":" | "\" | <">
- * | "/" | "[" | "]" | "?" | "="
- * | "{" | "}" | SP | HT
- * </pre>
- * <p>
- * A string of text is parsed as a single word if it is quoted using
- * double-quote marks.
- * </p>
- * <pre>
- * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
- * qdtext = <any TEXT except <">>
- * </pre>
- * <p>
- * The backslash character ("\") MAY be used as a single-character
- * quoting mechanism only within quoted-string and comment constructs.
- * </p>
- * <pre>
- * quoted-pair = "\" CHAR
- * </pre>
- * <h>3.6 Transfer Codings</h>
- * <p>
- * Parameters are in the form of attribute/value pairs.
- * </p>
- * <pre>
- * parameter = attribute "=" value
- * attribute = token
- * value = token | quoted-string
- * </pre>
- *
- * @param buffer buffer holding the name-value list to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return an array holding all items of the name-value list
- *
- * @throws ParseException in case of a parse error
- */
- NameValuePair[] parseParameters(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
-
- /**
- * Parses a name=value specification, where the = and value are optional.
- *
- * @param buffer the buffer holding the name-value pair to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return the name-value pair, where the value is <code>null</code>
- * if no value is specified
- */
- NameValuePair parseNameValuePair(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
-}
-
diff --git a/src/org/apache/http/message/LineFormatter.java b/src/org/apache/http/message/LineFormatter.java
deleted file mode 100644
index ccc603c..0000000
--- a/src/org/apache/http/message/LineFormatter.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/LineFormatter.java $
- * $Revision: 573864 $
- * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import org.apache.http.ProtocolVersion;
-import org.apache.http.RequestLine;
-import org.apache.http.StatusLine;
-import org.apache.http.Header;
-import org.apache.http.util.CharArrayBuffer;
-
-
-/**
- * Interface for formatting elements of the HEAD section of an HTTP message.
- * This is the complement to {@link LineParser}.
- * There are individual methods for formatting a request line, a
- * status line, or a header line. The formatting does <i>not</i> include the
- * trailing line break sequence CR-LF.
- * Instances of this interface are expected to be stateless and thread-safe.
- *
- * <p>
- * The formatted lines are returned in memory, the formatter does not depend
- * on any specific IO mechanism.
- * In order to avoid unnecessary creation of temporary objects,
- * a buffer can be passed as argument to all formatting methods.
- * The implementation may or may not actually use that buffer for formatting.
- * If it is used, the buffer will first be cleared by the
- * <code>formatXXX</code> methods.
- * The argument buffer can always be re-used after the call. The buffer
- * returned as the result, if it is different from the argument buffer,
- * MUST NOT be modified.
- * </p>
- *
- *
- * @author <a href="mailto:rolandw AT apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 573864 $ $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $
- *
- * @since 4.0
- */
-public interface LineFormatter {
-
-
-
- /**
- * Formats a protocol version.
- * This method does <i>not</i> follow the general contract for
- * <code>buffer</code> arguments.
- * It does <i>not</i> clear the argument buffer, but appends instead.
- * The returned buffer can always be modified by the caller.
- * Because of these differing conventions, it is not named
- * <code>formatProtocolVersion</code>.
- *
- * @param buffer a buffer to which to append, or <code>null</code>
- * @param version the protocol version to format
- *
- * @return a buffer with the formatted protocol version appended.
- * The caller is allowed to modify the result buffer.
- * If the <code>buffer</code> argument is not <code>null</code>,
- * the returned buffer is the argument buffer.
- */
- CharArrayBuffer appendProtocolVersion(CharArrayBuffer buffer,
- ProtocolVersion version)
- ;
-
-
- /**
- * Formats a request line.
- *
- * @param buffer a buffer available for formatting, or
- * <code>null</code>.
- * The buffer will be cleared before use.
- * @param reqline the request line to format
- *
- * @return the formatted request line
- */
- CharArrayBuffer formatRequestLine(CharArrayBuffer buffer,
- RequestLine reqline)
- ;
-
-
- /**
- * Formats a status line.
- *
- * @param buffer a buffer available for formatting, or
- * <code>null</code>.
- * The buffer will be cleared before use.
- * @param statline the status line to format
- *
- * @return the formatted status line
- *
- * @throws ParseException in case of a parse error
- */
- CharArrayBuffer formatStatusLine(CharArrayBuffer buffer,
- StatusLine statline)
- ;
-
-
- /**
- * Formats a header.
- * Due to header continuation, the result may be multiple lines.
- * In order to generate well-formed HTTP, the lines in the result
- * must be separated by the HTTP line break sequence CR-LF.
- * There is <i>no</i> trailing CR-LF in the result.
- * <br/>
- * See the class comment for details about the buffer argument.
- *
- * @param buffer a buffer available for formatting, or
- * <code>null</code>.
- * The buffer will be cleared before use.
- * @param header the header to format
- *
- * @return a buffer holding the formatted header, never <code>null</code>.
- * The returned buffer may be different from the argument buffer.
- *
- * @throws ParseException in case of a parse error
- */
- CharArrayBuffer formatHeader(CharArrayBuffer buffer,
- Header header)
- ;
-
-}
diff --git a/src/org/apache/http/message/LineParser.java b/src/org/apache/http/message/LineParser.java
deleted file mode 100644
index d1bcd15..0000000
--- a/src/org/apache/http/message/LineParser.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/LineParser.java $
- * $Revision: 589374 $
- * $Date: 2007-10-28 09:25:07 -0700 (Sun, 28 Oct 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-
-import org.apache.http.ProtocolVersion;
-import org.apache.http.ParseException;
-import org.apache.http.RequestLine;
-import org.apache.http.StatusLine;
-import org.apache.http.Header;
-import org.apache.http.util.CharArrayBuffer;
-
-
-/**
- * Interface for parsing lines in the HEAD section of an HTTP message.
- * There are individual methods for parsing a request line, a
- * status line, or a header line.
- * The lines to parse are passed in memory, the parser does not depend
- * on any specific IO mechanism.
- * Instances of this interface are expected to be stateless and thread-safe.
- *
- * @author <a href="mailto:rolandw AT apache.org">Roland Weber</a>
- *
- *
- * <!-- empty lines above to avoid 'svn diff' context problems -->
- * @version $Revision: 589374 $ $Date: 2007-10-28 09:25:07 -0700 (Sun, 28 Oct 2007) $
- *
- * @since 4.0
- */
-public interface LineParser {
-
-
- /**
- * Parses the textual representation of a protocol version.
- * This is needed for parsing request lines (last element)
- * as well as status lines (first element).
- *
- * @param buffer a buffer holding the protocol version to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return the parsed protocol version
- *
- * @throws ParseException in case of a parse error
- */
- ProtocolVersion parseProtocolVersion(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
-
- /**
- * Checks whether there likely is a protocol version in a line.
- * This method implements a <i>heuristic</i> to check for a
- * likely protocol version specification. It does <i>not</i>
- * guarantee that {@link #parseProtocolVersion} would not
- * detect a parse error.
- * This can be used to detect garbage lines before a request
- * or status line.
- *
- * @param buffer a buffer holding the line to inspect
- * @param cursor the cursor at which to check for a protocol version, or
- * negative for "end of line". Whether the check tolerates
- * whitespace before or after the protocol version is
- * implementation dependent.
- *
- * @return <code>true</code> if there is a protocol version at the
- * argument index (possibly ignoring whitespace),
- * <code>false</code> otherwise
- */
- boolean hasProtocolVersion(
- CharArrayBuffer buffer,
- ParserCursor cursor);
-
-
- /**
- * Parses a request line.
- *
- * @param buffer a buffer holding the line to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return the parsed request line
- *
- * @throws ParseException in case of a parse error
- */
- RequestLine parseRequestLine(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
-
- /**
- * Parses a status line.
- *
- * @param buffer a buffer holding the line to parse
- * @param cursor the parser cursor containing the current position and
- * the bounds within the buffer for the parsing operation
- *
- * @return the parsed status line
- *
- * @throws ParseException in case of a parse error
- */
- StatusLine parseStatusLine(
- CharArrayBuffer buffer,
- ParserCursor cursor) throws ParseException;
-
-
- /**
- * Creates a header from a line.
- * The full header line is expected here. Header continuation lines
- * must be joined by the caller before invoking this method.
- *
- * @param buffer a buffer holding the full header line.
- * This buffer MUST NOT be re-used afterwards, since
- * the returned object may reference the contents later.
- *
- * @return the header in the argument buffer.
- * The returned object MAY be a wrapper for the argument buffer.
- * The argument buffer MUST NOT be re-used or changed afterwards.
- *
- * @throws ParseException in case of a parse error
- */
- Header parseHeader(CharArrayBuffer buffer)
- throws ParseException
- ;
-
-
-}
diff --git a/src/org/apache/http/message/ParserCursor.java b/src/org/apache/http/message/ParserCursor.java
deleted file mode 100644
index d030675..0000000
--- a/src/org/apache/http/message/ParserCursor.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * $HeadURL:https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/ParserCursor.java $
- * $Revision:589325 $
- * $Date:2007-10-28 11:37:56 +0100 (Sun, 28 Oct 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.message;
-
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * This class represents a context of a parsing operation:
- * <ul>
- * <li>the current position the parsing operation is expected to start at</li>
- * <li>the bounds limiting the scope of the parsing operation</li>
- * </ul>
- *
- * @author <a href="mailto:oleg at ural.com">Oleg Kalnichevski</a>
- */
-public class ParserCursor {
-
- private final int lowerBound;
- private final int upperBound;
- private int pos;
-
- public ParserCursor(int lowerBound, int upperBound) {
- super();
- if (lowerBound < 0) {
- throw new IndexOutOfBoundsException("Lower bound cannot be negative");
- }
- if (lowerBound > upperBound) {
- throw new IndexOutOfBoundsException("Lower bound cannot be greater then upper bound");
- }
- this.lowerBound = lowerBound;
- this.upperBound = upperBound;
- this.pos = lowerBound;
- }
-
- public int getLowerBound() {
- return this.lowerBound;
- }
-
- public int getUpperBound() {
- return this.upperBound;
- }
-
- public int getPos() {
- return this.pos;
- }
-
- public void updatePos(int pos) {
- if (pos < this.lowerBound) {
- throw new IndexOutOfBoundsException();
- }
- if (pos > this.upperBound) {
- throw new IndexOutOfBoundsException();
- }
- this.pos = pos;
- }
-
- public boolean atEnd() {
- return this.pos >= this.upperBound;
- }
-
- public String toString() {
- CharArrayBuffer buffer = new CharArrayBuffer(16);
- buffer.append('[');
- buffer.append(Integer.toString(this.lowerBound));
- buffer.append('>');
- buffer.append(Integer.toString(this.pos));
- buffer.append('>');
- buffer.append(Integer.toString(this.upperBound));
- buffer.append(']');
- return buffer.toString();
- }
-
-}
diff --git a/src/org/apache/http/message/package.html b/src/org/apache/http/message/package.html
deleted file mode 100644
index 88ee617..0000000
--- a/src/org/apache/http/message/package.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/package.html $
- * $Revision: 539755 $
- * $Date: 2007-05-19 07:05:02 -0700 (Sat, 19 May 2007) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
--->
-</head>
-<body>
-A selection of HTTP
-{@link org.apache.http.message.AbstractHttpMessage message}
-implementations.
-
-There are basic implementations for HTTP requests
-{@link org.apache.http.message.BasicHttpEntityEnclosingRequest with}
-and {@link org.apache.http.message.BasicHttpRequest without}
-an entity, and for
-{@link org.apache.http.message.BasicHttpResponse responses}.
-
-
-</body>
-</html>